【问题标题】:EBS Volume Being Read as Root DeviceEBS 卷被读取为根设备
【发布时间】:2017-06-14 16:54:33
【问题描述】:

我的一个实例阻止我记录,所以我停止了它,分离了它的卷,启动了一个新实例,然后附加了旧卷。问题是,旧卷被视为根设备。因此,我仍然无法登录到新实例(尽管如果我不附加旧卷,我可以这样做)。

有没有办法使用 AWS 管理控制台解决这个问题?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-ebs


    【解决方案1】:

    您似乎已将旧卷附加到“/dev/sda1”中。卸载旧卷并将其附加到“/dev/sdf”。

    【讨论】:

    • 没有。它作为 /dev/sdf 附加。出于某种原因,即使映射正确,也会绕过新卷并使用旧卷。
    【解决方案2】:

    这是由于每个卷上的文件系统具有相同的标签(例如 e2label /dev/xvda1 返回的值)。服务器正确地从第一个卷开始引导,然后引导加载程序在那里看到第二个卷具有它预期的根卷的标签,并以第二个卷作为根继续引导。这是一个操作系统级别的设置,对 AWS 基础设施不可见。

    解决方法:在实例启动之前不要附加第二个卷。 EBS 卷可以随时附加到一个实例——它们不必在实例启动时存在。卸载后,它们也可以随时分离,而实例仍在运行。

    【讨论】:

    • 我之前尝试过这样做,但由于实例未处于停止状态,因此无法附加卷。
    • 该错误是否提及“市场”? ...或任何其他解释?
    • 是的。就是这样。 Error attaching volume: Cannot attach volume 'xxxxxxxx' with Marketplace codes as the instance 'xxxxx' is not in the 'stopped' state.
    • 啊,所以,这是为了防止您(有意或无意地)避免为在该卷上运行软件支付任何许可费,但即使许可费为 0 美元,该限制也可能适用。您最简单的解决方法可能是使用不同的操作系统启动一个测试实例——如果这是 Ubuntu,使用 CentOS 或 Amazon Linux 启动一个可能会导致不同的根卷标,因此在实例停止的情况下安装卷应该会导致正常启动到正确的根卷。否则,它会更复杂一些。并非不可能,只是更混乱。
    • 这实际上是我尝试的第一件事。 Amazon Linux 实例会产生相同的错误。 CentOS 也一样。尽管错误不同,但我也尝试了 RedHat。
    【解决方案3】:

    为了解决这个问题,我必须先对旧卷进行快照。然后我使用该快照创建了一个新的 AMI。我将旧卷作为额外存储包含在内,以便明确定义它不被视为根设备。

    然后我使用该 AMI 创建了一个新实例。我终于能够登录到新实例。从那里,我刚刚安装了卷。

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 2011-08-10
      • 2017-02-27
      • 2011-01-06
      • 2011-07-12
      • 2021-12-18
      • 1970-01-01
      • 2017-07-25
      相关资源
      最近更新 更多