Найти в Дзене
Записки сисадмина

Linux. fstab. Как правильно монтировать разделы.

У самурая нет цели, есть только пу-пу-путь. И чем он длиннее, тем проще и обыденнее кажутся проблемы. Так «боже, все упало, что же делать» со временем сменяется на «ну опять началось, сейчас поправим». Итак, рубрика «вопросы с собеседований». Вопрос звучит примерно так: «вы клонировали виртуальную машину с примонтированным диском, после чего она не включается. На экране вы видите сообщение об emergency mode. Что случилось и как исправить?» Давайте разбираться по порядку: Не важно, какой именно у вас дистрибутив, какая версия ядра, на экране будет следующее: В 99% случаев данную картину мы видим при ошибке монтирования. Она возникает в нескольких случаях: Кажется, что все проблемы разные и уникальные, но на деле система просто падает в ошибку при чтении файла /etc/fstab. Немного уточним теорию: fstab у нас отвечает за автоматическое монтирование разделов при запуске системы. При установке он формируется автоматически, прописывая в себя устройство, на которое устанавливается система. Син
Оглавление

У самурая нет цели, есть только пу-пу-путь. И чем он длиннее, тем проще и обыденнее кажутся проблемы. Так «боже, все упало, что же делать» со временем сменяется на «ну опять началось, сейчас поправим».

Итак, рубрика «вопросы с собеседований». Вопрос звучит примерно так: «вы клонировали виртуальную машину с примонтированным диском, после чего она не включается. На экране вы видите сообщение об emergency mode. Что случилось и как исправить?»

Давайте разбираться по порядку:

С какой проблемой мы столкнулись.

Не важно, какой именно у вас дистрибутив, какая версия ядра, на экране будет следующее:

В 99% случаев данную картину мы видим при ошибке монтирования. Она возникает в нескольких случаях:

  1. Вы клонировали систему на другой диск вместе со всеми параметрами.
  2. Вы создали рейд массив со своим номером и не перезагрузили систему (например, если у вас не было RAID массивов, а вы при создании указали идентификатор md4, после перезагрузки система переименует его в md127 автоматически)
  3. В системе с несколькими дисками, вы поменяли их местами.
  4. Вы клонировали виртуальную машину с примонтированным диском.
  5. У вас недоступен один из дисков в системе.

Кажется, что все проблемы разные и уникальные, но на деле система просто падает в ошибку при чтении файла /etc/fstab.

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

Синтаксис fstab везде одинаковый:

-2
<file system> <mount point> <type> <options> <dump> <pass>

Расшифровывается как:

<что мы монтируем> <куда> <тип ФС> <опции монтирования> <нужен ли дамп ФС> <в каком порядке fsck будет проверять файловые системы>

Однако, есть небольшая вариативность: монтируемое устройство можно указать двумя методами - либо имя диска в системе, либо его UUID.

/dev/sda1 /mountpoint ext4 defaults 0 0
UUID={sda1 uuid} /mountpoint ext4 defaults 0 0

Файл /etc/fstab перечитывается только при запуске, поэтому ошибку в нем можно заметить не сразу, а только после перезагрузки. И если система не сможет найти хоть один из дисков по UUID, или имени, она упадет в ошибку.

Как решить эту проблему.

Итак, что же делать?

Проблема нам ясна, решение очевидно - нужно отредактировать данный файл. Для этого мы загружаемся либо с live cd и монтируем нашу файловую систему, либо запускаемся в recovery mode, если это возможно.

Вот мы видим наш заветный файл, но пока что не очень понятно, что в него вписывать.

Начнем с того, что лучшая практика - это указывать именно UUID разделов, чтобы как минимум избежать проблем с внезапным изменением имен.

Откуда брать UUID?

В этом нам поможет команда blkid

-3

Заметим, что UUID раздела не равен идентификатору диска:

-4

В нашем случае UUID равен 187e135e-e8da-478a-95e9-1b458f9aadd2, ФС - ext4, значит, строчка в fstab будет выглядеть как:

UUID=187e135e-e8da-478a-95e9-1b458f9aadd2 /mountpoint ext4 defaults 0 0

А что делать, если у раздела почему-то не оказалось UUID?

  • Для начала, нам нужно сгенерировать случайный UUID командой uuidgen.
uuidgen
  • Далее командой tune2fs мы прописываем новый UUID нашему разделу.
sudo tune2fs /dev/sda1 -U 979889be-af3e-48fb-bef9-f08b7fdc5a74
  • Система сначала откажет и попросит провести свежую проверку файловой системы на разделе.
sudo e2fsck -f /dev/sda1
  • После проверки мы сможем присвоить новый UUID:
-5

После данных операций систему необходимо перезапустить, иначе новый UUID не будет присвоен, но в /etc/fstab его уже можно вносить.

Если все сделали правильно, после перезапуска наша система запустится уже без ошибок, так что мы можем отложить флешку с live cd в ящик для следующих падений.