Восстановление из резервной копии с помощью Veeam Agent for Linux
Конечная цель создания резервной копии – обеспечить возможность восстановления данных в случае сбоя, и сегодня я вкратце расскажу, как с этим способен справиться новый Veeam Agent for Linux. Возьмем в качестве «подопытного кролика» тот же бэкап, создание которого было описано в предыдущем посте, и посмотрим, как из него можно восстановиться. За сим добро пожаловать под кат.
Восстановление на уровне файлов
Как вы помните, Veeam Agent for Linux успешно сохранил бэкап на сервер NFS. Запустим уже знакомый нам UI, введя команду
veeam
Сверим часы, то есть данные о последней сессии задания резервного копирования:
Внизу, в списке команд теперь появилась команда R (Recover Files) – восстановить файлы. По ней будет выведена информация о имеющихся в наличии резервных копиях: какой хост был в работе, какое задание создало бэкап, сколько получилось точек восстановления (в нашем случае – одна) и в какое время.
Дважды нажимаем Enter, и выбранный бэкап монтируется на файловую систему нашего хоста в папку /mnt/backup:
Почему мы решили ограничиться этой операцией? Просто подумали, что у пользователей обычно есть свои предпочтения в работе с файлами, и ни к чему изобретать велосипед. Так что после того, как прошло монтирование, вы можете задействовать привычный для вас способ – например, командную строку или популярный Midnight Commander (mc):
Восстановление тома
Теперь рассмотрим, как выполняется восстановление тома целиком. Для начала выполняем загрузку машины с использованием Veeam Recovery Media (скачивается вместе с установочным пакетом решения Veeam Agent for Linux). Он запускается, используя файл ISO.
Veeam Recovery Media открывает нам графический интерфейс с вот таким набором команд:
Здесь есть возможность восстановления томов (Restore volumes), восстановления файлов (Restore files), настроек сети (Configure network), перехода к командной строке (Switch to command line), а также перезагрузки (Reboot) и выключения (Shutdown).
Если, как в нашем примере (и как рекомендовано!), бэкап хранится вовсе не на локальной машине, а на сетевой СХД, то нужно до начала процедуры восстановления убедиться в наличии доступа к месту хранения бэкапа, а в ходе самой процедуры — выполнить настройку параметров сети. Можно задать настройки вручную. Для этого:
- В данном меню выбираем пункт Configure network, затем выбираем в списке нужный сетевой адаптер, который будет использоваться для соединения с СХД, и жмем Enter.
В диалоге Configure adapter (настроить адаптер) выбираем Manual (ручная настройка) и жмем Enter.
В диалоге Adapter settings (параметры адаптера) указываем требуемое: IP-адрес, маску подсети, шлюз по умолчанию, сервер DNS
Кликаем Apply (применить) и жмём Enter.
Если вы работаете с сервером DHCP, то нужные настройки Veeam Agent for Linux сделает автоматически – если в диалоге Configure adapter выбрать Auto.
Продолжаем восстанавливать том: выбираем соответствующую операцию из списка команд — это Restore volumes.
Далее на шаге Select Backup Location нужно указать местонахождение нашего бэкапа. Для нашего примера нужно выбрать опцию добавления шары Add shared folder…
Затем на шаге Mount Shared Folder указываем, что у нас это NFS:
В поле Server/Directory вводим имя сетевой шары, в которой лежат файлы бэкапа. Veeam Agent for Linux смонтирует ее в папку /media на файловой системе нашего recovery image и отобразит содержимое смонтированного тома. На шаге Browse for Backup Files вы сможете выбрать нужную точку восстановления, чтобы импортировать ее:
Полезно: Если ваши бэкапы хранятся на одном из локальных устройств, то на шаге Select Backup Location вы, естественно, выберете опцию Mount local disk. При этом можно будет выполнять монтирование многократно — для нескольких устройств, на которых живут файлы резервных копий. Для этого нужно вернуться на шаг выбора местонахождения бэкапа Select Backup Location и опять выбрать опцию Mount local disk.
На шаге Backup выбираем нужный бэкап и в нём — точку восстановления.
Затем на шаге Disk Mapping можно просмотреть, какие тома имеются у машины в продакшене (то есть у локального хоста – Current System) и в бэкапе. Veeam Agent for Linux отобразит для выбранного тома подробную информацию, включая тип раздела, файловую систему, местоположение точки монтирования, размер тома, а также выведет список доступных команд:
- Restore volume from (восстановить том) – восстановить данный том из бэкапа.
Delete partition (удалить раздел) — позволяет переразметить диск перед восстановлением тома. После удаления раздела можно будет создать новый и замапить на него том из бэкапа.
[для восстановления томов LVM] Create LVM physical volume (создать физический том LVM)— создать физический том LVM на выбранном разделе и добавить его в уже существующую группу томов (volume group, VG), либо создать новую группу. Это позволит восстановить логические тома LVM или группы томов в выбранную VG.
Здесь мы выбираем Restore volume from и жмем Enter.
В панели Current system в поле Restore напротив выбранного тома появится имя того, с которого будем восстанавливаться:
Подтверждаем выбор (будьте внимательны, оплошность может дорого обойтись, поскольку данные будут перезаписаны теми, что в бэкапе!), нажимаем (Start restore).
Cмотрим краткую сводку, подтверждаем выбор ещё раз и наблюдаем за прогрессом:
После завершения процесса мы заканчиваем работу с Veeam Recovery Media:
- Нажимаем Esc для возврата в главное меню.
- Отключаем носитель с recovery image.
- В главном меню выбираем Reboot и жмем Enter.
- Ждем старта ОС.
Вот, в общем-то, и весь рассказ о том, как происходит восстановление с помощью Veeam Agent for Linux.
Veeam Recovery Media
Veeam Agent for Linux lets you use the Veeam Recovery Media — a recovery image of the Linux OS that provides an alternative way to boot your computer.
The recovery image includes a custom Linux OS with the limited functionality. It comprises Linux kernel and a set of GNU/Linux utilities necessary to boot the computer and perform basic administration tasks. If the OS installed on the computer fails to start for some reason, you can boot the recovery image OS. After booting, you can do the following:
- You can restore data from a backup to your computer. For this scenario, you must have a backup created with Veeam Agent for Linux .
- You can use Linux OS tools to diagnose problems and fix errors on your computer.
The recovery image can be helpful if one of the following errors occur:
- The OS on the computer fails to start.
- You want to perform bare-metal restore from the backup on the computer without the OS and other software installed.
- You want to restore the system volume of the computer and so on.
Veeam Recovery Media is distributed as an ISO image. The ISO image file can be downloaded from this Veeam webpage . You can burn the ISO image file to different kinds of media:
- Removable storage devices such as USB drives or SD cards
- CD/DVD/BD
When you boot from the Veeam Recovery Media, you can use the recovery environment to fix the OS system errors on your computer or restore data from the backup. Veeam Agent for Linux offers a set of tools for the computer system image and data recovery:
- Restore volumes — the Veeam Recovery wizard to recover data on the original computer or perform bare-metal recovery.
- Restore files — the File Level Restore wizard to restore files and folders to the original location or to a new location.
- Switch to command line — Linux shell prompt with standard utilities to diagnose problems and fix errors.
Бэкап и перенос linux (centos, debian, ubuntu) сервера с помощью Veeam Agent for Linux
Есть множество способов выполнить резервное копирование отдельной информации или целых серверов. Я хочу рассказать о самом простом способе полного бэкапа сервера и переноса его на другое железо, если будет такая необходимость. Делается все это очень просто, без лишних телодвижений с помощью бесплатного Veeam Agent for Linux FREE.
Введение
Ранее я уже неоднократно рассматривал вопрос резервного копирования данных или целых серверов linux. Конкретно в этих статьях:
Забэкапить сразу весь сервер можно, например, с помощью Duplicity. Но вот восстановить его на другом железе будет не так просто. Помимо данных нужно будет, как минимум, позаботиться о разметке диска, установке загрузчика. На это необходимо затратить некоторые усилия и немного разбираться в теме initramfs и grub. Сам я не очень разбираюсь в нюансах работы этих инструментов и очень не люблю с ними возиться.
Некоторое время назад появился отличный бесплатный продукт для бэкапа всего сервера целиком. Речь идет о Veeam Agent for Linux FREE. С его помощью можно сделать полный backup сервера, положить его куда-нибудь по smb или nfs, потом загрузиться с live cd и восстановить из бэкапа на другом железе.
Сразу расскажу о некоторых нюансах работы бесплатной версии, с которыми столкнулся в процессе эксплуатации замечательного продукта от veeam.
- Бэкап можно сделать либо всего сервера сразу, либо отдельного диска, либо отдельных папок и файлов. При выборе бэкапа всего диска или сервера, нельзя задать исключения для отдельных папок или файлов. Это очень неудобно, но увы и ах, таков функционал. Исключения можно сделать только если вы делаете бэкап на уровне папок.
- Бэкап можно положить локально на соседний раздел, если делаете резервную копию раздела, локально в папку — если делаете бэкап файлов и папок. Если бэкапите всю систему целиком, то удаленно по smb и nfs. К сожалению, по ftp или sftp программа не работает.
В качестве хранилища для архивов может выступать репозиторий Veeam Backup & Replication. Но я не рассматриваю этот вариант, так как в данном случае использую только бесплатное решение.
Мне очень хотелось настроить резервную копию всего сервера на Яндекс.Диск, но, к сожалению, у меня это не получилось из-за технических ограничений. Яндекс.Диск подключается к системе через webdav. Для того, чтобы сделать резервную копию всей системы, нужно бэкапить либо всю систему сразу, либо образ диска. Если у вас небольшой веб сервер, то скорее всего на нем только один раздел. На этом же разделе хранится кэш, который использует webdav для передачи файлов. Без кэша он работать не умеет.
Думаю вы уже поняли, в чем проблема сделать полный backup сервера с помощью Veeam Agent for Linux на Яндекс.Диск по webdav. Вы не сможете добавить в исключения папку с кэшом от webdav. В итоге, во время бэкапа с помощью veeam будет расти папка с кэшом webdav, которая, в свою очередь, будет бэкапиться. В итоге, свободное место на диске закончится, бэкап прервется.
Я подробно описал ситуацию с Яндекс.Диском, потому что пространство на нем не дорого стоит. Я часто его использую в повседневной жизни, настраиваю бэкапы, храню данные и т.д. В общем, мне он нравится по ряду причин. Для того, чтобы бэкапить весь сервер целиком, вам придется найти место для архивных копий с доступом по smb или nfs. Таких предложений не очень много на рынке. Практически не из чего выбирать, я специально искал.
Остановился вот на этом варианте — KeyDisk. После оплаты, вам дают адрес сервера, логин и пароль. Вы можете сразу же подключаться по smb к хранилищу. Можно прям в windows через два обратных слеша зайти или подмонтировать хранилище к linux серверу.
Дальше я подробно на конкретном примере расскажу как все настроить и восстановить или перенести сервер целиком, если понадобится. Причем переносить буду вообще на другое железо. Но обо всем по порядку.
Установка Veeam Agent for Linux
Для установки Veeam Agent for Linux необходимо подключить репозиторий veeam под нужную вам систему. Это можно сделать либо руками, либо скачать файл с репозиторием в виде rpm или deb пакета. Сделать это можно на странице с описанием продукта.
Для того, чтобы получить доступ к разделу с загрузками, придется зарегистрироваться. Выбираете тип системы и скачиваете репу.
Чуть ниже рекомендую сразу же скачать Veeam Linux Recovery Media. Он нам понадобится, когда мы будем переносить сервер на другое железо или восстанавливать из бэкапа.
Копируем файл с репозиторием на сервер и устанавливаем его. На момент написания статьи, файл можно было скачать по прямой ссылке.
Обновляем репозитории и устанавливаем veeam.
Все, Veeam Agent for Linux установлен и готов к работе.
Настройка полного бэкапа сервера
Сделать бэкап с помощью Veeam Agent for Linux очень просто. Вариантов настроек не так много, можете сами все проверить и посмотреть. Я для примера рассмотрю вариант с созданием полного бэкапа всей системы и перенос ее на другое железо. Создаем задачу для резервного копирования сервера на наше хранилище по smb.
Нам сразу же предлагают указать файл с лицензией. Так как у нас лицензии нет, то отказываемся. Нас встречает главное окно программы.
Нажимаем C (configure) для настройки задания на backup. Задаем любое имя задания, затем указываем, что будем делать полный бэкап сервера.
В качестве приемника для архива системы, указываем Shared Folder.
Далее нужно ввести параметры доступа к хранилищу бэкапов. Я использую свои от системы KeyDisk.
В пункте Restore Points указывается глубина архива. Это число копий, которые будут храниться на сервере. Если делать бэкап каждый день и указать число 14, то будут храниться резервные копии системы за последние 14 дней. Если делать будете через день, то за 28 дней и т.д.
Можно создавать несколько заданий с различной глубиной архива. Например, каждый день с глубиной 7 копий, раз в неделю с глубиной 4, и раз в месяц с глубиной в 12. Таким образом у вас всегда будут последние 7 бэкапов системы на этой неделе. Потом по одному бэкапу в неделю за последний месяц и 12 бэкапов по месяцам в течении последнего года.
Если получите ошибку:
Установите пакет cifs. В CentOS вот так:
И так в Debian/Ubuntu:
Запускайте заново veeam и продолжайте. После настройки Destination, предлагается указать скрипты для выполнения перед и после бэкапа. Нам сейчас это не надо. Далее настраиваем расписание и запускаем задание на архивацию в конце настройки.
Запустилась архивация. Можно следить за ее прогрессом.
После завершения архивации системы, можно проверить содержимое сетевого хранилища, зайдя на него прямо из винды.
На этом настройку полного бэкапа сервера мы завершили. Резервная копия системы лежит в надежном месте. Попробуем теперь с нее восстановиться.
Перенос или восстановление linux сервера
Представим теперь ситуацию, что наш веб, или какой-нибудь другой сервер умер, и нам надо восстановить систему в другом месте. Выполним полное восстановление всего сервера с помощью созданной ранее резервной копии. Для этого нам понадобится Veeam Linux Recovery Media, который мы скачали ранее.
Для восстановления системы нужно соблюсти два обязательных условия:
- Готовим новый сервер с диском, который должен быть не меньше диска исходного сервера. Это обязательное условие, иначе восстановление системы даже не начнется. Veeam скажет, что размер диска недостаточный и не предложит больше никаких вариантов восстановления.
- Оперативной памяти для системы должно быть не меньше 1024 Мб. Если меньше, то загрузка с диска не будет выполнена. Система скажет, что она не может развернуть корневой раздел.
Загружаемся с диска. В разделе Configure network убеждаемся, что сеть настроена, получен ip адрес, который имеет доступ к интернету. Далее выбираем Restore volumes -> Add shared folder. Заполняем параметры доступа к хранилищу архивов.
Выбираем там директорию с нашим архивом системы, которую будем восстанавливать. Далее будет показан список задач в левом столбце и список резервных копий в правом.
В моем случае там только одна копия. Выбираю ее. Дальше мы видим слева список дисков нашего сервера, справа диски резервной копии.
У меня слева чистый диск, справа тоже один диск, на который установлен загрузчик и есть один раздел с корнем системы. Выбираем справа наш диск (не раздел с корнем. ) и жмем Restore whole disk to.
В качестве приемника выбираем пустой диск на новом сервере.
Нажимаем S ( Start restore ). Визард покажет список действий, которые будут выполнены и попросит их подтвердить, нажатием на Enter.
Делаем это и наблюдаем за процессом восстановления сервера centos из бэкапа.
Дожидаемся окончания переноса сервера, выбираем перезагрузку и извлекаем загрузочный CD. Грузимся с жесткого диска.
Дальше может быть много различных вариантов. Если вы переносите сервер на тот же гипервизор, то проблем скорее всего не будет, и все заведется сразу. Если же гипервизор другой, то могут быть варианты, в зависимости от ситуации.
Перенос виртуальной машины с KVM на Hyper-V
В моем случае я переношу сервер с KVM на Hyper-V. После загрузки системы я получаю такую картину.
Сервер начинает бесконечно висеть в подобном состоянии с такими характерными ошибками:
Начинаю разбираться в чем может быть дело. Конечно, тут решение проблемы будет зависеть от конкретной ситуации. А успешность решения от квалификации сисадмина. Я уже немного повозился с подобными переносами и примерно представляю, в чем тут может быть проблема. Частично я эту тему затрагивал, когда делал перенос виртуальных машин с XenServer на Hyper-V. Но там была другая проблема, связанная с кастомным ядром от Xen.
В нашей ситуации с переносом виртуальной машины с KVM на Hyper-V проблема в другом. У нас поменялось имя диска. Нам нужно изменить это имя в fstab и в конфиге grub. До кучи я еще собрал заново initramfs, но не уверен на 100%, что в данном случае это нужно было делать. Я сделал на всякий случай сразу все за один заход.
Итак, загружаемся с установочного диска CentOS 7 и выбираем режим Rescue a CentOS system. Подробно об этом рассказывал в упомянутой ранее статье с переносом от xen. Выбираем первый режим запуска.
Дальше работаем в консоли. Смотрим, как называется наш диск.
У меня это sda, а на прошлом сервере он назывался vda. Нам нужно внести эти изменения в 2 файла:
Диск восстановления в самом начале мог сам смонтировать системный раздел в директорию/mnt/sysimage. Если он этого не сделает по какой-то причине, то сделайте это сами:
Теперь нам надо сделать chroot в систему, предварительно смонтировав туда информацию о текущей системе. Выполняем команды:
Мы загрузились в окружение нашего сервера. Тут можете использовать установленный у вас на сервере текстовый редактор. С его помощью изменяете имена дисков в файлах /etc/fstab и /boot/grub2/grub.cfg. Можете просто автозаменой поменять имена.
Теперь соберем новый initramfs. Идем в директорию /boot и смотрим там последнюю версию ядра.
В данном случае просто смотрим самые высокие цифры. Соберем новый initramfs в соответствии с версией ядра.
В завершении установим измененный загрузчик на наш диск:
Перезагружаем сервер. После этих изменений, у меня благополучно все загрузилось. Перенос виртуальной машины с KVM на Hyper-V выполнен полностью. Причем, у нас не было доступа к образу системы. Хотя подобная ошибка скорее всего все равно возникла бы, даже если бы мы конвертировали и переносили готовый образ.
Заключение
Изначально планировал написать небольшую заметку на тему использования Veeam для бэкапа сервера. Но в процессе получилось разобрать еще и перенос сервера с одного гипервизора на другой. Еще раз повторюсь, кому показалось это слишком сложным. Если вы будете бэкапить и восстанавливать сервер в рамках одного и того же гипервизора, то описанных выше проблем у вас не будет. Все пройдет гладко.
При переносе с железа на виртуальную машину или наоборот, тоже скорее всего возникнут какие-нибудь проблемы. Не существует софта или готового решения, которое бы позволило все это выполнить в автоматическом режиме. С проблемами загрузки придется разбираться по ходу дела. Но две основные проблемы я разобрал:
- Неподходящие версии ядер. После переноса нужно будет переустановить или обновить ядро.
- Разные имена дисков или меток разделов. Нужно будет их привести в соответствие с новым железом.
Это наиболее популярные проблемы. С другими мне не приходилось сталкиваться. Хотя не сказать, что мне часто приходилось переносить сервера, но некоторый опыт есть. Думаю, эта статья будем многим полезна, так как подобный перенос не очень раскрыт в статьях в интернете. По крайней мере мне не попадались хорошие гайды на эту тему. Разбираюсь обычно сам с помощью гугления по англоязычному сегменту.
Делитесь своим опытом и оставляйте замечания к статье или указывайте на ошибке в комментариях.