qemu-img:意外减少了磁盘大小

qemu-img:意外减少了磁盘大小

我意外地将 KVM 磁盘映像从 100G 减少到了 50G,使用方法如下:

sudo qemu-img resize disk.raw 50G

我想将磁盘从 100G 增加到 250G。现在虚拟机无法启动 :( 并收到以下消息:

重启后出现错误

我能做什么吗?

答案1

您将可怜的文件系统切成两半。如果您使用基于 LVM 的映像,那么会容易得多,因为它会保留卷更改的历史记录,并且从调整大小操作中恢复相对容易。它不太可能再次启动。但您至少可以挽救一些东西。这取决于数据的价值。

因此,如果您此后没有做任何事情/太多事情,并且您的映像分配并不稀疏,并且主机上的文件系统不是很碎片化,则有可能它被分配在一个块中。我不知道有什么简单的方法可以找到这些块的位置,但如果主机上的 ext4 FS 中存在一些日志。也许 extundelete 工具可以提供帮助。

无论如何,您都应确保没有任何内容写入映像所在的文件系统。理想情况下,您应该使用 SystemRescueCD 等实时 CD 进行操作。不要在受影响的文件系统上安装任何东西。

最好备份映像所在的整个磁盘。如果出现问题,或者您得到更好的答案,那么您可以重新启动。

  1. 尝试恢复文件。
    • 尝试使用 extundelete。
    • 第二次尝试只是调整其原始大小。
    • 在第三次和下一次尝试中,我不知道您还可以尝试什么,但您仍然可以问......

对于其中的每一个:

  1. 复制 disk.raw 文件!始终在副本上工作。[1]
  2. kpartx -a在文件上运行,它将创建循环设备并为分区创建 DM 设备。
  3. 运行 lsblk、blkid 并使用输出更新问题,这样至少布局是已知的。前 50GB 是“安全的”,但很难说那是什么数据……
  4. 现在,运行 fsck 后,您可能能够保存一些分区/逻辑卷,以及一些不完整的文件。

现在您知道备份有多么重要了......

[1]:提示:复制整个磁盘需要很长时间。如果您使用的是 LVM,则可以将磁盘映像复制到逻辑卷,创建快照并处理快照,这样就不会影响原始映像。尽管快照的写入速度较慢,但​​您不会向快照写入大量数据。您的目标是从映像中拯救数据。

相关内容