Czy istnieje sposób, aby wziąć plik Img dysku, który jest podzielony na części i zamontować go jako urządzenie z jedną pętlą?
Czy istnieje sposób, aby wziąć plik Img dysku, który jest podzielony na części i zamontować go jako urządzenie z jedną pętlą?
Odpowiedzi:
Nie sądzę, że możesz to zrobić na miejscu, ale jeśli masz wystarczająco dużo miejsca, powinno to działać:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
Nie można po prostu utworzyć macierzy RAID z oryginalnych plików, ponieważ dyski RAID mają określony nagłówek, w którym przechowywana jest liczba dysków, poziom RAID itp. Jeśli to zrobisz, część oryginalnych plików zostanie zastąpiona.
Możesz użyć mdadm --build
do utworzenia tablicy bez metadanych, ale wtedy naprawdę powinieneś najpierw wykonać kopię zapasową. Lub jeśli wystarczy montować tylko do odczytu:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
Dlaczego chcesz to zrobić? Jeśli twój system plików nie obsługuje plików> 4 GB, powinieneś po prostu przełączyć się na rozsądny.
truncate
zamiast, dd
ponieważ jest znacznie szybszy (nie wykonuje rzeczywistego zapisu do FS, a jedynie przydziela i-węzły i zaznacza plik jako zawierający tylko dziurę).
Aby zamontować obraz podzielonego dysku (lub obraz partycji), powinieneś użyć affuse
z afftools, które są obecnie utrzymywane tutaj: https://github.com/sshock/AFFLIBv3
Jeśli masz plik, podziel go na kilka podtekstów test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009
możesz dołączyć do nich wirtualnie affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(łączy to wszystkie pliki, zaczynając od pliku 000, a następnie 001, 002,…)
A następnie zamontuj obraz
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
Użycie opisano tutaj i kilka przykładów tutaj . Strona podręcznika dostępna jest również po skompilowaniu i zainstalowaniu lub tutaj .
PS: Dla mnie affuse
działało tylko wtedy, gdy podzielone pliki miały rozmiar wielokrotności 512 bajtów.
Możesz napisać własne rozszerzenie blokowego urządzenia pamięci masowej (pomyśl o rozszerzeniu podobnym do bezpiecznika) i wykonywać wyszukiwania w zależności od adresu.
Tutaj możesz znaleźć przykład użycia bezpiecznika https://github.com/libfuse/python-fuse/blob/master/example/hello.py
Najbliżej znane mi rozwiązanie to stworzenie VMware VM. Zaczynasz na żywo CD z Linuksem, jak Rescatux lub Knoppix, tworzysz folder współdzielony SMB na komputerze-hoście, montujesz ten udział SMB na maszynie wirtualnej, a następnie dd
obraz na wirtualnym HD. VMware domyślnie zapisuje obrazy dysku jako podzielone pliki, więc jest to najbliższa rzecz do bezpośredniego odczytu obrazu dysku podzielonego na wiele plików.
Później, jeśli chcesz uzyskać dostęp do plików z komputera hosta, możesz spróbować dodać drugi wirtualny HD do obrazu i skopiować tam pliki. Następnie konfigurujesz folder współdzielony SMB na maszynie wirtualnej i łączysz się z nim z hosta. W ten sposób możesz na przykład przekroczyć limit 4 GB pliku FAT32 w przypadku korzystania z iPoda Classic (który tylko groks fat32) lub karty SD smartfona (zwykle musisz zainstalować niestandardową pamięć ROM, aby aby używać Ext3 lub NTFS na zewnętrznej pamięci, do tego potrzebny jest telefon popularnego producenta, takiego jak Samsung czy Motorola, więc jeśli masz chiński smartfon, jesteś zaskoczony.
Nie jest to wprawdzie wydajne rozwiązanie, ale ponieważ ograniczyło mnie to, że nie jestem w stanie korzystać z FS innego niż fat32 na moim iPodzie Classic lub smartfonach Samsung ze standardową pamięcią ROM, przeszukałem prawie cały internet w w przeszłości i nadal nie jestem w stanie znaleźć skutecznego rozwiązania tego problemu. Może nawet będę musiał to napisać.
PS: Zapomniałem wspomnieć, że jeśli korzystasz z systemu Windows, może to być jedyny sposób, aby to zrobić.
Pod BSD możesz użyć opcji union do zamontowania. Pod Linuksem możesz spróbować unionFS.