Skip to main content

Поточный бэкап снимка ZFS.

Известно, что Veritas NetBackup умеет бэкапить (и восстанавливать) именованные каналы (named pipes, пайп(ы) дальше по тексту). Этим и воспользуемся.

Дано: файловая система ZFS, около 1 Тб в объеме, около 2-х миллионов файлов на ней, небольшого размера – 200-400 Кб. каждый. Для понимания – сделаем ls -la внутри этой директории, подождем. Много – и долго.

Надо: изготовить резервную копию этой ФС. Обычный бэкап работает очень медленно (tar, bpbackup) – около 12-18 часов на одну ФС, поток в 4-8 Мб/c – неприменимо, лента занята слишком долго одним заданием. Скорость модификации составляет около 800 Мб-1Гб/сутки по предварительной оценке (добавляются новые файлы). Что делает применение обычного файлового бэкапа вообще малореальным. Задачи восстановления единичного файла с ленты – не стоит. Предполагаем, что политики у нас уже настроены…

Делаем:

  • создаем снимок ФС (по хорошему – надо перестраховаться и “притормозить” приложение, но – нам известен регламент записи заранее – и потому этого мы делать не будем, занимаясь изготовлением снимка в подходящий момент)
  • создаем пайп
  • запускаем процесс отправления снимка
  • запускаем процесс бэкапа (в нашем случае NB bpbackup)
  • ждем окончания процесса
  • удаляем пайп
  • удаляем снимок
zfs snapshot datapool/fs1@pipesnap
mkfifo /tmp/pipesnapGate
zfs send datapool/fs1@pipesnap > /tmp/pipesnapGate &
bpbackup <ключи NB> -w /tmp/pipesnapGate &
wait
rm /tmp/pipesnapGate
zfs destroy datapool/fs1@pipesnap

Скорость – 50-80 Мб/c – на порядок лучше, чем стандартными средствами. Очевидный минус – из архива проблематично достать единичный файл.

Как всегда – бэкап без восстановления – пустое место. Если надо – нарисую последовательность команд для восстановления. Она такая же простая. Вдумчивое “курение” документов позволит отказаться от запуска скрипта на стороне сервера.