不久前,我拿出了一些备件来为 backuppc 设置测试。两个较大的硬盘驱动器被合并到一个带有 LVM 的卷中。几个月后,似乎第二个驱动器正在/变坏了。最后我检查了一下,如果我能说服文件系统调整大小,我的数据就可以放在第一个驱动器上。
我将文件系统设置为 reiserfs,在一些报告称它对 backuppc 运行良好之后。我开始使用 resierfsck 来查看损坏的范围,包括尝试--rebuild-tree
使用 badblock 列表(来自 badblocks 程序)。但是每次我运行时,它都会发现一个新的坏块并停止,所以看起来磁盘是一个丢失的原因。
resize_resierfs
告诉我我需要先运行reiserfsck --check
,即使使用-f
. 这反过来又告诉我它由于不完整而无法运行--rebuild-tree
。
至少数据只是备份,所以重新开始不会丢失任何重要的东西,只是需要大量时间下载初始备份。
您真正想要做的是从该驱动器中取出逻辑卷,最好的办法是将物理范围迁移到另一个磁盘。如果您只是调整文件系统的大小,则无法预测可用空间的来源。
假设故障驱动器是
/dev/sdb
并且新驱动器是/dev/sdc
,程序如下:准备新磁盘
将其添加到卷组
将数据移动到新磁盘
注意: pvmove 很慢,所以你可能想做
反而。
用于
pvmove
将该 LV 的所有范围移动到 VG 中的其他 PV 上。我同意磁盘似乎是一个失败的原因。您的方法(缩小文件系统,缩小 LV,移出坏磁盘)似乎也不错。
这可能(我的意思是可能,所有赌注都因磁盘故障而失败)有效:
这将在 PE/块级别工作,绕过文件系统。但是你得到了读取错误,所以我不知道它是否会工作或失败。
使用健康的磁盘,从 VG 中删除一个的练习是这样的:(我猜你有一个跨越两个磁盘的 LV)
但您的主要问题似乎是第 1 步和第 3 步真的不喜欢磁盘错误。
过去,我从带有坏扇区的 reiserfs 卷中恢复数据的唯一方法是
ddrescue
. 所有“有风险的”reiserfs 工具都会在安全方面出错:在第一个磁盘错误时,整个操作都会被取消。使用 ddrescue 我可以简单地复制到一个好的设备并继续使用 reiserfsck。我曾经使用过的每个分区大小调整程序(gparted、Partition Magic 等)在提交任何更改之前都会对文件系统执行健康检查。除非有人知道不支持并且仍然支持 reiserfs 的应用程序,否则最好的选择是从头开始。我能想到的任何其他途径都需要更多的工作和更长的时间。
否则,您可以尝试通过文件系统工具重新映射所有坏块,但如果驱动器运行速度真的很快,它们可能看起来比您重新映射它们的速度更快。