当您使用 ext4 时,您可以使用命令检查坏块e2fsck -c /dev/sda1 # or whatever。这将通过将它们添加到坏块 inode 来“黑名单”这些块。
LVM2 物理卷的等效项是什么?它的文件系统是 ext4,但据推测,当底层 LVM 设置在物理磁盘上移动数据时,检测到的坏块将变得无效。
换句话说,如何检查 LVM 中不使用的坏块?
Mar*_*ich 15
当您使用 ext4 时,您可以使用命令
e2fsck -c /dev/sda1或其他方式检查坏块。这将通过将它们添加到坏块 inode 来“黑名单”这些块。
e2fsck -cbadblocks在底层硬盘上运行。您可以badblocks直接在 LVM 物理卷上使用该命令(假设 PV 实际上是一个硬盘,而不是其他类型的虚拟设备,如 MD 软件 RAID 设备),就像您在硬盘上使用该命令一样包含一个 ext 文件系统。
这不会向文件系统添加任何类型的坏块信息,但我并不认为这是文件系统的有用功能;硬盘应该处理坏块。
甚至比badblocks在磁盘上运行 SMART 自检更好(替换/dev/sdX为硬盘的设备名称):
smartctl -t long /dev/sdX
smartctl -a /dev/sdX | less
Run Code Online (Sandbox Code Playgroud)
测试 ifself 需要几个小时(它会告诉你确切需要多长时间)。完成后,您可以使用 查询结果smartctl -a,查找自检日志。如果显示“已成功完成”,则您的硬盘没问题。
换句话说,如何检查 LVM 中不使用的坏块?
正如我所说,硬盘本身将确保它不会使用损坏的块,并且还会从这些块中重新定位数据;这不是文件系统或 LV 必须做的事情。另一方面,当您的硬盘不仅仅是几个坏块时,您不希望重新定位它们,但您想更换整个硬盘,因为它出现故障。
我很确定 LVM 不处理坏块;它期望底层存储。大多数(如果不是全部)现代硬盘都可以。您可能需要对该扇区执行写入操作,但磁盘应重新映射它。(您可能需要先使用它进行离线表面扫描,例如,smartctl /dev/sda -t offline)。
也就是说,LVM 实际上不会移动数据,除非您提出要求,例如pvmove. 所以你可以使用 ext4 badblocks 功能;如果 run ,你只需要重新检查坏块pvmove。没有常见的操作(例如lvextend)移动数据。
Extend 不会移动数据,因为 LVM 保留了一个映射,上面写着“逻辑范围 0-99 是物理范围 200-299”,然后当您扩展它时,它只会添加“逻辑范围 100-199 是物理范围 100-199”。甚至“逻辑盘区 100–149 是物理盘区 50–99;逻辑盘区 150–199 是物理盘区 140–189”。LVM 不关心物理范围是否有序或不连续。