重启后AWS NVME挂载到不同的目录

dor*_*272 5 amazon-ec2 amazon-ebs amazon-web-services nvme

我正在尝试将一些卷安装到我的实例,它们都是 NVME。我读到,NVME 卷每次随机分配序列号时,它们的映射都不会保持相同。重点是我需要保持映射一致,它是针对一个数据库和一个假设保存数据的卷。现在,如果我重新启动实例,卷就会混合在一起,因此包含数据的卷可能会被安装到不同的目录,因此数据库服务启动但找不到任何数据。

当然,创建映像后也会发生这种情况,因此我无法配置 1 个实例并使用映像启动更多实例。

如何强制映射保持一致?或者停止使用 NVME?(我读到这个随机序列化仅发生在 NVME 上)

Azi*_*ize 4

您需要使用设备UUID。请参阅下面我的示例。

\n

我有 3 个磁盘,8 GB、10 GB 和 12 GB。
\n它们显示为设备nvme0n1(8 GB)、nvme1n1(10 GB) 和nvme2n1(12 GB)。

\n
$ lsblk\nNAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\nnvme1n1       259:0    0  10G  0 disk\n\xe2\x94\x94\xe2\x94\x80nvme1n1p1   259:6    0  10G  0 part /mnt/disk10\nnvme2n1       259:1    0  12G  0 disk\n\xe2\x94\x94\xe2\x94\x80nvme2n1p1   259:7    0  12G  0 part /mnt/disk12\nnvme0n1       259:2    0   8G  0 disk\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1   259:3    0   8G  0 part /\n\xe2\x94\x94\xe2\x94\x80nvme0n1p128 259:4    0   1M  0 part\n
Run Code Online (Sandbox Code Playgroud)\n

看看我的磁盘上有一个大小为 10 GB 的文件,名为/mnt/disk10/file10.txt.
\n磁盘上还有一个大小为 12 GB 的文件,名为/mnt/disk12/file12.txt.

\n
$ ls -l /mnt/*\n/mnt/disk10:\ntotal 0\n-rw-r--r-- 1 root root 0 May  9 00:37 file10.txt\n\n/mnt/disk12:\ntotal 0\n-rw-r--r-- 1 root root 0 May  9 00:38 file12.txt\n
Run Code Online (Sandbox Code Playgroud)\n

我的fstab文件用于UUID引用这些磁盘,如下所示。

\n
$ cat /etc/fstab\n# Disk 8 GB\nUUID=7b355c6b-f82b-4810-94b9-4f3af651f629     /           xfs    defaults,noatime  1   1\n# Disk 10 GB\nUUID=2b19004b-795f-4da3-b220-d531c7cde1dc     /mnt/disk10           xfs    defaults,noatime  0   0\n# Disk 12 GB\nUUID=1b18a2f2-f48f-4977-adf8-aa483e1fa91f     /mnt/disk12           xfs    defaults,noatime  0   0\n
Run Code Online (Sandbox Code Playgroud)\n

如果您想知道UUID每个设备的内容,请使用blkid,如下所示。

\n
$ blkid\n/dev/nvme1n1: PTUUID="2e6aaa33" PTTYPE="dos"\n/dev/nvme1n1p1: UUID="2b19004b-795f-4da3-b220-d531c7cde1dc" TYPE="xfs" PARTUUID="2e6aaa33-01"\n/dev/nvme2n1: PTUUID="10565c83" PTTYPE="dos"\n/dev/nvme2n1p1: UUID="1b18a2f2-f48f-4977-adf8-aa483e1fa91f" TYPE="xfs" PARTUUID="10565c83-01"\n/dev/nvme0n1: PTUUID="1760802e-28df-44e2-b0e0-d1964f72a39e" PTTYPE="gpt"\n/dev/nvme0n1p1: LABEL="/" UUID="7b355c6b-f82b-4810-94b9-4f3af651f629" TYPE="xfs" PARTLABEL="Linux" PARTUUID="a5dcc974-1013-4ea3-9942-1ac147266613"\n/dev/nvme0n1p128: PARTLABEL="BIOS Boot Partition" PARTUUID="dc255fff-03c6-40e6-a8dc-054ec864a155"\n
Run Code Online (Sandbox Code Playgroud)\n

现在我将停止我的机器,强制更改设备顺序并重新启动它。
\n看看磁盘如何更改设备名称,但它们仍然挂载在同一路径上,并且上面有相同的文件。

\n

之前:nvme0n1(8 GB)、nvme1n1(10 GB) 和nvme2n1(12 GB)。
\n现在:nvme0n1(8 GB)、nvme1n1(12 GB) 和nvme2n1(10 GB)。

\n
$ lsblk\nNAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\nnvme1n1       259:0    0  12G  0 disk\n\xe2\x94\x94\xe2\x94\x80nvme1n1p1   259:1    0  12G  0 part /mnt/disk12\nnvme2n1       259:2    0  10G  0 disk\n\xe2\x94\x94\xe2\x94\x80nvme2n1p1   259:3    0  10G  0 part /mnt/disk10\nnvme0n1       259:4    0   8G  0 disk\n\xe2\x94\x9c\xe2\x94\x80nvme0n1p1   259:5    0   8G  0 part /\n\xe2\x94\x94\xe2\x94\x80nvme0n1p128 259:6    0   1M  0 part\n\n$ ls -l /mnt/*\n/mnt/disk10:\ntotal 0\n-rw-r--r-- 1 root root 0 May  9 00:37 file10.txt\n\n/mnt/disk12:\ntotal 0\n-rw-r--r-- 1 root root 0 May  9 00:38 file12.txt\n
Run Code Online (Sandbox Code Playgroud)\n

UUID是文件系统的一个属性,因此每当您创建文件系统时,它都会生成一个UUID. 此外,任何时候生成 AMI 或快照时UUID都是相同的,因为它属于文件系统,而不是 EBS 卷。

\n