昨天我收到一封电子邮件,说我们的一个用户正在尝试为心跳/集群包腾出空间,该包需要自己的分区作为表决磁盘。为此,他尝试减小根分区的逻辑卷的大小,然后为此创建一个新的逻辑卷。但是,他忘记先调整文件系统的大小(或在命令中包含 -r 开关)。他还忘记通过从救援 CD 运行此过程来卸载根分区。系统现在拒绝启动操作系统,并出现以下错误:
超级块或分区表可能已损坏!意外不一致;请手动运行 fsck。
系统将使用户进入单用户模式。
有可能挽救文件系统吗,还是它被搞坏了?它运行的是 ext3。
答案1
如果文件系统已经在新 LV 上初始化,那么您可能就麻烦了,因为数据将被覆盖。您仍然可以尝试恢复它,但我不会抱太大希望。如果文件系统尚未初始化,那么理论上可以恢复它(但我自己还没有尝试过)。
首先,备份整个驱动器,万一恢复出错,您将需要它。下一步是尝试找到 LVM 在进行/etc/lvm/archive
更改之前创建的 LVM 元数据备份。如果无法访问根卷,您可以尝试运行e2fsck
以使其可挂载,并希望备份文件存储在卷的开头附近。如果您这样做,您将希望从运行之前继续恢复e2fsck
(即在获取备份文件后从备份中恢复)。
如果你设法获取了备份文件,请使用以下命令恢复 LVM 配置恢复出厂设置。如果您无法获得备份文件,那么您只能希望初始卷是完全连续的。删除新的 LV,然后将旧 LV 扩展至其原始大小。
将旧 LV 恢复到正确大小后,祈祷并运行e2fsck
。您确实需要先进行备份,第一次尝试可能无法成功。
答案2
我会尝试:
- 使用救援系统,例如 GRML 或 Ubuntu 实时系统。
- 将卷重新调整为原始大小,并希望 LVM 分配相同的物理磁盘空间。如果在此期间没有对卷组进行其他修改,此操作应该可行。
- 制作一个图像,或者至少是该卷的一个快照。
- 尝试用 来修复它
fsck
。 - 希望最好的
我很可能会认为文件系统已经坏了,但是可能帮助带来极大的好运。
答案3
今天我就是那个用户......幸运的是,这是在测试环境中,所以我保持了清晰的思维过程;)
我能够通过撤销我所做的事情来解决错误。我将主 lvm 减少了 100G,没有调整大小,然后将根 lvm 扩大了 100G,仍然没有调整 FS 的大小。
我从 liveCD(CentOS 6.4)启动,将启动空间缩小了 100G,调整了大小,将主空间扩大了 100G,调整了大小。重新启动后,一切恢复正常。