AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 510895
Accepted
facha
facha
Asked: 2013-05-26 12:29:05 +0800 CST2013-05-26 12:29:05 +0800 CST 2013-05-26 12:29:05 +0800 CST

在 lvm 上的 ext3 fs 上按块号查找文件

  • 772

smartd 在我的硬盘驱动器上检测到一个坏块,我想知道那个块属于哪个文件。我在逻辑卷上有 ext3 文件系统。Google 给了我很多教程(比如这个:http ://www.vanderzee.org/bad_blocks_howto )关于当直接在硬盘块设备上创建文件系统时如何通过块号查找文件。他们都没有提到 LVM。在我的案例中,有没有办法通过块号查找文件?

lvm
  • 1 1 个回答
  • 2137 Views

1 个回答

  • Voted
  1. Best Answer
    Sergey Vlasov
    2013-05-26T13:38:41+08:002013-05-26T13:38:41+08:00
    1. 如Bad Blocks Howto中所述,找到包含坏块的分区并计算分区内的扇区偏移量。假设分区是/dev/sda3,它是一个 LVM PV。

    2. 确定第一个PE的扇区偏移量:

      pvs -o pe_start --units s /dev/sda3
      

      从坏扇区偏移量中减去这个偏移量,得到第一个 PE 的扇区偏移量。如果结果是否定的,则坏扇区位于 LVM 元数据区域中。

      Bad_Offset_from_1st_PE = Bad_Offset_in_Partition - First_PE_Start
      
    3. 运行pvdisplay --maps --units s /dev/sda3获取PV中的segment列表;此输出的“物理卷”部分还将显示“PE 大小”字段。

    4. 将第一个 PE(您在步骤 2 中获得)的扇区偏移量除以扇区中的 PE 大小。除法的整数结果将是坏 PE 编号,余数将是该 PE 内的坏扇区偏移量。

      Bad_PE           = Bad_Offset_from_1st_PE / PE_Size
      Bad_Offset_in_PE = Bad_Offset_from_1st_PE % PE_Size
      
    5. 在映射中找到包含不良 PE 的段。如果幸运的话,该段可能是空闲的,否则您将看到坏的逻辑卷。如果您对该卷不感兴趣(例如,它是交换空间,或一些您不关心的临时数据),您可以在此步骤停止。该扇区也可能超出最后一个 PE,这意味着它要么在小于完整 PE 的未使用区域,要么在 PV 末尾的第二个元数据区域(如果存在这样的元数据区域)。

      如果坏卷是快照,将坏扇区映射到逻辑卷中的实际偏移量将非常困难。如果你真的关心快照内容,你唯一能做的就是尝试从中读取并希望坏扇区尚未被快照使用(如果使用过,希望机器不会完全挂起试图阅读它时)。

      如果坏卷在 LVM 级别使用诸如镜像或条带化等奇特的东西……目前不知道如何处理。

    6. 计算Bad_LE = Bad_PE - Seg_First_PE + Seg_First_LE,其中Seg_First_PE是坏段的第一个物理范围, 是坏段Seg_First_LE中的第一个逻辑范围,如地图中的段数据所示。

    7. 计算逻辑卷内的扇区偏移量:

      Bad_LV_Offset = (Bad_LE * PE_Size) + Bad_Offset_in_PE
      
    8. 回到Bad Blocks Howto的第二步,找到文件系统中at扇区对应Bad_LV_Offset的文件。

    • 10

相关问题

  • OpenBSD 和文件系统快照

  • 卷组空间不足。我该如何收回它?

  • LVM 快照是这样工作的吗?

  • LVM 和快照

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve