Я хотел бы сделать резервную копию логического тома LVM2 на внешнем диске dd
.
Подход, который я рассматриваю, заключается в следующем:
- создайте lv на внешнем диске с идентичным размером
- копия с
dd
(Пожалуйста, дайте мне знать, если вы видите что-то действительно неправильное в таком подходе. Мне нужно что-то надежное и быстрое.)
Я хотел бы автоматизировать весь процесс; вот что у меня есть:
# Sanity check that lv is not used
lvuses="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 6 )"
if [ $lvuses -gt 0 ]; then exit 1 ; fi
#obtain lv size (in sectors)
lvsize="$( lvdisplay -c /dev/mapper/vgA-AA | cut -d ':' -f 7 )"
#create destination
lvcreate -L "${lvsize}s" vgB -n BB || exit 1
# copy
dd if=/dev/mapper/vgA-AA of=/dev/mapper/vgB-BB
Все в порядке? Я что-то пропустил?
(В моем случае vgA-AA — это снимок LVM, и я хотел бы сделать его резервную копию на внешнем диске и перенести этот диск в другое географическое местоположение)
решение1
Ваш скрипт выглядит хорошо, но я бы использовал другой подход: создать зеркало, а затем сломать его. Вы можете сделать это онлайн, насколько я знаю. Непроверено:
lvconvert -m /dev/mapper/vgA-AA /dev/sdz98 /dev/sdz99
lvconvert --splitmirrors 1 --name BB /dev/mapper/vgA-AA
Если вы хотите переместить новый логический том в другую группу томов, я думаю, вам нужно убедиться, что логический том, который вы хотите отправить, находится на своем собственном физическом томе(ах), и перенести физические тома(ы) из одной группы томов в другую с помощью vgsplit
.
решение2
Не используйте dd
. Это глупое животное, которое скопирует все в томе, включая свободное пространство, и в результате получит файловую систему с тем же UUID, что и у оригинала, что может сбить систему с толку. Вместо этого используйте инструмент вроде partclone
ghost4linux или fsarchiver
, который может скопировать систему в сжатый файл образа и пропустить свободные блоки.
решение3
- монтировать внешний диск
- остановить приложение
- проверьте, не используется ли файловая система ($ sudo fuser -M /path/to/filesystem/mountpoint)
- создать снимок ($ sudo lvcreate -s ........... )
- начать приложение
- резервное копирование с помощью rsync (проверьте man rsync на наличие --update и --link-dest)
- или проверьтеhttp://dirvish.orgилиhttp://backuppc.sourceforge.net/для внедрения
- размонтировать внешний диск
- удалить снимок LV Эта процедура создает каталог на внешнем диске для каждой резервной копии. Она копирует только измененные/новые файлы с исходного диска и экономит место за счет жесткой привязки дублирующихся файлов между резервными копиями.
решение4
Надежно и быстро. Я бы рекомендовал снимки LVM.
Это очень быстро, и вы можете гарантировать, что резервное копирование будет выполнено без каких-либо изменений файлов во время резервного копирования. Кроме того, если у вас есть база данных на томе, вам не придется переводить ее в автономный режим.
Это также хороший способ проверить изменения в вашем томе. Сделайте снимок, внесите изменения, они не срабатывают, вы объединяете снимок обратно. Если они срабатывают, вы удаляете снимок.
Редактировать: Код
lvcreate -L 10G -s -n snapshot /dev/VG/LV
Затем создайте резервную копию тома моментального снимка в любом месте и любым удобным для вас способом.
Для тестирования файловой системы можно сделать снимок и выполнить обратное слияние.
lvconvert --merge /dev/VG/snapshot
Это слияние автоматически удалит том моментального снимка.
Примечание:моментальные снимки требуют kernel version 2.6.33 or newer
иLVM tools 2.02.58 or newer
Редактировать. Ссылки:
TLDP: Резервное копирование с использованием снимков
HowtoForge: Резервное копирование и восстановление разделов с использованием снимков LVM
Cyberciti: последовательное резервное копирование с помощью снимков LVM