AWS NVME在重新启动后安装到不同的目录



我正在尝试将几个卷装载到我的实例中,它们都是NVME。我读到NVME卷并没有保持它们的映射不变,每次它们都被随机地赋予序列号。重点是我需要保持映射的一致性,它是为一个数据库和一个卷保留数据。现在,如果我重新启动实例,卷就会混淆,所以有数据的卷可能会被装载到另一个目录,因此数据库服务启动但找不到任何数据。

当然,它也发生在创建图像之后,所以我不能使用图像配置1个实例和旋转。

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

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

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

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  10G  0 disk
└─nvme1n1p1   259:6    0  10G  0 part /mnt/disk10
nvme2n1       259:1    0  12G  0 disk
└─nvme2n1p1   259:7    0  12G  0 part /mnt/disk12
nvme0n1       259:2    0   8G  0 disk
├─nvme0n1p1   259:3    0   8G  0 part /
└─nvme0n1p128 259:4    0   1M  0 part

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

$ ls -l /mnt/*
/mnt/disk10:
total 0
-rw-r--r-- 1 root root 0 May  9 00:37 file10.txt
/mnt/disk12:
total 0
-rw-r--r-- 1 root root 0 May  9 00:38 file12.txt

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

$ cat /etc/fstab
# Disk 8 GB
UUID=7b355c6b-f82b-4810-94b9-4f3af651f629     /           xfs    defaults,noatime  1   1
# Disk 10 GB
UUID=2b19004b-795f-4da3-b220-d531c7cde1dc     /mnt/disk10           xfs    defaults,noatime  0   0
# Disk 12 GB
UUID=1b18a2f2-f48f-4977-adf8-aa483e1fa91f     /mnt/disk12           xfs    defaults,noatime  0   0

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

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

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

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

$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:0    0  12G  0 disk
└─nvme1n1p1   259:1    0  12G  0 part /mnt/disk12
nvme2n1       259:2    0  10G  0 disk
└─nvme2n1p1   259:3    0  10G  0 part /mnt/disk10
nvme0n1       259:4    0   8G  0 disk
├─nvme0n1p1   259:5    0   8G  0 part /
└─nvme0n1p128 259:6    0   1M  0 part
$ ls -l /mnt/*
/mnt/disk10:
total 0
-rw-r--r-- 1 root root 0 May  9 00:37 file10.txt
/mnt/disk12:
total 0
-rw-r--r-- 1 root root 0 May  9 00:38 file12.txt

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

最新更新