【问题标题】:AWS NVME mounted to different directory after rebootAWS NVME 重启后挂载到不同的目录
【发布时间】:2021-02-10 13:53:06
【问题描述】:

我正在尝试将几个卷安装到我的实例,它们都是 NVME。 我读到 NVME 卷不会保持它们的映射相同,每次随机给它们序列号。 关键是我需要保持映射一致,它用于一个 db 和 1 个卷假设保留数据。 现在,如果我重新启动实例,卷就会混淆,因此具有数据的卷可能会挂载到不同的目录,因此 db 服务启动并且找不到任何数据。

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

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

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-ebs nvme


    【解决方案1】:

    您需要使用设备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 (8 GB)、nvme1n1 (10 GB) 和 nvme2n1 (12 GB)。
    现在: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 卷。

    【讨论】:

    • 感谢您的回答@Azize。是的,解决了这个问题。你知道如何为图像解决这个问题吗?在这种情况下,无法知道设备的 UUID,因为它们将在启动新实例时创建和附加。我的问题:serverfault.com/questions/1062962/…
    • UUID 与设备无关,实际上它与格式化设备(分区)时的文件系统有关。当您生成 AMI 时,它的所有卷将与您生成 AMI 时完全相同,因此从此 AMI 创建的每个实例都将具有完全相同的 UUID。无需更改。
    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2019-12-21
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多