Використовуйте програму losetup та dd, щоб зробити зображення файлових систем готовими до розгортання


4

Вступ

Використовуючи dd, можна легко створити резервну копію таблиці MBR та розділів на диску. Це так просто, як:dd if=/dev/disk2 of=~/Desktop/disk2_mbr bs=512 count=1

Можна також створити резервну копію цілих розділів: dd if=/dev/disk2s1 of=~/Desktop/disk2_partition1

І навпаки, це також працює: з dd if=~/Desktop/disk2_mbr of=/dev/disk3, можна замінити інший диск MBR та таблицю розділів ( будьте обережні, втрата даних на диску3 ).

Потім, щоб відновити перший розділ, потрібно: dd if=~/Desktop/disk2_partition1 of=/dev/disk3s1

(Справа в ddтому, що MBR та розділ розділяються лише на тому, що вам не потрібно ddвесь диск; якщо ваш розділ невеликий, він буде набагато швидшим.)

Добре, вся ця магія дд працює чудово для мене. Це робить його таким простим для резервного копіювання та відновлення з будь-якої системи незалежно від жорсткого диску.

Петльові пристрої

Створення віртуальної системи також чудово працює.

Щоб створити нове порожнє медіа-зображення (30 Гб), можна виконати: dd if=/dev/zero of=/my-media-image bs=1k count=30240000

Потім, щоб призначити носій для петельного пристрою: losetup /dev/loop0 /my-media-image

Щоб створити файлову систему на медіа-зображенні, потрібно: sudo mkfs -t ext3 -L MYVIRTUALFS -M /media/MYVIRTUALFS -I 128 -m 0 -b 4096 -O sparse_super -T largefile4 /dev/loop0

Потім носії можна монтувати: sudo mkdir /media/MYVIRTUALFS && mount /dev/loop0 /media/MYVIRTUALFS

Проблема

Чого я не розумію, це те, що якщо я відключу диск ( sudo umount /media/MYVIRTUALFS), а потім видаляю пристрій зворотного зв'язку ( sudo losetup -d /dev/loop0), я б подумав, що оригінальний носій ( /my-media-image) буде точно таким же, як і клон DD/dev/loop0

Мабуть, це не так, тому що, якщо я dd if=/my-media-image of=/dev/disk4( будьте обережні, втрата даних на disk4 ), disk4 пошкоджений та незмінний.

Чому?

Це дає змогу створити віртуальну файлову систему з Linux macine, доповнити таблицею розділів, даними тощо ..., а потім просто скопіювати медіа-образ ( /my-media-imageна моєму прикладі) в іншу систему (Macintosh у моєму випадку), де вона готова розгорнути на справжні жорсткі диски. Він навіть повинен працювати в Windows, для якого є графічний інтерфейс dd.

Що я пропускаю?


Ну, один червоний прапор, який я бачу, полягає в тому, що ви створюєте (у розділі пристроїв циклу) файлову систему на необробленому пристрої / файлі, замість того, щоб створити таблицю розділів і потім поставити файлову систему на розділи пристрою / файлу. Отже, записування зображення на диск означало б, що весь диск ext3 замість того, щоб мати на ньому таблицю розділів з розділом ext3. Я не пам'ятаю, як звертатися до "розділів" пристрою циклу.
вбивця

Звичайно ! Я забув те, parted --script /dev/diskX mktable msdos mkpart primary 0% 100%що роблю зазвичай. Дозвольте спробувати. Ваш коментар може бути моєю відповіддю.
MichaelC

Добре, коллерміст, ти був правильний, твій коментар - це моя відповідь. Якщо запускається partedраніше makefs, все працює як очікувалося, / my-media-image можна відновити на справжньому диску. Отже ... як нам робити? Чи можу я прийняти ваш коментар як відповідь? Я міг би відредагувати питання (чудове редагування, до речі, спасибі), але тоді питання міститиме відповідь
MichaelC

Ну, я зрозумів, чому це не вдається, але, роблячи ще кілька досліджень, я не знаю, як це виправити. Деякі рішення, які я знаходжу, досить застаріли, не підтримуються, і тому більше не функціонують (як-от для ядра Linux 2.4.20 та 2.4.21 попереднього вибору 4 ядра, якщо я читаю правильно) unix.com/filesystems- disks-memory /… wiki.edseek.com/guide:mount_loopback
вбивця

Відповіді:


3

Як зазначав кілерміст, помилка полягала в тому, що я забув створити розділи перед створенням файлової системи. Інструкції у питанні правильні та створюють ідеально образні диски, все, що потрібно зробити, це створити розділи, безпосередньо після встановлення пристрою циклу, і безпосередньо перед створенням файлової системи на ньому.
Тож правильна послідовність
losetup....
parted --script /dev/loop0 mktable msdos mkpart primary 2048s 100%
sudo mkfs...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.