AWS NVME, подключенный к другому каталогу после перезагрузки

#amazon-web-services #amazon-ec2 #amazon-ebs #nvme

#amazon-web-services #amazon-ec2 #amazon-ebs #nvme

Вопрос:

Я пытаюсь подключить несколько томов к своему экземпляру, и все они являются NVME. Я читал, что тома NVME не сохраняют свое отображение одинаково, каждый раз, когда им случайным образом присваиваются сериализованные номера. Дело в том, что мне нужно поддерживать согласованность сопоставления, оно предназначено для базы данных, и 1 из томов предполагает хранение данных. Теперь, если я перезагружу экземпляр, тома перепутаются, поэтому возможно, что том, содержащий данные, будет смонтирован в другой каталог, и, следовательно, служба БД запустится и не найдет никаких данных.

Конечно, это происходит и после создания образа, поэтому я не могу настроить 1 экземпляр и увеличить скорость с помощью образа.

Как я могу заставить сопоставление быть согласованным? или прекратить использование NVME? (Я читал, что эта случайная сериализация происходит только с NVME)

Ответ №1:

Вам необходимо использовать устройство UUID . Смотрите мой пример ниже.

У меня 3 диска, 8 ГБ, 10 ГБ и 12 ГБ.
Они отображаются как устройства nvme0n1 (8 ГБ), nvme1n1 (10 ГБ) и nvme2n1 (12 ГБ).

 $ 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 ГБ /mnt/disk10/file10.txt .
Также вызывался файл на диске размером 12 ГБ /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 ГБ), nvme1n1 (10 ГБ) и nvme2n1 (12 ГБ).
Теперь: nvme0n1 (8 ГБ), nvme1n1 (12 ГБ) и nvme2n1 (10 ГБ).

 $ 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 или snapshot, UUID это одно и то же, поскольку оно принадлежит файловой системе, а не тому EBS.

Комментарии:

1. Спасибо за ваш ответ @Azize. Да, это решает эту проблему. Знаете ли вы, как решить эту проблему для изображений. В этом случае невозможно узнать UUID устройств, поскольку они будут созданы и подключены при запуске нового экземпляра. Мой вопрос: serverfault.com/questions/1062962 /…

2. UUID не привязан к устройству, фактически он связан с файловой системой при форматировании устройства (раздела). Когда вы создаете AMI, все тома будут точно такими же, как и при создании AMI, поэтому каждый экземпляр, созданный из этого AMI, будет иметь точно такой же UUID. Никаких изменений не требуется.