Есть ли способ взять файл img диска, который разбит на части, и смонтировать его как одноконтурное устройство?
Есть ли способ взять файл img диска, который разбит на части, и смонтировать его как одноконтурное устройство?
Ответы:
Я не думаю, что вы можете сделать это на месте, но если у вас достаточно места, это должно сработать:
# 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
Вы не можете просто создать массив RAID из исходных файлов, поскольку диски RAID имеют специальный заголовок, в котором хранится количество дисков, уровень RAID и т. Д. Если вы сделаете это, то часть ваших исходных файлов будет перезаписана.
Вы можете использовать mdadm --build
для создания массива без метаданных, но тогда вы действительно должны сначала сделать резервную копию. Или если монтирования только для чтения достаточно:
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
почему ты хочешь сделать это? Если ваша файловая система не может обрабатывать файлы> 4 ГБ, вам следует просто переключиться на нормальную.
truncate
вместо, dd
поскольку он намного быстрее (он не выполняет фактическую запись в FS, а просто выделяет иноды и помечает файл как просто содержащий отверстие).
Чтобы смонтировать разделенный образ диска (или образ раздела), вы должны использовать affuse
из afftools, которые в настоящее время поддерживаются здесь: https://github.com/sshock/AFFLIBv3
Итак, если у вас есть файл, разбейте его на несколько подфайлов 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
тогда вы можете присоединиться к ним практически с 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
(это объединяет все файлы, начиная с файла 000, затем 001, 002,…)
А затем смонтировать образ
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
Использование описано здесь и некоторые примеры здесь . Справочная страница также доступна после компиляции и установки или здесь .
PS: для меня affuse
работало, только если размер разделенных файлов был кратным 512 байтам.
Вы можете написать свое собственное расширение блочного устройства хранения (подумайте о расширении в виде плавкого предохранителя) и выполнять поиск в зависимости от того, какой адрес.
Здесь вы можете найти пример использования предохранителя https://github.com/libfuse/python-fuse/blob/master/example/hello.py
Самое близкое, что я знаю до сих пор, - это создание виртуальной машины VMware. Вы запускаете Linux live CD, такой как Rescatux или Knoppix, вы создаете общую папку SMB на своем хост-компьютере, вы монтируете этот общий ресурс SMB на вашей виртуальной машине, а затем вы помещаете dd
образ в виртуальный HD. VMware по умолчанию сохраняет свои образы дисков в виде разделенных файлов, так что это самая близкая вещь для непосредственного чтения образа диска, разделенного на несколько файлов.
Позже, если вы хотите получить доступ к файлам с вашего хост-компьютера, вы можете попробовать добавить второй виртуальный HD к образу и скопировать туда файлы. Затем вы настраиваете общую папку SMB на виртуальной машине и подключаетесь к ней со своего хоста. Таким образом, вы можете, например, нарушить ограничение в 4 ГБ для файла FAT32 в случае, если вы используете iPod Classic (который использует только fat32) или SD-карту вашего смартфона (обычно вам нужно установить пользовательское ПЗУ, чтобы чтобы использовать Ext3 или NTFS на внешнем хранилище, для этого вам понадобится телефон от популярного производителя, такого как Samsung или Motorola, поэтому, если у вас есть китайский смартфон, вы в тупике).
Однако, по общему признанию, это неэффективное решение, но, поскольку я был ограничен тем, что не смог использовать на своем iPod Classic или на смартфонах Samsung со стандартным ПЗУ любую ФС, кроме fat32, я в значительной степени исследовал весь Интернет в Интернете. Прошлое и до сих пор не могу найти эффективное решение для этого. Я мог бы даже написать это сам.
PS: забыл упомянуть, что если вы используете Windows, это может быть единственным способом сделать это.
Под BSD вы можете использовать опцию объединения для монтирования. Под Linux вы можете попробовать unionFS.