更改 EC2 实例类型修改了 EBS 根设备 UUID 并使磁盘只读。怎么解决?

问题描述 投票:0回答:1

我有一个完全运行的 Amazon Linux 2 实例,在 t2.small 实例类型上运行。我想尝试将实例更改为 t2.medium 类型进行测试。正如我过去所做的那样,我只是关闭实例,更改类型,然后重新启动实例。

重启后,apache 宕机了,我的网站无法访问。我能够登录到该实例,当尝试启动 apache 时,我发现根驱动器现在是只读的,这阻止了启动等。通过一些故障排除,我能够重新安装驱动器并正常运行,但每次重新启动实例时,它都会回到只读状态,我每次都必须执行相同的修复才能使其恢复正常。我相信这是我的 /etc/fstab 根设备 UUID 与当前根设备 UUID 不匹配的问题。我从未更改过任何附加的 EBS 卷,因此我不确定更改是如何发生的。

一些相关信息:

$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

为了发现 UUID 不匹配/修复,我执行了以下操作:

$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  50G  0 disk 
└─xvda1 202:1    0  50G  0 part /
xvdb    202:16   0  50G  0 disk 
xvdf    202:80   0  50G  0 disk 
└─xvdf1 202:81   0  50G  0 part 

$ sudo blkid
/dev/xvda1: LABEL="/" UUID="2a7884f1-a23b-49a0-8693-ae82c155e5af" TYPE="xfs" PARTLABEL="Linux" PARTUUID="4d1e3134-c9e4-456d-a253-374c91394e99"
/dev/xvdf1: LABEL="/" UUID="a8346192-0f62-444c-9cd0-655ed0d49a8b" TYPE="ext4" PARTLABEL="Linux" PARTUUID="2688b30d-29ef-424f-9196-05ec7e4a0d80"

我读到可能的解决方法是执行以下操作:

$ sudo mount -o remount,rw /
mount: /: can't find UUID=-1a7884f1-a23b-49a0-8693-ae82c155e5af.

显然,这是行不通的。所以我查看了我的 /etc/fstab:

#
UUID=-1a7884f1-a23b-49a0-8693-ae82c155e5af     /           xfs    defaults,noatime  1   1
/swapfile swap swap defaults 0 0

看到这种不匹配,我尝试:

sudo mount -o remount nouuid /

这有效,使根可写,并且我能够使服务恢复并运行。

因此,我开始相信这与 fstab 中 UUID 不匹配有关。

我的问题:

  1. 我是否应该更改 /etc/fstab 中的条目以匹配当前的 UUID:2a7884f1-a23b-49a0-8693-ae82c155e5af

  2. 知道为什么会发生这种情况以及如何防止将来发生这种情况吗?

linux amazon-web-services amazon-ec2 centos amazon-ebs
1个回答
0
投票

我更改EBS类型后遇到同样的错误。 对于遇到相同错误的任何人,当您处于根磁盘“只读”状态(无法使用 TAB 自动完成)时,您应该执行以下操作:

  1. 执行
    lsblk
    列出您正在用作根磁盘或数据磁盘的设备
  2. 执行
    blkid
    获取该磁盘的UUID
  3. 执行
    mount UUID=aaa-bbb-ccc-ddd-eee -o remount,rw /
    并且您的根磁盘应该可以正常工作。

之后,您还需要在

/etc/fstab
中更改磁盘的UUID。 另外,不要忘记仔细检查
/boot/grub2.cfg
,确保内核参数附加了正确的 UUID。如果在 fstab 中没有正确的 UUID 的情况下升级内核,grub2.cfg 中可能存在错误配置的 UUID


如果由于某种原因无法进入系统,控制台终端会提示“无法找到磁盘 /dev/disk/by-uuid/aaa-bbb-ccc-ddd-eee”,具体方法如下你解决这个问题。

  1. 关闭 EC2 并从 AWS 网页卸载根磁盘
  2. 启动新的EC2
  3. 将根磁盘安装到此新 EC2,如下所示
    /dev/xvdf
  4. 执行
    mount /dev/xvdf /mnt
    挂载根盘
  5. 执行
    lsblk
    blkid
    即可获取正确的UUID
  6. 替换
    /etc/fstab
    /boot/grub2.cfg
  7. 中不正确的 UUID
  8. 关闭并卸载根磁盘,然后将该根磁盘重新挂载到它应该所属的位置。
© www.soinside.com 2019 - 2024. All rights reserved.