Назад | Перейти на главную страницу

Резервное копирование виртуальных машин на ленточный накопитель

У меня есть один из этих модных ленточных накопителей, HP LTO2 с картриджами 200/400 ГБ. Драйвер st сообщает об этом так:

scsi 1:0:0:0: Sequential-Access HP       Ultrium 2-SCSI   T65D  

Я могу хранить и извлекать файлы как шарм, используя tar, как

tar cf /dev/st0 somedirectory  

и

tar xf /dev/st0  

работать безупречно.

Однако я действительно хотел бы сделать резервную копию LVM LV. Они содержат целые виртуальные машины с различным макетом разделов, поэтому использование монтирования и tar не является вариантом.

Я пробовал использовать что-то вроде

dd if=/dev/VG/LV bs=64k of=/dev/st0  

чтобы достичь этого, но, похоже, с этим подходом связаны различные проблемы.

Во-первых, я хотел бы иметь возможность хранить более 1 LV на одной ленте. Теперь я думаю, я мог бы попытаться объединить данные на ленте, но я думаю, что это не очень хорошо сработает в автоматизированном сценарии с множеством различных LV разного размера. Во-вторых, я хотел бы сохранить небольшой XML-файл вместе с необработанными данными, которые содержат некоторую информацию о виртуальной машине, содержащейся в LV.

Я мог выгрузить все в каталог и архивировать его - не очень желательно, мне пришлось бы выделить огромное количество рабочего места.

Есть ли более простой способ добиться этого?

В-третьих, из-за поиска в Google кажется, что было бы разумно использовать что-то вроде mbuffer при записи на ленту, чтобы предотвратить то, что википедия называет «чисткой обуви». Однако я не могу сделать ничего полезного с помощью mbuffer. На странице руководства mbuffer предлагается это для записи на ленточное устройство:

mbuffer -t -m 10M -p 80 -f -o $TAPE  

Итак, я пробовал это:

dd if=/dev/VG/LV | mbuffer -t -m 10M -p 80 -f -d 64k -o /dev/st0  

Обратите внимание на добавленное «-d 64k», чтобы учесть размер блока ленты 64k.

Однако считывание данных с ленты, записанной таким образом, похоже, никогда не дает каких-либо полезных результатов - dd уже давно работает и смогла передать с ленты только 361 мегабайт данных.

Что здесь не так?