Проблема з розумінням концепції монтажу


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для доступу. Спробуйте це:
dd, якщо = / dev / zero of = fs-image bs = 1M count = 50
mke2fs fs-образ
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

Окрім згаданих вище елементів, драйвер чи інша програма можуть кешувати дані з пристрою. На пристрої читання-запису, такому як жорсткий диск або привід великого пальця, дані, записані на пристрій, можливо, ще не були записані. Файлові системи журналів також можуть вимагати промивання журналу, перш ніж він більше не побачить пристрій. Тоді у вас є файлові системи, які накладають інші файлові системи, наприклад, криптовалюти, яким потрібно знати, коли базова файлова система більше недоступна.

Зрозуміло, що для пристрою, доступного лише для читання, це має менший сенс, але воно все ж застосовується.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.