如何在重新启动之间保留 AWS EC2 实例的驱动器设备路径

Ale*_*lds 4 fstab amazon-ec2 amazon-web-services ubuntu-16.04

m5d.xlarge使用shutdown -r.

重新启动后,中定义的各种驱动器安装/etc/fstab与最初分配给它们的设备分配不一致。

这导致各种服务失败,这些服务依赖于具有指定名称的驱动器安装,其中包含与该名称关联的特定数据。

在这种情况下,/data需要包含的内容通常预计将在/data,而不是其他的驱动安装,比如/foo/bar/whatever-else

运行lsblk有助于手动重新定义/etc/fstab文件以反映新的设备分配并使服务重新联机。

问题:我担心重启会随机将设备标签重新分配给驱动器安装,当服务器需要重启时,这个问题可能会或将再次发生。

问题:如何确保在重新启动之间保留驱动器安装及其各自的设备路径,而无需手动(重新)干预?


编辑c5_m5_checks_script.sh下面提供的答案中引用的脚本返回以下信息:

# ./c5_m5_checks_script.sh 
------------------------------------------------

OK     NVMe Module is installed and available on your instance


ERROR  NVMe Module is not loaded in the initramfs image.
        - Please run the following command on your instance to recreate initramfs:
        # sudo update-initramfs -c -k all


OK     ENA Module with version 2.0.3K is installed and available on your instance


OK     fstab file looks fine and does not contain any device names.

------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我不明白最后OK一句话,因为该fstab文件包含设备名称。或者亚马逊使用的术语“设备名称”fstab可能与文件中的设备名称有所不同?

为了给出问题性质的具体和具体的例子,我有一个/etc/fstab看起来像这样的:

...
/dev/nvme2n1    /staging        ext4    defaults,nofail 0       0
/dev/nvme3n1    /data   ext4    defaults,nofail 0       0
...
Run Code Online (Sandbox Code Playgroud)

但是,lsblk显示这两个卷已挂载到彼此的设备 ID:

# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
nvme2n1     259:0    0     1T  0 disk /staging
nvme3n1     259:3    0   512G  0 disk /data
Run Code Online (Sandbox Code Playgroud)

现实中,nvme2n1是1T体积/data,又nvme3n1是512G体积/staging

重新启动之间会发生一些未知的事情,它将底层驱动器重新分配给可用设备 ID 的排列。

我知道解决这个问题的唯一方法是手动umount这两本书,编辑/etc/fstab,并mount再次它们。

赏金问题:是否有永久修复可以让我在 中使用不同的永久标识符/etc/fstab,该标识符在重新启动之间始终存在?

小智 5

AWS 有一个工具可以将 /etc/fstab 中的 EBS 卷设备名称转换为其 UUID 值:c5_m5_checks_script.sh

该脚本还会检查 NVMe 模块是否已加载到您的操作系统映像中,但如果该模块不存在,您的较新实例类型将不会启动。