Что именно происходит, когда вы "монтируете" диск?
Какие основные вещи происходят, когда вы монтируете диск. Даже если диск не смонтирован, он виден компьютеру (например, sudo fdisk -l / diskutil -list). Когда монтируется диск, все, что происходит, это то, что ОС указывает путь к устройству, или происходит какая-то "волшебная" файловая система?
3 ответа
Когда файловая система монтируется с блочного устройства, будет сделано несколько приготовлений, включая
- Чтение информации о файловой системе, такой как тип файловой системы, версия, параметры, объем свободного места...
- Проверка, была ли файловая система выключена (размонтирована) должным образом в прошлый раз
- Проверка, доступно ли блочное устройство только для чтения (переключатель дискеты /SD-карты, CDROM/DVD).
- Воспроизведение операций, записанных в "журнале" файловой системы, если она есть.
Когда вы монтируете файловую систему Linux, такую как ext2, ext3, ext4, .. копия суперблока файловой системы будет находиться в памяти для дальнейших действий
Существует некоторая "волшебная" файловая система.
Это может помочь думать о вашей дисковой системе в слоях. Самый нижний уровень - это блочное устройство, затем разделы сверху, а затем файловая система сверху.
Когда диск монтируется, программа монтирования совместно с ядром и, возможно, /etc/fstab выясняет, какая файловая система находится на разделе, а затем реализует (через вызовы ядра) стандартные вызовы файловой системы, чтобы разрешить манипулирование файловой системой. включая чтение, письмо, листинг, разрешения и т. д.
На самом деле вы можете легко добавить дополнительные слои к этому, и все это работает одинаково. (Одним из распространенных является LVM, который расположен между разделом и файловыми системами и позволяет изменять размеры, добавлять и удалять диски даже в работающей файловой системе). Я упоминаю об этом, потому что это показывает, что есть нечто большее, чем просто указание пути к устройству.
Аналогично, разные ядра будут поддерживать разные файловые системы (например, некоторые могут включать ReiserFS, btrfs и т. Д.). Также возможно реализовать файловую систему (которая все еще может быть смонтирована и размонтирована), используя файлы в "пространстве пользователя" (fuse). Это, например, позволит монтировать виртуальные файловые системы, которые не являются частью ядра, или даже виртуальные файловые системы - например, у меня есть смонтированные каталоги FTP и даже удаленные пути по ssh как файловые системы (и, конечно, NFS и SAMBA), а также зашифрованные файлы и объединение нескольких каталогов для единой файловой системы - все это "виды магии", осуществляемые через ядро, обычно с помощью команды mount.