Я перезагрузил 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 должно быть основано на символах нижнего регистра.