[recovery mode] Как примонтировать образ fsa
Не знал где это написать, думаю на хабре будет самое место. Везде пишут что fsarchiver — замечательная утилита, что может создавать архивы с файловой системой, хорошо их сжимает и т.д. И это действительно так! И самое главное что эти архивы можно деалать на работающих системах.
Но вот сегодня выходной день, сервера находятся в другом городе и один из них лег, на системнике лампочка с восклицательным знаком горит красным цветом, а значит тяжелая беда с железками. По удаленке поднять не можем. С сервером конечно разберемся и починим, но надо скорее поднимать сервис на резервной машине. Образы всех серверов конечно мною были заботливо сделаны при помощи замечательной утилиты fsarсhiver.
И вот встала задача как достать конфигурационные файлы из fsa-образа. Конечно если есть пустой жесткий диск подключенный к машине с бэкапами это не проблема, а если его нет?
Поисковый запрос типа: «как монтировать образ fsa» не дал положительных ответов. И даже на оборот не много ввел в заблуждение. На сайте разработчики сказали: «Unfortunately it won’t be possible to do that we the current file format.» (к сожалению это невозможно сделать с этим форматом файла).
Стало печально. Но что то внутри меня говорило, что это возможно! Ведь это линукс!
Еще не много поиска в интернете и я нашел нужную информацию. Конечно же, все элементарно! Этой командой я уже пользовался — losetup, но почему то напрочь вылетела у меня из головы.
Теперь просто приведу пример.
Для начала, нам необходимо узнать какого размера нам нужно сделать файл, который будет эмулировать блочное устройство.
#fsarchiver archinfo backup.fsa
Получаем что типа:
===================== filesystem information ====================
Filesystem id in archive: 0
Filesystem format: ext4
Filesystem label: lboot
Filesystem uuid: f8eebcb0-ba54–47e4–8a86–769880291a3e
Original device: /dev/md0
Original filesystem size: 921.43 MB (966189056 bytes)
Space used in filesystem: 59.61 MB (62504960 bytes)
Здесь нас интересует параметр Space used in filesystem: 59.61 MB (62504960 bytes)
то есть сколько минимум подребуется места для развертывания имиджа. Файл-образ должен быть чуть большего объема.
Создаем пустой файл vd.img размером 100 мегабайт (требуется 59.61 MB).
Параметры говорят сами за себя count-количество блоков, bs-их размер.
#dd if=/dev/zero of=vd.img count=100 bs=1M
Затем посморим какие петлевые интерфейсы у нас не используются
#losetup -f
Если таковых нет, то можно добавить.
#modprobe loop max_loop=128
И связываем файл-образ с этим интерфейсом
#losetup /dev/loop0 vd.img
Затем восстанавливаем на него наш архив
#fsarchiver restfs backup.fsa id=0, dest=/dev/loop0
И монтируем
#mount -o loop=/dev/loop0 /mnt/vd
После того как мы вытащили из образа нужные нам файлы, необходимо его отмонтировать, отвязать и удалить — если не планируем использовать его снова. Следующие команды делают это
#umount /mnt/vd
#losetup -d /dev/loop0
#rm -f vd.img
Всем удачи, не забывайте делать бэкапы.