Задать вопрос

Как восстанавливать домашний сервер из бэкапа с минимумом усилий?

Привет,
Я — разработчик, и многие мои хобби вращаются вокруг компьютеров. В частности, для разных моих поделок дома у меня работает небольшой сервер на старом железе. Спецификой наверное любого персонального домашнего сервера является обилие разной мелочи, раскиданной по нему, сервисов различной направленности, например, MySQL и PostgreSQL, или RoR- и Django-приложения по соседству на одной домашней машине — это нормально; чего не встретишь во взрослом продакшне, где у железок своя специализация и быстрый ввод в строй новой ноды — штатная процедура.
Некоторые данные на моем сервере, как и положено, представляют для меня весьма существенную ценность, и потерять их было бы жалко.
Поэтому я делаю бэкапы. Бэкапы я делаю с помощью Duplicity и храню их на NAS-е. Устраиваю себе периодически небольшие учения, проверяя процедуру восстановления из бэкапов и целостность бэкапов, возможность восстановить БД из дампов, наличие конфигов и всё такое. Делаю это, когда случайно находится небольшой кусочек свободного времени. И теперь я подхожу к сути вопроса: ручное восстановление из бэкапа даже небольшой части моего небольшого зоопарка — это очень муторная процедура, которая, при нехватке времени, может занимать (я говорю о полном восстановлении) — несколько вечеров…

Итак, исходные данные:
  • домашний сервер под управлением Linux. Например, вездесущий Ubuntu Server;
  • второсортное потребительское железо, готовое отказать в любой момент, а может сыпаться по чуть-чуть несколько недель подряд (я говорю в первую очередь про жесткие диски);
  • другое второсортное железо, совсем не похожее на первое, имеющее совсем другую конфигурацию вплоть до архитектуры процессора (например, был старый ноутбук с Intel Core2Duo с механическим жестким диском, а стал одноплатный миникомпьютер с четырехядерным ARM Cortex-A7 и SSD);
  • обилие сервисов (веб-сервер, субд, питоны и руби специфичных версий, репозитории кода и т.д. и т.п.) и мелких кусочков того или иного софта и данных, разбросанных по серверу.


Хочется: соблюдая для себя, если это потребуется, какую-то несложную дисциплину или алгоритм действий иметь такую резервную копию, из которой восстановление даже в совершенно непохожей среде (разве что версия ОС, но не платформа, останутся теми же) занимало бы минимум ручного труда. При этом, конфигурирование и внедрение такой системы резервного копирования само по себе так же должно занимать минимум усилий (я не ленивый, это вопрос приоритетов :)).

Самый приятный из придуманных мной вариантов — это делать deb-пакеты со своими конфигурациями, данными и правильно проставленными зависимостями. Группировать их в репозиторий, а репозиторий держать на NAS-е. Пересобирать пакеты по расписанию, включая мета-пакет «разбэкапить всё». Очень красиво, но, чую, жутко трудоемко.

Посоветуйте, пожалуйста, материалы на тему резервирования и восстановления, специфичные для моей задачи, и, если имеются, готовые решения.
Спасибо!
  • Вопрос задан
  • 6916 просмотров
Подписаться 16 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
sledopit
@sledopit
Так puppet же. Ну или chef и прочие configuration management поделки.
Ответ написан
opium
@opium
Просто люблю качественно работать
подымаете все в openvz контейнерах, а там все простенько делаем бекап системы vzdump, восстанавливаем через vzrestore.
можно поставить proxmox и делать через веб интерфейс это
Ответ написан
fear86
@fear86
Developer
Еще как вариант LXC контейнеры.
Ответ написан
thunderspb
@thunderspb
Самое простое это конечно виртуалки, либо, как советовали выше, puppet и другие configuration management программы,
Есть еще такое понятие как Stage4 — это просто архив установленной системы. Гдето встречал описание как сделать для Debian и CentOS
Вот пример для Gentoo: www.gentoo-wiki.info/HOWTO_Custom_Stage4
Разворачивание системы на точно такой же сервер откуда был снят слепок примерно 10 минут.
На тот же самый — минут 5 ибо мак-адреса сетевух не меняются :) Это на 80гиговый винт с 6 партициями.
Конечно же можно написать скрипт авторазвертывания всего этого на целевой сервер, но на тот момент пока не придумал что с сетевухами делать, можно в него вписать просто автоподнятие интерфейсов и настройку.
Поднятие сервера будет еще быстрее, если не резать диск на много разделов :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы