To jest artykuł.
Wirtualny system plików to system plików, który istnieje w pliku
kolej istnieje na dysku fizycznym. Jest wiele wspaniałych rzeczy, które możesz
zrobić z wirtualnymi systemami plików; powodem, dla którego się z nimi bawiłem, był
skonfigurować maszynę wirtualną na hoście linuxowym. Inne zastosowania obejmują
szyfrowanie systemów plików bez szyfrowania całych dysków; Mac OS X
Sejf plików szyfruje katalogi domowe użytkowników w ten sposób. Może poszedłeś
naprzód i zrobił sobie jedną gigantyczną partycję, a następnie zrealizował dla jednego
powód, dla którego chcesz mieć wiele partycji! Wirtualny
systemy plików mogą w tym pomóc (w pewnym stopniu).
Jak więc stworzyć wirtualny system plików? Łatwy. Pierwsza rzecz
trzeba zrobić plik, w którym będzie mógł funkcjonować system plików. To jest gdzie
'dd' zaczyna wchodzić. Rozważmy na przykład następujące polecenie:
dd if = / dev / zero z = ~ / myFileSystem.img bs = 1024 liczba = 1048576
Polecenie to odczyta 1 048 576 bloków z / dev / zero i napisze je
do ~ / myFileSystem.img; każdy blok ma 1024 bajty, co daje 1
plik gigabajta zawierający wszystkie zera. Rzeczywiste wartości, których używasz
ponieważ wielkość bloku (bs) i liczba nie są naprawdę ważne, kluczem jest
aby uzyskać prawidłową matematykę: bs * count = imageSize.
Więc teraz masz swój plik; świetny. Nadszedł czas, aby stworzyć system plików!
ta część jest jeszcze łatwiejsza ... stworzymy system plików EXT2, używając
następujące polecenie:
mke2fs myFileSystem.img
Możesz zauważyć ostrzeżenie, mówiąc, że myFileSystem.img nie jest
zablokuj urządzenie, czy chcesz kontynuować? Przejdziemy do tego w jednym
po drugie, na razie, śmiało i powiedz tak. Wszystko powinno być gładkie,
będzie wyglądać tak, jakbyś utworzył system plików na rzeczywistym dysku
napęd. Masz teraz wirtualny system plików! Jedyna rzecz do zrobienia
jest zamontowany system plików, dzięki czemu można uzyskać do niego dostęp ...
mkdir / mnt / virtual
mount -o loop ~ / myFileSystem.img / mnt / virtual
Teraz każdy plik, który umieścisz w / mnt / virtual, jest w rzeczywistości umieszczany bezpośrednio
w myFileSystem.img! Czy to nie było takie proste?
Fantastyczny. Skoro już wiesz, jak utworzyć wirtualny zbiór plików, dlaczego nie
zrobić wirtualny obraz dysku? Jaka jest różnica, o którą pytasz? Dysk
obraz będzie miał tablicę partycji, która definiuje pewną liczbę
partycje, a każda partycja zawiera własny system plików; więc a
wirtualny system plików jest w zasadzie „wirtualną partycją” wirtualnego
obraz dysku; obraz dysku wirtualnego zawiera wiele wirtualnych
systemy plików i wirtualna tablica partycji, która opisuje, gdzie
granice każdej partycji są.
Tworzenie obrazu dysku wirtualnego rozpoczyna się tak samo; pierwsza rzecz
potrzeba jest dużym pustym plikiem, właśnie utworzonym powyżej. Tym razem jednak
zamiast tworzyć system plików, będziemy chcieli podzielić plik na partycje
za pomocą fdisk. Aby uczynić rzeczy trochę przyjemniejszymi, zamierzamy
rzuć urządzenia loopback do miksu. Powinieneś się upewnić
obsługa urządzenia sprzężenia zwrotnego włączona w jądrze (większość dystrybucji to robi
domyślnie; ale jeśli jesteś kompilatorem jądra Linuksa, możesz
chcę sprawdzić). Stworzymy więc duży plik i dołączymy go do pętli zwrotnej
urządzenie w następujący sposób:
dd if = / dev / zero z = ~ / myDisk.img bs = 1024 liczba = 1048576
losetup / dev / loop0 ~ / myDisk.img
Dołączając obraz dysku do urządzenia pętli zwrotnej, możemy użyć
/ dev / loop0 w taki sam sposób, w jaki użylibyśmy ~ / myDisk.img; podstawowa różnica
jest to, że / dev / loop0 jest tak zwanym „urządzeniem blokowym”. Miałbyś
zapytać kogoś z większym doświadczeniem niż to, co mam dokładnie
dostaje cię, ale wiem, że narzędzia systemu plików działają
lepiej z urządzeniami blokowymi niż z plikami płaskimi. Plus, to jest
zabawa.
Tak dobrze, mamy duży pusty plik dołączony do urządzenia loopback
(/ dev / loop0) ... teraz nadszedł czas na utworzenie partycji na obrazie dysku.
Aby to zrobić, uruchomimy fdisk na naszym urządzeniu loopback:
fdisk / dev / loop0
Pozwala stworzyć trzy partycje ... jeśli to robisz, powinieneś
już znasz fdisk, więc utwórz następujące:
System Boot Start Start Blocks Id System
/ dev / loop0p1 1 17 136521 83 Linux
/ dev / loop0p2 18 80 506047+ 82 Wymiana Linuksa
/ dev / loop0p3 81 130 401625 83 Linux
Po utworzeniu partycji zapisz zmiany i zamknij fdisk.
Następnie musimy utworzyć systemy plików na każdej partycji.
Pamiętasz, jak łatwo było z powrotem z Virtual Filesystem? Nie tak
już dużo ...
Ale nie panikuj ... problem polega na tym, że „mkfs” nie mogą „sięgnąć”
nasz obraz dysku wirtualnego i stworzyć system plików tylko na indywidualne
przegroda. Rzeczywiście, jeśli spróbujesz, prawdopodobnie skończysz wycierać swoje
obraz dysku wirtualnego i konieczność ponownego uruchomienia fdisk. Więc co robić ... co
do zrobienia?? Urządzenia pętli zwrotnej na ratunek. To, co zrobimy, to dołączyć
urządzenie sprzężenia zwrotnego do pliku myDisk.img w określonych przesunięciach, gdzie
zaczyna się każda partycja.
Pomocne jest wtedy obejrzenie partycji w kategoriach bloków.
Wykonaj następujące polecenie:
fdisk -ul / dev / loop0
powinien wyglądać (miejmy nadzieję dokładnie) tak:
Dysk / dev / loop0: 1073 MB, 1073741824 bajty
255 głów, 63 sektory / tor, 130 cylindrów, łącznie 2097152 sektorów
Jednostki = sektory 1 * 512 = 512 bajtów
Device Boot Start End Blocks Id System
/ dev / loop0p1 63 273104 136521 83 Linux
/ dev / loop0p2 273105 1285199 506047+ 82 Wymiana systemu Linux
/ dev / loop0p3 1285200 2088449 401625 83 Linux
Te liczby są ważne dla matematyki ... użyjemy przegranej
polecenie, tak jak przedtem, tylko tym razem dotrzemy konkretnie
na początku każdej z trzech partycji. losetup przyjmuje offsety jako
liczba bajtów do pominięcia na początku pliku. Wyjście
z fdisk -ul / dev / loop0 pokazuje, że pierwsza partycja zaczyna się od
blok 63, i że każdy blok ma 512 bajtów. Więc partycja 1 zaczyna się od
bajt 32 256
losetup -o 32256 / dev / loop1 / dev / loop0
To polecenie osiąga 32 256 bajtów w / dev / loop0 i montuje je w
/ dev / loop1. Pamiętaj, że od dołączenia / dev / loop0 do myDisk.img
plik jest taki sam, jak osiągnięcie 32 256 bajtów w tym pliku ...
śledzić? Ok dobrze. Ta sama logika dla partycji 2 i 3:
losetup -o 139829760 / dev / loop2 / dev / loop0
losetup -o 658022400 / dev / loop3 / dev / loop0
Mamy teraz cztery urządzenia loopback; / dev / loop0 jest dołączony do
plik myDisk.img. / dev / loop1 to pierwsza partycja wirtualna
dysk reprezentowany przez / dev / loop0; / dev / loop2 to 2-ty i / dev / loop3
jest 3-ty.
Teraz nadszedł czas, aby stworzyć te systemy plików! Tak jest teraz
łatwe jak tworzenie zwykłego systemu plików, ponieważ to wszystko robimy.
Pamiętaj, że mkfs nie wie, że urządzenie nie jest urządzeniem fizycznym! Dobrze
zrobić trzy rodzaje systemów plików, system plików ext2 dla partycji 1,
system wymiany plików dla partycji 2 i system plików XFS dla partycji
3:
mkfs / dev / loop1
mkswap / dev / loop2
mkfs.xfs / dev / loop3
Ponieważ loop1, loop2 i loop3 są związane bezpośrednio z loop0, a loop0 jest
~ / myDisk.img, wszystko, co tylko zrobiliśmy do loop1, loop2 i loop3
dotyczy bezpośrednio myDisk.img! Możemy teraz zamontować / dev / loop3, dla
instancja na / mnt / virtual jako system plików XFS i używaj jej jako
zwykły system plików!
Mam więc nadzieję, że uznasz to za pomocne ... możesz zrobić całkiem fajne rzeczy
z wirtualnymi systemami plików i obrazami dysków wirtualnych; i pętla zwrotna
urządzenia sprawiają, że wszystko staje się gładkie.