如何检查 LVM 物理卷上的坏块?

如何检查 LVM 物理卷上的坏块?

当您使用 ext4 时,可以使用命令检查坏块e2fsck -c /dev/sda1 # or whatever。这将通过将块添加到坏块索引节点来将它们“列入黑名单”。

对于 LVM2 物理卷来说,这相当于什么?它的文件系统是 ext4,但据推测,当底层 LVM 设置在物理磁盘上移动数据时,检测到的坏块将变得无效。

换句话说,我如何检查坏块而不在 LVM 中使用?

答案1

当您使用 ext4 时,您可以使用命令e2fsck -c /dev/sda1或其他命令检查坏块。这将通过将块添加到坏块索引节点来将它们“列入黑名单”。

e2fsck -c运行badblocks在底层硬盘上。您可以badblocks直接在 LVM 物理卷上使用该命令(假设 PV 实际上是硬盘,而不是 MD 软件 RAID 设备等其他类型的虚拟设备),就像在硬盘上使用该命令一样包含 ext 文件系统。

这不会向文件系统添加任何类型的坏块信息,但我真的不认为这是文件系统的有用功能;硬盘应该处理坏块。

badblocks甚至比在磁盘上运行 SMART 自检更好(替换/dev/sdX为硬盘的设备名称):

smartctl -t long /dev/sdX
smartctl -a /dev/sdX | less

测试本身将需要几个小时(它会告诉您具体需要多长时间)。完成后可以通过 查询结果smartctl -a,查找自检日志。如果显示“已成功完成”,则说明您的硬盘没有问题。

换句话说,我如何检查坏块而不在 LVM 中使用?

正如我所说,硬盘本身将确保它不使用损坏的块,并且还会从这些块中重新定位数据;这不是文件系统或 LV 必须做的事情。另一方面,当您的硬盘有多个坏块时,您不需要重新定位它们,而是希望更换整个硬盘,因为它出现了故障。

答案2

我很确定 LVM 不会处理坏块;它期望底层存储能够。大多数(如果不是全部)现代硬盘都是如此。您可能需要对扇区执行写入操作,但磁盘应该重新映射它。 (您可能需要它首先进行离线表面扫描,例如smartctl /dev/sda -t offline)。

也就是说,除非您要求,否则 LVM 实际上不会移动数据,例如pvmove.所以你可以使用ext4 badblocks功能;如果运行的话,你只需要重新检查坏块pvmove。没有常见的操作(例如lvextend)移动数据。

扩展不会移动数据,因为 LVM 保留一个映射,表示“逻辑范围 0–99 是物理范围 200–299”,然后当您扩展它时,它只是添加“逻辑范围 100–199 是物理范围 100–199”。或者甚至“逻辑盘区 100-149 是物理盘区 50-99;逻辑盘区 150-199 是物理盘区 140-189”。 LVM 并不关心物理范围是否不按顺序或不连续。

答案3

pvck可以检查 LVM 元数据,之后一致性就是文件系统的工作。 LVM 仅涉及卷管理,因此它不需要关心构成特定范围的空间是否损坏,因为更高级别的软件会捕获这些问题。无论如何,LVM 元数据仅占用物理卷的第一个(也可以是最后一个扇区)。

如果相当大的光伏发电(例如您在生产中看到的)的第一个和最后一个扇区碰巧同时失败,那么您基本上就拥有了世界上最糟糕的运气,因为这在天文数字上是不可能的。否则,如果管理员知道驱动器的多个扇区出现故障,大多数人只需将此类内容归档到“硬盘驱动器永久故障并需要更换”下即可。

如果pvck返回错误,您可以检查 LVM 元数据是否已备份到/etc/lvm某处。如果是,您可以pvcreate指定备份副本到--restorefile

句法:

pvcreate --uuid "<UUID-of-target-PV>" --restorefile <Path-To-Metadata-Backup-File> <path-to-PV-block-device>

例子:

pvcreate --uuid "2VydVW-TNiN-fz9Y-ElRu-D6ie-tXLp-GrwvHz" --restorefile /etc/lvm/archive/vg_raid_00000-1085667159.vg /dev/sda2 

如果恢复不起作用(例如,如果第一个扇区损坏),您可以重新执行上述操作,但设置--metadatacopies 2(或者您可能直接这样做)将尝试将元数据写入第一个和PV 上的最后一个扇区。当pvscan它启动时,它会检查这两个位置,如果找到元数据,它会根据校验和验证它们。如果校验和在第一个扇区失败但在最后一个扇区成功,您将收到一条非致命错误消息。

有点手动和痛苦,但这也是人们对使用 BTRFS 进行卷管理重制感到兴奋的部分原因。大多数时候,由于 derobert 提到的原因,这并不是什么大问题,而且因为绝对需要确保数据连续性的人通常会进行 RAID 并制定备份策略。

答案4

安装逻辑卷时验证坏块。

第一步:检查逻辑卷的名称。

ll /dev/mapper

第2步:验证坏块。

sudo badblocks -o bad-blocks.txt -n -s -v -f /dev/mapper/ubuntu--vg-my_drive--lv

相关内容