Вопрос или проблема
Правильно ли сказать, что для не смонтированной файловой системы единственный способ указать ее – это указать на ее основный раздел?
Для смонтированной файловой системы можем ли мы указать ее как указав ее основной раздел или указав ее точку монтирования? Особенно, может ли файловая система когда-либо быть указана по своей точке монтирования?
Спасибо.
Вы также можете указать не смонтированную файловую систему по ее метке или UUID. У вас могут быть записи, такие как “LABEL=foobar” или “UUID=00000000-0000-0000-0000-000000000000” в вашем /etc/fstab
.
Насколько я знаю, это обрабатывается udev
: когда он обнаруживает раздел, он считывает его UUID и LABEL, и добавляет ссылки на раздел в /dev/disk/by-uuid
и /dev/disk/by-label
.
Метка может содержать точку монтирования, так что вы можете ссылаться на раздел по его точке монтирования.
Скажем иначе.
Как вы можете что-то указать? Вам нужно уникально описать это, по крайней мере, не вызвать путаницы. Путь, без контекста, вы не можете действительно знать, на что он ссылается, это может быть просто путь, или устройство с его номером устройства, или файл узла устройства или файловая система, хранящаяся на устройстве с его номером устройства.
resize2fs
получает строку от вас и интерпретирует ее как путь к файлу устройства и думает, что вы хотите изменить размер файловой системы, которая находится на соответствующем устройстве.
В то время как другие инструменты или API могут не использовать то же предположение. chmod
также получает строку от вас и интерпретирует ее как путь к файлу, но просто изменяет разрешения этого inode вместо того, чтобы касаться соответствующего устройства или даже файловой системы, находящейся на нем. chmod
даже не беспокоится о том, является ли это узлом устройства или нет.
В основном, вы должны различать “указание файловой системы” и “фактическая возможность найти эту файловую систему”.
Когда вы указываете блочное устройство для монтирования (например, раздел), его нахождение тривиально.
Аналогично, при указании точки монтирования смонтированной файловой системы это также тривиально для ядра, потому что оно помнит, откуда файловая система была смонтирована.
Теперь, если вы укажете точку монтирования для файловой системы, которая еще не смонтирована, это изначально неясно (вы можете смонтировать любое блочное устройство в любую точку монтирования).
Однако, если у вас есть /etc/fstab
, команда mount
(не ядро) может искать точку монтирования, которую вы указали в /etc/fstab
, и если она ее найдет, то может использовать соответствующее блочное устройство для монтирования.
Например, учитывая запись в fstab
/dev/sys/var /var ext3 acl,user_xattr 1 2
Вы можете использовать mount /var
или mount /dev/sys/var
, но если этой строки не существует, вам придется указать все необходимые параметры.
Ответ или решение
Файловые системы и их точки монтирования — важные аспекты работы с операционными системами. Давайте рассмотрим, может ли файловая система быть указана своей точкой монтирования.
Указание файловой системы
-
Неразмонтированная файловая система:
Если файловая система не смонтирована, обычно она указывается по устройству (например, разделу диска). При этом можно использовать также метки (LABEL) или уникальные идентификаторы (UUID) для указания на конкретную файловую систему. Это позволяет системе точно идентифицировать нужную файловую систему на устройстве. Например, в файле/etc/fstab
могут быть записи видаLABEL=foobar
илиUUID=00000000-0000-0000-0000-000000000000
.В этом случае поиск системы осуществляется через
udev
, который считывает значения UUID и метки и создает соответствующие ссылки в/dev/disk/by-uuid
и/dev/disk/by-label
. -
Размонтированная файловая система:
Для смонтированной файловой системы возможно указание как самого устройства, так и точки монтирования. Однако важно понимать, что точка монтирования лишь указывает на место в файловой структуре, где файловая система доступна, и сама по себе не определяет файловую систему. Если необходимо указать смонтированную файловую систему, обращение к её точке монтирования возможно и для этого достаточно записей в/etc/fstab
.
Указание файловой системы по точке монтирования
С точки зрения операционной системы, для смонтированной файловой системы указание через точку монтирования действительно возможно. Когда файловая система монтируется, ядро схематически учитывает, с какого устройства она была загружена. Например, если у вас есть запись в /etc/fstab
следующего вида:
/dev/sys/var /var ext3 acl,user_xattr 1 2
Вы можете использовать как mount /var
, так и mount /dev/sys/var
, чтобы выполнить операцию монтирования. Если же такой записи в fstab
не было, необходимо будет указать все параметры файловой системы, что значительно усложнит процесс.
Параллели с командами
Различные команды, манипулирующие файловыми системами, могут по-своему интерпретировать путь или устройство. Например, команда resize2fs
ожидает от вас строки, которая воспринимается как путь к устройству, с последующим изменением его размера, тогда как команда chmod
просто меняет разрешения для указанного файла независимо от того, с какой файловой системой он связан.
Заключение
Таким образом, можно четко заявить:
- Для размонтированной файловой системы указание осуществляется в первую очередь через устройство, а также через метки или UUID.
- Для смонтированной файловой системы указание возможно как по устройству, так и по точке монтирования, но для этого должна existовать запись в
/etc/fstab
, обеспечивающая соответствие между точкой монтирования и устройством.
Ключевым моментом является отличение самого факта "указания" от "поиска" файловой системы в контексте её текущего состояния — монтированной или размонтированной.