Jak skonfigurować obsługiwane urządzenie loopback?

23

Wiem, że mogę utworzyć i używać takiego urządzenia zwrotnego:

# Create the file
truncate disk.img --size 2G
# Create a filesystem
mkfs.ext4 disk.img
# Mount to use
mount disk.img /mnt
# Clean up
umount /mnt

Jednak w tym przypadku obraz dysku jest ustalony na 2 GB. Ma 2 GB, gdy jest pusta, i 2 GB, gdy jest pełna. Nie wzrośnie.

Czy istnieje coś w rodzaju sprzężenia zwrotnego, które może rosnąć? Czy może istnieje rodzaj sprzężenia zwrotnego, które potrzebuje tylko tyle miejsca, ile przechowuje?

phunehehe
źródło
1
Ponieważ plik jest rzadki, powinien zajmować tylko tyle miejsca, ile jest zapisane w twoim przykładzie.
jordanm,
W zależności od tego, co próbujesz osiągnąć, narzędzie virt-make-fsmoże być przydatne. Można go używać do tworzenia obrazów ext2 przy użyciu plików tar.
Kotte,

Odpowiedzi:

17

Utwórz urządzenie z rzadkimi plikami, używając dd.

df -hm # to show where we started
dd of=sparse-file bs=1k seek=102400 count=0 # creates a 100Meg sparsefile
mkfs.ext4 sparse-file
mkdir blah
mount sparse-file blah
cp somefile blah
ls -lahts sparse-file  # The 's' option will report the actual space taken in the first column
ls -lahts blah
df -hm # doublecheck my work
echo 'profit :)'

Odniesienie: artykuł w pliku wikipedia rzadki

Stephan
źródło
10

Komentarz @ jordanm go przybił. Przyjąłem, że rozmiar pliku został naprawiony, gdy spojrzałem na wynik ls -lh disk.img. Kiedy użyłem ls -s disk.imgjak w odpowiedzi @ Stephan, pokazany jest rzeczywisty rozmiar pliku. W ramach testu utworzyłem plik obrazu, który jest większy niż mój dysk twardy:

truncate test.img -s 1000G

I działa dobrze, co oznacza, że ​​odpowiedź jest w pytaniu :)

phunehehe
źródło
Truncate działa świetnie, przy okazji, pomyślałem, że pokażę alternatywne polecenie, aby utworzyć wspomniany rzadki plik i (w zależności od twojej dystrybucji linuksa i zestawu narzędzi), że niekoniecznie musisz używać LOSSUPT, ponieważ 'mount' w jego obecnym brzmieniu Wcielenie jest dość sprytne, jeśli chodzi o ustawianie rozsądnych opcji, gdy ich potrzebujesz.
Stephan
Trochę o mountie jest interesujące. Po prostu tym razem, ponieważ potrzebuję również LUKS (cryptsetup luksFormat / dev / loop0), potrzebuję losetup: D
phunehehe
Innym przydatnym poleceniem linux do utworzenia pliku rzadkiego jest fallocate(1).
Lloeki,
2

Możesz to zrobić ręcznie za pomocą dd seek lub łatwiej, ponieważ używasz obcinania:

truncate -s 100M file
mkfs.ext4 -m0 file
#mount, do whatever
umount /mountpoint
#let's grow it to 200 MB
truncate -s 200M file
e2fsck -f file && resize2fs file
#done

2 liniowiec do uprawy, prawie nie wymaga automatyzacji, śmiałbym powiedzieć :)

Malina Salina
źródło