Полный бэкап системы на LVM?

Есть убунта, которая при установке предложила себя создать на LVM, теперь ломаю голову как эту схему бэкапить.
NAME                         FSTYPE      LABEL MOUNTPOINT
sda                                            
├─sda1                       vfat              
├─sda2                       ext2              /boot
└─sda3                       LVM2_member       
  ├─ubuntu--vg-root (dm-0)   ext4              /
  └─ubuntu--vg-swap_1 (dm-1) swap              [SWAP]

Прочитал кучу статей по LVM, в т.ч. о создании и восстановлении снапшотов. Но, видимо, это не то, что мне нужно.
Требуется полный бэкап системы с SSD 500GB на внешний SSD 120GB (занятое место на первом < 120GB). Т.е. если винт скоропостижно скончается, покупается аналогичный или большего размера и из бэкапа легким движением консольной строки восстанавливается полностью вся система. Раньше я это делал с помощью dd if=/dev/sda архивируя налету. Как это делать теперь?
Варианта как я понимаю всего два?
1. точно так же с помощью утилиты dd
2. делать снапшот /dev/ubuntu-vg/root и если умирает хард - ставить убунту заново на LVM, после накатывать снапшот.
Во втором случае не разобрался как экспортнуть снапшот сразу на внешний диск в виде файла, не создавая его на рабочем харде.

Какие есть еще варианты?
  • Вопрос задан
  • 10047 просмотров
Пригласить эксперта
Ответы на вопрос 3
@lovecraft
Как я понимаю, вам нужен disaster recovery, т.е. восстановление данных на пустой диск. Делается это следующим образом. Допустим, на сервере с бэкапами backup-storage у вас есть каталог /media/ssd01, тогда
1. Монтируем каталог
mount -t nfs backup-storage:/media/ssd01 /mnt/backup
2. Создаем подкаталог с бэкапом
export backupdate=$(date --iso-8601=seconds)
mkdir /mnt/backup/backup-$(backupdate)
3. У вас, видимо, GPT-разметка, так что используем sgdisk. Бэкапим разметку диска в файл.
sudo sgdisk -b /mnt/backup/backup-$(backupdate)/disk_layout.bin /dev/sda
4. Копируем содержимое первого раздела (там только загрузчик) и второго (там ядро и вторая часть загрузчика)
mkdir /mnt/backup/backup-$(backupdate)/EFI
mkdir /mnt/backup/backup-$(backupdate)/boot
cp -a /<куда там монтируется sda1 и монтируется ли вообще?> /mnt/backup/backup-$(backupdate)/EFI
cp -a /boot /mnt/backup/backup-$(backupdate)/boot
5. Копируем расположение LVM-разделов
vgcfgbackup -f /boot /mnt/backup/backup-$(backupdate)/lvm.txt
6. Делаем снэпшот корневого раздела
lvcreate -s -n backup -L20G /dev/ubuntu--vg/root
7. Бэкапим только заполненные блоки снэпшота
partclone.extfs -c -s /dev/ubuntu--vg/backup -o /mnt/backup/backup-$(backupdate)/ubuntu--vg-root.img
8. Удаляем снэпшот
lvremove /dev/ubuntu--vg/backup
9. Размонтируем каталог с бэкапами
umount /mnt/backup

Все это дело загоняется в скрипт и дергается раз в сутки по крону. Разворачиваться - в том же порядка, но есть тонкости, например, перед vgcfgrestore надо сделать pvcreate --restorefile <файл> --uuid .
Копировать /dev/sda через dd - очень плохая идея, вы потеряете целостность ФС. Ресурс на запись у SSD сейчас такой, что можно не боятся писать на него столько, сколько надо.
Ответ написан
@Vasily_Pechersky
Системщик с опытом
Надо снять очки с рисунком окошек и наслаждаться жизнью ......
Линукс построен на файлах. Их можно просто копировать.
Есть, к примеру, утилита rsync, которая перерисывает только изменившиеся файлы.
Поскольку вы не указали цель применения данной машины, просто упомяну, что серверы баз данных так забэкапить не выйдет и надо использовать их инструментарий.
Ответ написан
stigory
@stigory
Относитесь к LVM2 как к дополнительному уровню абстракции. Вы вольны игнорировать его когда вам это удобно и вспоминать о нем в случае необходимости.
Ваш привычный инструментарий продолжит работать как и прежде. Так что два перечисленных варианта имеют место быть. Разница только в подходе.
В первом случае, для того , чтобы не рисковать консистентностью данных при работе с dd, рекомендуется приостановить работу сервисов и системы. Зачастую это неудобно.
Во втором случае вы начинаете использовать преимущества LVM. Снэпшот - это заморозка данных на диске. Все последующие изменения пишутся на новом слое. В таком случае вы можете безбоязненно выполнять резервное копирование снэпшота, не прерывая работу системы и сервисов. А по окончании объединить изменения со снэпшотом, затем удалив его.

Во втором случае не разобрался как экспортнуть снапшот сразу на внешний диск в виде файла, не создавая его на рабочем харде.

Никак. Вы не разобрались в самой сущности снэпшота. Он и есть ваши данные на диске.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы