如何在 8 月 8 日中断后从恢复快照重新创建工作 AMI?

Jon*_*nik 11 ubuntu amazon-ami amazon-ec2 amazon-web-services

在亚马逊8 月 8 日中断后,所有(基于 EBS 的)AMI 都停止为许多 用户工作。这是由于 AMI 所基于的快照中的某些扇区损坏所致。

但是,亚马逊在应该修复磁盘问题的地方创建了恢复快照。这些是按照“vol-xxxxxxxx 的恢复快照”命名的。

我从恢复快照创建了一个运行良好的新 AMI,但从这个新 AMI 启动的实例不起作用:它们的状态是“正在运行”,但我无法通过 ssh 进入机器,也无法访问任何应该在那里运行的 Web 服务。归结为(来自系统日志,可通过 AWS 管理控制台访问):

EXT3-fs: sda1: couldn't mount because of unsupported optional features (240).

EXT2-fs: sda1: couldn't mount because of unsupported optional features (244).

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)
Run Code Online (Sandbox Code Playgroud)

我已经在 AWS 上的另一台服务器中安装了从该恢复快照创建的卷,但一切看起来都很正常。例如, fsck 说:

$ sudo fsck -a /dev/xvdg
fsck from util-linux-ng 2.17.2
uec-rootfs: clean, 53781/524288 files, 546065/2097152 blocks
Run Code Online (Sandbox Code Playgroud)

在 AWS 论坛的一次讨论中,我从有类似问题的人那里找到了这个建议

解决方法是从快照创建卷并将其附加到正在运行的实例,使用 fsck --force 强制检查文件系统,一旦清除,您就可以创建快照并将其用于 AMI。

但我不知道如何在 Ubuntu (11.04) 上强制 fsck:

$ sudo fsck --force /dev/xvdg
fsck from util-linux-ng 2.17.2
fsck.ext3: invalid option -- 'o'
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何在 Ubuntu 上强制对卷进行文件系统检查?关于如何启动基于恢复快照的工作实例的任何其他想法?

现在看起来从一个干净的 Ubuntu AMI重新开始并重新设置我们的所有服务可能会更快。:-( 但当然,如果有任何方法可以使恢复快照真正起作用,我当然不希望这样做。

小智 14

我在尝试复制机器时遇到了同样的问题。

原来问题出在内核上。在创建 AMI 和实例时,我都为内核映像选择了默认值。

为了解决这个问题,我使用与原始实例相同的内核映像重新创建了 AMI。


小智 2

您可以尝试以下命令(注意 -f 选项而不是 --force): sudo fsck -f /dev/xvdg

希望这可以帮助。弗雷德