#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. Никаких изменений не требуется.