Чи є спосіб взяти файл 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
афілерами, які зараз підтримуються тут: 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 VM. Ви запускаєте живий компакт-диск Linux на зразок Rescatux або Knoppix, створюєте загальну папку SMB на своєму хост-комп'ютері, встановлюєте цей спільний доступ до SMB у своєму VM, а потім переводите dd
зображення у віртуальний HD. За замовчуванням VMware зберігає свої дискові зображення як розділені файли, тому це найближче зачитування зображення диска, розділеного на кілька файлів.
Пізніше, якщо ви хочете отримати доступ до файлів з хост-комп'ютера, ви можете спробувати додати до зображення друге віртуальне HD та скопіювати туди файли. Потім ви налаштували загальну папку SMB у VM та підключитесь до неї від свого хоста. Таким чином, ви можете, наприклад, порушити ліміт файлів на 4 Гб FAT32 у випадку, якщо ви користуєтесь iPod Classic (який лише заробляє fat32) або SD-карткою вашого смартфона (зазвичай вам потрібно встановити користувальницький ПЗУ для того, щоб щоб використовувати Ext3 або NTFS на зовнішньому сховищі, для цього вам потрібен телефон від такого популярного виробника, як Samsung або Motorola, тож якщо у вас китайський смартфон, ви натикаєтесь).
Це, правда, не є ефективним рішенням, але, оскільки я обмежений тим, що не маю можливості використовувати будь-який інший FS, крім fat32, на своєму iPod Classic або на своїх смартфонах Samsung із запасом ROM, я дуже багато переглянув весь Інтернет. минуле і досі не в змозі знайти ефективного рішення цього. Можливо, мені доведеться навіть сам це написати.
PS: Забув згадати, що якщо ви працюєте в Windows, це може бути єдиний спосіб зробити це.
Під BSD ви можете використовувати опцію з'єднання для монтажу. У Linux можна спробувати unionFS.