Почему fstab использует UUID вместо реального имени файловой системы?

21

Например, это первая строка моего /etc/fstab:

UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a    /    ext4    errors=remount-ro    0    1

И вот вывод df -hкоманды (сообщающий о свободном месте на диске):

honey@bunny:~$ df -T

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda       ext4      30832636 4884200  24359188  17% /
none           tmpfs            4       0         4   0% /sys/fs/cgroup
udev           devtmpfs    498172      12    498160   1% /dev
tmpfs          tmpfs       101796     320    101476   1% /run
none           tmpfs         5120       0      5120   0% /run/lock
none           tmpfs       508972       0    508972   0% /run/shm
none           tmpfs       102400       0    102400   0% /run/user
  1. Из двух это нормально, чтобы вывести, что UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13aпредставляет, /dev/vdaучитывая, что первый столбец в fstabэто <file system>?

  2. Итак, будет ли хорошо, если я изменю /etc/fstabэто?

    /dev/vda    /    ext4    errors=remount-ro    0    1
    
  3. РЕДАКТИРОВАТЬ: Если да (на вопрос выше), почему sudo blkidкоманда показывает другой UUID для /dev/vda?

    $ sudo blkid
    
    /dev/vda: LABEL="DOROOT" UUID="6f469437-4935-44c5-8ac6-53eb54a9af26" TYPE="ext4"
    

    Что мне здесь не хватает?

    Ответ: Я бы заключил (3), что это ошибка в облаке моего хоста. Так что да, UUID, сообщаемый blkid(или ls -l /dev/disk/by-uuid), должен совпадать с тем, который используется в /etc/fstab.

это я
источник
Проверьте UUID с помощью sudo blkidкоманды.
Авинаш Радж
@AvinashRaj Хм, странно, sudo blkidкоманда выводит другой UUID для /dev/vda. Это добавляет к моей путанице. :) (обновленный вопрос.)
its_me
Это плохой признак того, что команда blkid показывает другой UUID - проверьте текущий UUID с помощью `ls -l / dev / disk / by-uuid ''. Начиная с его vda, могло ли случиться так, что основная инфраструктура VM изменила что-то?
ликвидировать
@liquidat Это выход я получил: lrwxrwxrwx 1 root root 9 Jun 18 11:04 6f469437-4935-44c5-8ac6-53eb54a9af26 -> ../../vda. Что касается вашего другого вопроса, я свяжусь с веб-хостингом по этому поводу.
its_me
Я бы сказал, что машина может не перезагрузиться, так как запись в fstab совершенно неправильная. Может быть клонированный диск или что-то. Я так понимаю, что нет другого устройства, которое имеет UUID, указанный в fstab?
ликвидировать

Ответы:

22

Преимущество использования UUID заключается в том, что он не зависит от фактического номера устройства, которое операционная система дает вашему жесткому диску.

Представьте, что вы добавили еще один жесткий диск в систему, и по какой-то причине ОС решает, что ваш старый диск теперь sdbвместо sda.

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

Более подробную информацию о UUID также можно найти в блоге «UUID и Linux: все, что вам когда-либо нужно знать»

liquidat
источник
Ага. даже без добавления нового диска ваше ядро ​​может решить просто поменять два монтируемых на вашем диске устройства в один день. См. Wiki.archlinux.org/index.php/Persistent_block_device_naming
Томми,
что произойдет, если я захочу клонировать образ на другой диск с другим UUID?
aloplop85
Существует по крайней мере одна ситуация, когда UUID менее полезны: если вы клонируете весь диск, а затем перезагружаетесь, вы можете получить монтирование разделов с любого диска или с другого диска.
boot13
Это правда - проверьте связанный блог, у него даже есть раздел, когда им не пользоваться.
ликвидировать
Если вы клонируете диск, вы должны изменить UUID на новом диске. tune2fs xfs_admin или reiserfstune могут сделать это в зависимости от вашей файловой системы.
Steveayre
3

В этом случае я могу изменить / etc / fstab на это?

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

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

Преимущество использования UUID состоит в том, что он безошибочен, тогда /dev/vdaкак нет; это может случиться так, что он заканчивает тем , что другой диск во время загрузки, хотя это может быть полностью теоретический контекст (например, потому что у вас есть только один диск определенного типа).

Другим более тонким примером того, где использование имени устройства может вызвать проблемы, является недавний переход на некоторых системах на использование согласованных имен сетевых устройств . Если это произошло как обновление, и вы использовали жестко запрограммированное имя устройства в сетевом сценарии, это может привести к поломке. Параллельным примером блочных устройств WRT может быть обновление ядра или udev, которое меняет схему именования.

Один из пунктов UUID - сделать такие вещи возможными и безболезненными. Поэтому, хотя вы можете использовать имя устройства, делать это не имеет смысла, если (например) у вас нет системы, в которой вы меняете различные диски. Другими словами, если у вас нет веских причин для этого, придерживайтесь UUID .

лютик золотистый
источник
Хорошо. Так что объясняет различные UUID , для /dev/vdaв /etc/fstabи сообщил blkid? (Пожалуйста, смотрите обновленный вопрос, если у вас его нет.)
its_me
5
Вместо того, чтобы спрашивать об обновлении, вы должны задать его как отдельный вопрос («Почему мой UUID смонтированного раздела отличается от того, который есть в fstab?»).
Златовласка
2

Вы можете сделать man fstabдля довольно краткого ознакомления с содержанием и семантикой /etc/fstabфайла. На моем x86, довольно современном сервере Arch Linux, man fstabя получаю следующее:

The second field ... describes  the mount point for the filesystem.

Так что, да, по- /dev/vdaвидимому, это одно из многих имен для какого-либо устройства, поскольку UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a, поскольку оба имени монтируются в «/».

Если вы посмотрите в каталоге /dev/disk/by-uuid/вы можете увидеть символические ссылки , которые указывают на такие вещи , как /dev/sda1, /dev/sdb1на моем сервере. Это может быть еще один способ проверить вашу гипотезу. /dev/diskподкаталоги by-id, by-path, by-uuidкоторые все кажутся альтернативные имена для того же самого устройства.

Брюс Эдигер
источник
В этом случае проблема (как обновлено в моем вопросе) состоит в том, что я получаю два разных UUID для /dev/vda! Пожалуйста, посмотрите вопрос еще раз.
its_me
1
Если я ответил на исходный вопрос, было бы неплохо пометить его как «отвеченный» и написать новый вопрос, просто чтобы вы не собирали нерелевантные ответы, ответы, которые работают с исходным, а не с измененным вопросом.
Брюс Эдигер