Wcześniej tworzyłem pliki obrazów za pomocą dd
, konfigurowałem system plików na nich za pomocą mkfs
i mount
, aby uzyskać do nich dostęp jako zamontowane partycje. Później widziałem w Internecie, że wiele przykładów używa losetup
wcześniej, aby wejść do urządzenia pętli /dev
, a następnie zamontować. Nie mogłem powiedzieć, dlaczego praktycznie potrzebny jest plik obrazu, który zachowuje się jak urządzenie pętlowe i ma swój własny /dev
wpis, podczas gdy takie samo zachowanie można uzyskać bez wszystkich kłopotów.
Podsumowanie: W prawdziwym scenariuszu, dlaczego w ogóle potrzebujemy /dev/loopX
wpisu, skoro możemy po prostu zamontować obraz fs bez niego? Jaki jest pożytek z urządzenia pętli?
mount
jest wystarczająco sprytny, aby zrobić dla ciebie kłopot. (jak pokazuje Stephen Harris w swojej odpowiedzi)Odpowiedzi:
Montowania zazwyczaj należy wykonywać na urządzeniach blokowych. Sterownik pętli umieszcza nakładkę urządzenia blokującego w pliku danych.
Jeśli wykonasz montaż w pętli bez,
losetup
system operacyjny zrobi to w tle.na przykład
Może być konieczne
losetup
bezpośrednie wywołanie, jeśli obraz pliku ma osadzone partycje.np. jeśli mam ten obraz:
Nie mogę tego zamontować bezpośrednio
Ale jeśli używam,
losetup
akpartx
następnie mogę uzyskać dostęp do partycji:źródło
losetup
, po prostu użyjmount -o loop,offset=$((512*2048))
, gdzie512
jest rozmiar sektora i2048
to, cofdisk
podanoStart
na partycji.losetup
i sprawiedliwiekpartx
. Niech narzędzia wykonają ciężką pracę :-)Systemy plików oczekują odczytu i zapisu na urządzeniach blokowych, ale pliki obrazów nie są urządzeniami blokowymi. Urządzenia pętli zapewniają urządzenie blokowe na górze pliku (lub inne urządzenie blokowe, opcjonalnie z odwzorowaniem).
W wielu przypadkach nie trzeba
mount
brać pod uwagę urządzeń pętlowych, ponieważ dba o wszystko za Ciebie; ale urządzenia pętlowe są nadal zaangażowane.losetup -l -a
pokaże im.Zobacz także Jaka jest różnica między mount a mount -o loop .
źródło
mount
?mount
zajmuje sięlosetup
dodawaniem-o loop
itp.Wygląda na to, że jesteś w systemie Linux, a Linux używa niewłaściwej nazwy dla tej funkcji.
Wynalazłem tę funkcję w 1988 roku na SunOS-4.0 i nazywam ją
fbk
- File emuluje urządzenie BlocK.Tło jest takie, że sterownik urządzenia emuluje urządzenie blokowe na zwykłym pliku. Potrzebujesz tego, ponieważ system plików nie może używać zwykłego pliku jako pamięci w tle dla systemu plików. Potrzebuje raczej urządzenia blokowego i to właśnie
fbk
emuluje.Od pewnego czasu niektóre osoby uczyniły program
mount
nieco bardziej sprytnym i istnieją implementacje montowania, które automatycznie tworząfbk
instancję dla pliku na wypadek, gdybymount
program wykrył, że argument, który ma być urządzeniem blokowym, wydaje się być plikiem planu.źródło
lofi
(„plik pętli zwrotnej”), które działało podobnie; BSD wprowadziło je pod nazwąvnd
(„dysk vnode”), więc koncepcja na przestrzeni lat miała wiele różnych nazw.Nawet jeśli nie byłby potrzebny w tle do montowania systemów plików z plików, nadal byłby potrzebny do każdej instalacji za pomocą sterownika lub programu, który absolutnie oczekuje urządzenia blokującego. Pomyśl o serwerach NBD (Network Block Device), sterownikach urządzeń złożonych, takich jak mdraid, lvm itp.
źródło