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


17

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

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

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

Answers:


14

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

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

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

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

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

测试本身将花费几个小时(它将告诉您确切的时间)。完成后,您可以使用查询查询结果smartctl -a,以查找自检日志。如果显示“成功完成”,则您的硬盘正常。

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

就像我说的那样,硬盘本身将确保它不使用损坏的块,并且还将从这些块中重定位数据。这不是文件系统或LV要做的事情。另一方面,当您的硬盘上有多个坏块时,您不希望将其重新定位,而是要替换整个硬盘,因为它会发生故障。


3
您可能需要检查e2fsck联机帮助页,并查看-c在调用完全废话之前的操作。
derobert 2013年

1
@derobert oops ...
Martin von Wittich

1
@derobert TIL。我改写了错误的部分。感谢您的反馈!
Martin von Wittich

确实,与其标记该块以使文件系统不在现代磁盘上使用它们,不如直接将新数据写入该块,并且如果该磁盘确实受到物理损坏,该磁盘将自动将该扇区重新映射为备用磁盘。您可以使用dd。实际上,这种介质实际上是可以使用的,并且数据只是被破坏了,所以比您想像的要多得多,因此无需重新映射就可以很好地进行写操作。
psusi 2013年

“您可以使用dd“- 做到这一点,但您仍然可能不应该这样做。如果您进行了md突袭,它可以为您解决问题。@derobert可能会知道当磁盘不是md
团队

4

我很确定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不在乎物理范围是否不按顺序排列或不连续。


2

pvck可以检查LVM元数据之后,一致性是文件系统的工作。LVM仅与卷管理有关,因此它不需要关心构成特定范围的空间是否不良,因为更高级别的软件可以解决这些问题。无论如何,LVM元数据仅占据物理卷的第一个(可选地,还包含最后一个扇区)。

如果只有相当大的PV的第一个和最后一个部门(例如您在生产中看到的)恰好同时发生故障,那么您基本上是世界上运气最差的一家,因为从天文学角度来看这不太可能。否则,如果管理员知道驱动器的多个扇区出现了故障,那么大多数人都可以在“硬盘驱动器永久故障并需要更换”下进行归档。

如果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并拥有备份策略。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.