Problem ze zrozumieniem koncepcji montażu

13

Po przeczytaniu obu Co oznacza montaż urządzenia w systemie Linux? i rozumiejąc „mount” jako koncepcję w systemie operacyjnym , mam problem tam, gdzie jest to powiedziane

Cała dostępna pamięć musi mieć powiązaną lokalizację w tym pojedynczym drzewie katalogów. W przeciwieństwie do systemu Windows, w którym (w najczęstszej składni ścieżek plików) istnieje jedno drzewo katalogów na komponent pamięci (dysk). Montowanie polega na powiązaniu urządzenia pamięci masowej z określoną lokalizacją w drzewie katalogów.

Ale jest już dostępna lokalizacja dla, powiedzmy, napędu cdrom w / dev / cdrom, który oczywiście znajduje się w hierarchii katalogów. Skąd więc potrzeba utworzenia osobnego „punktu montowania” w katalogu / media / cdrom? Dlaczego dostęp bezpośrednio z / dev / cdrom jest niemożliwy? Słyszałem, że pliki węzłów urządzeń są jak zwykłe pliki. A czytanie i pisanie do nich jest jak zwykłe pliki. Czy to oznacza, że ​​system plików w cdrom nie będzie dostępny, jeśli uzyskamy do niego dostęp z / dev / cdrom. A hierarchia systemu plików (wewnątrz cdrom) „ożywa”, kiedy ją „zamontujemy”?

sounak
źródło

Odpowiedzi:

11

Możesz czytać lub pisać / dev / cdrom (np. Używając ddlub cat), ale kiedy to robisz, po prostu czytasz lub zapisujesz nieprzetworzone bajty urządzenia. Może to być przydatne w różnych okolicznościach (np. Klonowanie partycji), ale generalnie chcemy widzieć katalogi i pliki przechowywane na urządzeniu.

Kiedy montujesz urządzenie, po prostu mówisz jądru, aby używało warstwy oprogramowania (sterownika systemu plików) do tłumaczenia tych bajtów na rzeczywisty system plików. W ten sposób podłączenie urządzenia wiąże system plików na tym urządzeniu z hierarchią katalogów.

PM 2 Ring
źródło
8

Myślę o tym w następujący sposób: mountto narzędzie, które każe systemowi interpretować zawartość niektórych plików jako drzewa katalogów.

  • System plików ma katalogi i pliki, a każdy plik jest etykietą dla pewnego ciągu bajtów.
  • /dev/cdrom jest plikiem, reprezentuje ciąg bajtów przechowywanych na dysku CD.
  • Możesz przeczytać ten bardzo długi ciąg bezpośrednio, ale nie jest to zbyt praktyczne, z wyjątkiem specjalnych celów (np. Tworzenia pełnego obrazu dysku).
  • Ten długi ciąg ma dodatkową wewnętrzną strukturę: zawiera system plików, który zawiera informacje o tym, jakie katalogi i pliki są przechowywane i gdzie w tym bardzo długim ciągu.
  • Używając mount -t iso9660 /dev/cdrom /media/cdrom, mówisz systemowi: „weź ten bardzo długi ciąg bajtów, w którym masz /dev/cdrom, zinterpretuj go jako drzewo katalogów w formacie iso9660 i pozwól mi uzyskać do niego dostęp pod tą lokalizacją /media/cdrom”.
  • W rzeczywistości działa to również w przypadku zwykłych plików. Możesz utworzyć zwykły plik zawierający obraz dysku, a następnie użyć go, mountaby uzyskać do niego dostęp. Spróbuj tego:
dd if = / dev / zero of = fs-image bs = 1M count = 50
mke2fs fs-image
sudo mount fs-image / some / mount / point

(pierwsze dwa polecenia są wymagane tylko przy pierwszym przygotowaniu pliku obrazu).

Krzysztof Kosiński
źródło
Dlaczego trzeba mke2fs?
ADTC
Aby utworzyć pusty system plików ext2 w pliku obrazu. Pusty system plików to nie wszystkie zera - ma pewne metadane i stałe struktury, podobnie jak pusty dokument Word lub LibreOffice ma niezerowy rozmiar i zawiera informacje na temat np. Domyślnej czcionki i rozmiaru strony.
Krzysztof Kosiński
Och OK, to potencjalnie destrukcyjne działanie. Sugeruj, aby wspomnieć, że to polecenie służy tylko do pierwszej inicjalizacji. :)
ADTC
5

/dev/cdromodnosi się do pliku urządzenia . To nie jest zawartość dysku, który chcesz włożyć do napędu optycznego, ale jest to odniesienie do części sprzętu (i prawdopodobnie sterowników oprogramowania), którą możesz wywołać, aby ci to pokazać. Przechodząc mount /dev/cdromdo ścieżki w drzewie, dołączasz jej zawartość do systemu plików .

Chodzi o to, że tak naprawdę nie mogę wymyślić innego sposobu. Nawet w systemie Windows - choć nie jest to tak oczywiste - nadal istnieje abstrakcja systemu plików \\?\volumename\. Minęło kilka minut, zanim przypomniałem sobie, jak to wyglądało, i znalazłem googlowanie :

... nazwa woluminu jest tylko dowiązaniem symbolicznym, które wskazuje na prawdziwe urządzenie woluminu, zwykle w formie \Device\HarddiskVolume23. Istnieje inny przykład urządzenia MS-DOS, którym jest litera dysku. Jeśli twój wolumin ma literę C:, będziesz mieć symboliczne łącze o nazwie \\?\C:, które wskazuje na prawdziwy wolumin w \Device\HarddiskVolumeXXformacie.

I może więc nie jest tak inaczej - choć twierdziłbym, że mniej skomplikowane - wydaje mi się, że jest po prostu bardziej oczywiste . Nie są jednym i tym samym systemem, ale nie są też zasadniczo różne.

Prawdopodobnie najważniejsze rozróżnienie między /dev/devicei /path/to/its/mountpolega na tym, że na drugiej ścieżce system plików - trochę oprogramowania służącego do obsługi danych w zorganizowany sposób - interpretuje zawartość tego pierwszego. Nie możesz po prostu odczytać dysku - ktoś musi ci go przeczytać. System plików interpretuje zawartość urządzenia.

mikeserv
źródło
Jest to nieco mylące. Jeśli otworzysz /dev/cdromw edytorze szesnastkowym, faktycznie zawiera on surową zawartość płyty CD-ROM. Używając tego mount, po prostu powiedz systemowi operacyjnemu, aby zinterpretował tę zawartość jako drzewo katalogów.
Krzysztof Kosiński
0

Oprócz wyżej wymienionych elementów sterownik lub inny program może buforować dane z urządzenia. Na urządzeniu do odczytu i zapisu, takim jak dysk twardy lub napęd USB, dane zapisane na urządzeniu mogły jeszcze nie zostać zapisane. Systemy plików kronikowania mogą również wymagać opróżnienia kroniki, zanim nie będzie już widzieć urządzenia. Następnie masz systemy plików, które nakładają się na inne systemy plików, takie jak cryptfs, które muszą wiedzieć, kiedy podstawowy system plików nie jest już dostępny.

To prawda, że ​​w przypadku urządzenia tylko do odczytu ma to mniej sensu, ale nadal obowiązuje.

Joe Sewell
źródło