Я только что сделал резервную копию удаленной системы с помощью rsync. У меня есть каталог, в котором я могу chroot
в и теперь хотел бы загрузить его как виртуальную машину. я знаю это qemu
имеет -kernel
возможности, а также -drive file=fat:
виртуальный FAT характерная черта. Я надеялся, что может быть с -append
и немного изменив / etc / fstab, я смог загрузить его, но, к сожалению, ранние тесты предполагают проблему с файлами устройства в каталоге резервного копирования:
# kvm -kernel boot/vmlinuz-4.15.0-99-generic -drive file=fat:`pwd`
qemu-system-x86_64: -drive file=fat:/home/d33tah/workspace/hakierspejs/backup/mounted: Could not read directory /home/d33tah/workspace/hakierspejs/backup/mounted/dev/fd/12
Какие еще варианты у меня есть, если я хочу, чтобы образ загружался с минимальными усилиями после каждой итерации резервного копирования? Я ищу вариант использования типа «настроил один раз, использовал часто».
Я поспрашивал, и похоже, что нет простого выхода из ситуации - кроме, может быть, загрузки через NFS или других подобных хаков. Вот как быстро создать диск ext4 из исходного каталога:
#!/bin/bash
set -euo pipefail
set -x
FNAME=ext4image.bin
SRCDIR=source-directory
DSTDIR=temporary-empty-directory
mkdir -pv $DSTDIR
truncate -s 20G $FNAME
mkfs.ext4 -F $FNAME
mount $FNAME $DSTDIR
tar cf - $SRCDIR | pv | tar xf - --strip=1 -C $DSTDIR
umount $DSTDIR
Предполагая, что теперь у вас есть все монтирования в одной файловой системе, первым делом нужно изменить /etc/fstab
так что он содержит только следующее:
/dev/root / ext4 defaults 0 0
Теперь вы можете использовать приведенный выше сценарий для создания образа ext4. Вы можете загрузить его следующим образом:
kvm ext4image.bin -kernel mounted/boot/vmlinuz-4.15.0-99-generic -append root=/dev/sda -initrd mounted/boot/initrd.img-4.15.0-99-generic -m 2G
Очевидно, что версия ядра может отличаться.
Виртуальный FAT - это действительно тип файловой системы FAT. Это не файловая система linux ext, поэтому ее невозможно загрузить оттуда. По крайней мере, без множества доработок.
Вы можете выполнить этот шаг за шагом, чтобы подготовить новое изображение в файловом контейнере:
dd if=/dev/zero of=/some/path/some/file.dat bs=1M count=[SIZE_IN_MB]M
Это создаст новый пустой файл размером SIZE_IN_MB Мб.mke2fs /some/path/some/file.dat
Это создаст внутри этого файла файловую систему ext.mkdir /mnt/newimage && sudo mount -o loop /some/path/some/file.dat /mnt/newimage
Это смонтирует ваш файл с расширением fs в / mnt / newimage.Затем вы можете rsync / скопировать туда свои резервные данные. После этого вы можете размонтировать этот образ. Также проверьте, чтобы отсоединить привязку петли с помощью losetup -d /some/path/some/file.dat
. Теперь у вас есть правильный образ ext fs внутри /some/path/some/file.dat, вы можете попробовать загрузить его с помощью QEMU (это тип RAW).
Другой (и лучший способ) - перенести вашу исходную систему на QEMU VM. Резервное копирование и восстановление виртуальных машин стало намного проще и сделает ваши резервные копии более последовательными.