Назад | Перейти на главную страницу

Как сохранить пути к дисковым устройствам для экземпляра AWS EC2 между перезагрузками

Я перезагрузил m5d.xlarge Экземпляр EC2 под управлением Ubuntu 16.04.5 LTS (xenial) с использованием shutdown -r.

После перезагрузки различные крепления дисков, определенные в /etc/fstab не совпадали с назначениями устройств, данными им изначально.

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

В таком случае, /data необходимо содержать то, что обычно ожидается в /data, а не какое-то другое крепление для привода, например /foo или /bar или /whatever-else.

Бег lsblk помогло вручную переопределить /etc/fstab файл, чтобы отразить назначения новых устройств и вернуть службы в оперативный режим.

Проблема: Меня беспокоит, что при перезагрузке метки устройств будут случайным образом переназначены для подключения дисков, и эта проблема может или возникнет снова, когда серверу потребуется перезагрузка.

Вопрос: Как я могу гарантировать, что места подключения дисков и соответствующие пути к ним сохраняются между перезагрузками без необходимости ручного (повторного) вмешательства?


редактировать: The c5_m5_checks_script.sh сценарий, указанный в приведенном ниже ответе, возвращает следующую информацию:

# ./c5_m5_checks_script.sh 
------------------------------------------------

OK     NVMe Module is installed and available on your instance


ERROR  NVMe Module is not loaded in the initramfs image.
        - Please run the following command on your instance to recreate initramfs:
        # sudo update-initramfs -c -k all


OK     ENA Module with version 2.0.3K is installed and available on your instance


OK     fstab file looks fine and does not contain any device names.

------------------------------------------------

Я не понимаю последнего OK заявление, как fstab файл содержит имена устройств. Или использование Amazon термина «имена устройств» означает нечто иное, чем имена устройств в fstab файл, возможно?

Чтобы привести конкретный и конкретный пример характера проблемы, у меня есть /etc/fstab это выглядит так:

...
/dev/nvme2n1    /staging        ext4    defaults,nofail 0       0
/dev/nvme3n1    /data   ext4    defaults,nofail 0       0
...

Тем не мение, lsblk показывает, что эти два тома подключены к идентификатору устройства друг друга:

# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
...
nvme2n1     259:0    0     1T  0 disk /staging
nvme3n1     259:3    0   512G  0 disk /data

В действительности, nvme2n1 объем 1T /data, и nvme3n1 объем 512G /staging.

Между перезагрузками происходит что-то неизвестное, что переназначает базовые диски на перестановку доступных идентификаторов устройств.

Единственный известный мне способ исправить это - вручную umount эти два тома, править /etc/fstab, и mount их снова.

Вопрос о награде: Есть ли постоянное исправление, которое позволило бы мне использовать другой постоянный идентификатор в /etc/fstab, который постоянно сохраняется между перезагрузками?

В AWS есть инструмент для преобразования имен томов EBS в / etc / fstab в их значения UUID: c5_m5_checks_script.sh

Сценарий также проверяет, загружен ли модуль NVMe в образ вашей ОС, но ваш новый тип экземпляра не запустился бы, если бы его не было.

Почему бы не использовать LABEL= или UUID= в /etc/fstab?

Ты можешь использовать blkid чтобы узнать соответствующие метки и UUID. Еще больше информации в man fstab конечно:

Также можно использовать PARTUUID = и PARTLABEL =. Эти идентификаторы разделов поддерживаются, например, для таблицы разделов GUID (GPT).

См. Mount (8), blkid (8) или lsblk (8) для получения более подробной информации об идентификаторах устройств.

Обратите внимание, что mount (8) использует UUID как строки. Строковое представление UUID должно быть основано на символах нижнего регистра.