Например, вот первая строка моего /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
Можно ли из этих двух вывести, что
UUID=050e1e34-39e6-4072-a03e-ae0bf90ba13a
представляет собой/dev/vda
, учитывая, что первый столбецfstab
равен<file system>
?Итак, ничего, если я внесу
/etc/fstab
в него изменения?/dev/vda / ext4 errors=remount-ro 0 1
РЕДАКТИРОВАТЬ:Если да (на вопрос выше), почему
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
которые, по-видимому, являются альтернативными именами для одного и того же устройства.