Проблемы с пониманием концепции монтажа


13

Прочитав оба, что подразумевается под монтированием устройства в Linux? и понимание «монтирования» как концепции в ОС , у меня есть проблема, где утверждается, что

Все доступное хранилище должно иметь соответствующее местоположение в этом единственном дереве каталогов. Это не похоже на Windows, где (в наиболее распространенном синтаксисе путей к файлам) существует одно дерево каталогов на компонент хранения (диск). Монтирование - это процесс привязки устройства хранения к определенному месту в дереве каталогов.

Но уже есть доступное место, скажем, для диска cdrom в / dev / cdrom, которое, очевидно, входит в иерархию каталогов. Так зачем создавать отдельную «точку монтирования» в / media / cdrom? Почему доступ напрямую из / dev / cdrom невозможен? Я слышал, что файлы узлов устройства похожи на обычные файлы. И чтение и запись к ним, как обычные файлы. Значит ли это, что файловая система в cdrom недоступна, если мы обращаемся к ней из / dev / cdrom. И иерархия файловой системы (внутри компакт-диска) «оживает», когда мы «монтируем» ее?

Ответы:


11

Вы можете читать или писать / dev / cdrom (например, используя ddили cat), но когда вы делаете это, вы просто читаете или записываете необработанные байты устройства. Это может быть полезно в различных обстоятельствах (например, клонирование раздела), но обычно мы хотим видеть каталоги и файлы, хранящиеся на устройстве.

Когда вы монтируете устройство, вы в основном говорите ядру использовать слой программного обеспечения (драйвер файловой системы) для преобразования этих необработанных байтов в настоящую файловую систему. Таким образом, монтирование устройства связывает файловую систему на этом устройстве с иерархией каталогов.


8

Я думаю об этом следующим образом: mountэто инструмент, который говорит системе интерпретировать содержимое некоторых файлов как деревья каталогов.

  • Файловая система имеет каталоги и файлы, и каждый файл является меткой для некоторой строки байтов.
  • /dev/cdrom это файл, он представляет строку байтов, хранящихся на компакт-диске.
  • Вы можете прочитать эту очень длинную строку напрямую, но это не очень практично, за исключением специальных целей (например, создание полного образа диска).
  • Эта длинная строка имеет дополнительную внутреннюю структуру: она содержит файловую систему, которая содержит информацию о том, какие каталоги и файлы хранятся и где находится эта очень длинная строка.
  • Используя mount -t iso9660 /dev/cdrom /media/cdrom, вы говорите системе: «возьмите эту очень длинную строку байтов, в которой вы находитесь /dev/cdrom, интерпретируйте ее как дерево каталогов в формате iso9660 и разрешите мне получить к нему доступ по расположению /media/cdrom».
  • На самом деле, это работает и для обычных файлов. Вы можете создать обычный файл, содержащий образ диска, а затем использовать mountдля доступа к нему. Попробуй это:
дд если = / dev / zero of = fs-image bs = 1M count = 50
mke2fs fs-image
sudo mount fs-image / some / mount / point

(первые две команды требуются только в первый раз, при подготовке файла изображения.)


Зачем тебе нужно mke2fs?
ADTC

Создать пустую файловую систему ext2 внутри файла изображения. Пустая файловая система - это не все нули - она ​​имеет некоторые метаданные и фиксированные структуры, так же как пустой документ Word или LibreOffice имеет некоторый ненулевой размер и содержит информацию, например, о шрифте по умолчанию и размере страницы.
Кшиштоф Косинский

О, хорошо, это потенциально разрушительное действие. Предлагаем вам упомянуть, что эта команда только для первоначальной инициализации. :)
ADTC

5

/dev/cdromссылается на файл устройства . Это не содержимое какого-либо диска, который вы, возможно, захотите вставить в свой оптический привод, а скорее ссылка на аппаратное обеспечение (и, возможно, драйверы программного обеспечения), к которому вы можете обратиться, чтобы показать это вам. Когда вы переходите mount /dev/cdromк какому-либо пути в своем дереве, вы присоединяете его содержимое к вашей файловой системе .

Дело в том, что я не могу придумать другой способ сделать это. Даже в Windows, хотя это и не так очевидно, есть абстракция файловой системы \\?\volumename\. Мне потребовалась минута, чтобы вспомнить, как это выглядело, и я нашел это, прибегая к помощи :

... имя тома - это просто символическая ссылка, которая указывает на реальное устройство тома, обычно в форме \Device\HarddiskVolume23. Есть еще один пример устройства MS-DOS - буква диска. Если у вашего тома есть буква диска C :, тогда у вас будет символическая ссылка \\?\C:, которая указывает на реальный том в \Device\HarddiskVolumeXXформате.

И поэтому, может быть, это не так уж и отличается - хотя я бы сказал, менее сложным - это просто более очевидно , я думаю. Это не одна и та же система, но они также не принципиально отличаются.

Вероятно, самое важное различие между /dev/deviceи /path/to/its/mountзаключается в том, что на последнем пути файловая система - некоторая часть программного обеспечения, предназначенная для организованной обработки данных - интерпретирует содержание первого. Вы не можете просто прочитать диск - кто-то должен прочитать его вам. Файловая система интерпретирует содержимое устройства.


Это несколько вводит в заблуждение. Если вы откроете /dev/cdromв шестнадцатеричном редакторе, он на самом деле содержит сырое содержимое компакт-диска. Используя его, mountвы просто указываете ОС интерпретировать это содержимое как дерево каталогов.
Кшиштоф Косински

0

В дополнение к элементам, упомянутым выше, драйвер или другая программа может кэшировать данные с устройства. На устройстве чтения-записи, таком как жесткий диск или флэш-накопитель, данные, записанные на устройство, возможно, еще не были записаны. Журналирование файловых систем также может потребовать очистки журнала, прежде чем он больше не увидит устройство. Затем у вас есть файловые системы, которые перекрывают другие файловые системы, такие как cryptfs, которые должны знать, когда основная файловая система больше не доступна.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.