在将带有 AWS 市场代码的 CentOS 根卷附加到其他 CentOS EC2 实例时,另一个实例使用附加的根卷启动
Posted
技术标签:
【中文标题】在将带有 AWS 市场代码的 CentOS 根卷附加到其他 CentOS EC2 实例时,另一个实例使用附加的根卷启动【英文标题】:On attaching CentOS root volume with AWS marketplace code to other CentOS EC2 instance, the other instance boots up using the attached root volume 【发布时间】:2016-06-22 07:52:52 【问题描述】:我在 ec2 实例中搞砸了我系统的根卷,因此我将实例的根卷附加到其他 ec2 实例,以便我可以访问错误的根卷并纠正我的错误。当我启动另一个实例时,搞砸的根卷成为实例的根卷。我将卷附加为 /dev/sdb (内核将其更改为 /dev/xvdf )并且实例原始根卷位于 /dev/sda (内核将其更改为 /dev/xvde )。因此内核应该将 /dev/xvde 作为根文件系统加载,但它的加载会占用根卷 (/dev/xvdf)。
系统的系统日志sn-p如下:
dracut:启动普利茅斯守护进程
xlblk_init:register_blkdev 专业:202
blkfront: xvdf: 禁用障碍
xvdf: 未知分区表
blkfront: xvde: 障碍被禁用
xvde: 未知分区表
EXT4-fs (xvdf):以有序数据模式挂载的文件系统。选项:
dracut:挂载的根文件系统 /dev/xvdf
【问题讨论】:
【参考方案1】:从另一个 ec2 实例中分离“搞砸”的卷
正常启动另一个实例
将 EBS 附加到正在运行的实例,请参阅 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html
以 root 身份执行 fdisk -l
并找到新实例的设备名称
创建一个“挂载点”(一个目录)并在其上挂载所需的磁盘分区
修复后,在挂载点上使用umount
命令,然后卸载
音量
如果 AMI 有市场代码,请尝试此答案https://serverfault.com/questions/522173/aws-vol-xxxxxxx-with-marketplace-codes-may-not-be-attached-as-as-secondary-dev中给出的步骤
【讨论】:
但是“搞砸”的卷有一个 AWS Marketplace 产品代码。所以卷只能附加到停止的实例。 我认为附加更高的字母也无济于事,因为我的日志仍然显示它正在使用新的根卷启动:dracut:启动普利茅斯守护进程 xlblk_init:register_blkdev 专业:202 blkfront:xvdl:障碍已禁用 xvdl:未知分区表 blkfront:xvde:障碍已禁用 xvde:未知分区表 EXT4-fs (xvdl):以有序数据模式挂载的文件系统。选项:dracut: Mounted root filesystem /dev/xvdl
试试这个答案serverfault.com/questions/522173/…中给出的步骤@【参考方案2】:
由于搞砸的根卷和原始实例根卷在卷分区上附加了相同的标签(在我的情况下,我的操作系统是 centos6.5,标签是 centos_root ),所以我们必须更改我们的标签这样下次启动时它就不会寻找标签 centos_root 而是寻找我们更改的标签。
首先,通过命令更改根卷分区标签 前任。 e2label /dev/xvde your_label , 这里 /dev/xvde 是根分区
其次,用your_label更改“/etc/fstab和/boot/grub/grub.conf”中的标签。
三、停止实例
第四,将搞砸的根卷附加到实例
五、启动实例
第六,瞧,现在您可以看到搞砸的根卷分区并将其挂载到某个挂载点以解决您的问题。
【讨论】:
@Vorsprung :嘿,这对我有用,你用同样的方法解决了吗 不,但这是一个很好的提示,如果我遇到这种问题,我会记住标签【参考方案3】:或
简单的方法是将 Centos 根卷附加到 amazon linux 机器并修复问题。不要将 Centos 根卷附加到另一个运行 Centos 的 ec2 实例。 AWS 市场中的 Centos 将“centos”作为根卷的标签。因此,当我们将 centos 根卷附加到另一台 centos 机器时,AWS 对挂载哪个根卷感到困惑,并发生异常。
【讨论】:
【参考方案4】:PSA:不要在 AWS 中使用 CentOS。
您不能再将 CentOS 实例的根卷附加到另一个实例。这是设计使然,以防止人们规避许可协议。尽管 CentOS 在技术上是免费的,因为它是一个市场 AMI,但该规则仍然适用。总的来说,这是一个很好的规则,但它使恢复失败的配置变得不可能。
使用亚马逊 Linux。无论如何,它基本上是 CentOS。
【讨论】:
以上是关于在将带有 AWS 市场代码的 CentOS 根卷附加到其他 CentOS EC2 实例时,另一个实例使用附加的根卷启动的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 boto3 指定 core-os ec2 实例的根卷大小?