我有一个完全运行的 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 不匹配有关。
我的问题:
我是否应该更改 /etc/fstab 中的条目以匹配当前的 UUID:2a7884f1-a23b-49a0-8693-ae82c155e5af
知道为什么会发生这种情况以及如何防止将来发生这种情况吗?
我更改EBS类型后遇到同样的错误。 对于遇到相同错误的任何人,当您处于根磁盘“只读”状态(无法使用 TAB 自动完成)时,您应该执行以下操作:
lsblk
列出您正在用作根磁盘或数据磁盘的设备blkid
获取该磁盘的UUIDmount 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”,具体方法如下你解决这个问题。
/dev/xvdf
mount /dev/xvdf /mnt
挂载根盘lsblk
和blkid
即可获取正确的UUID/etc/fstab
和 /boot/grub2.cfg