29 сентября 2010 г.

FreeBSD & Restore.

В связи с перегревом на одном из производственных серверов lost+found на /usr оказался полон. При осмотре логов стало ясно, что необходимо восстановить частично  /usr/local, который находится в разделе /usr.


Что делать?
С чего надо и начать так это с того, что посмотреть куда идет резервное копирование и знать что с ним делать.
Если у вас нет дампа системы и резервных копий - смело говорим о том, что данные утеряны.
Если все же бекапы есть... Начинаем.

Берем дамп системы из хранилища резервных копий. У нас каждую субботу делается полный дамп всех файловых систем на всех производственных серверах.
Нам не надо восстанавливать всю фаловую систему /usr. Нам необходимо восстановить только некоторые каталоги.
Читаем хендбук - http://www.freebsd.org/doc/handbook/disks-virtual.html
Создаем по нему виртуальный диск. Можно как в памяти, можно и как в файле.
Читаем man restore.
Монтируем его куда-нибудь. Очень понравилась команда mdmfs. Рекомендую.
Переходим в точку монтирования.
Выбираем опции и начинаем восстановление в интерактивном режиме.

Все в куче.
Бекап нашего /usr (который сам и есть сервером резервного копирования):

20:15 root@backup1 /backup1/SRV/backup1/dump# file dump_gm0s1f_usr.img
dump_gm0s1f_usr.img: new-fs dump file (ufs2, little endian), This dump Sat Sep 25 03:44:29 2010, Previous dump Thu Jan  1 03:00:00 1970, Volume 1, Level zero, type: tape header, Label none, Filesystem /usr, Device /dev/mirror/gm0s1f, Host backup1.frunze.local,

Создаем виртуальный диск и монтируем его в /mnt:
dd if=/dev/zero of=/backup2/vdisk.img bs=1k count=1g
mdmfs -F /backup2/vdisk.img -s 1g md0 /mnt

Для восстановления вводим такое:
cd /mnt
restore -i -v -f /backup1/SRV/backup1/dump/dump_gm0s1f_usr.img

После выбираем, что нам надо восстановить просто пользуясь командами cd ls pwd. Саму директорию добавляем в восстановление так: add <имя директории>.
После набираем extract.
Нажимаем 1 - выбрав с какого тома бекапов нам начинать.
Все. Все работает. Восстанавливается. После выходим из restore.
Копируем нужные файлы c помощью cp -r.

Расслабляем сфинктер и идем пить пиво.