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

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

Например, вот первая строка моего /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.

решение1

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

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

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

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

решение2

В таком случае, могу ли я изменить /etc/fstab следующим образом?

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

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

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

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

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

решение3

Вы можете сделать 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которые, по-видимому, являются альтернативными именами для одного и того же устройства.

Связанный контент