@HeroFromEarth

Какие есть утилиты для создания образа Unux-системы «на живую»?

Здравствуйте.
Стоит следующая задача: нужно создавать образ Unix-систем (Solaris, CentOS...) "на лету", причём по возможности без сильного проседания производительности (во всяком случае, чтобы на такой системе ещё кто-то мог работать). Системы на физическом серваке и виртуалках, "под рукой" и удалённые.
В данный момент продумывал три варианта, но у всех есть своё "но":
1. При помощи dd. Минуса как минимум два - во время работы отъедает достаточно много ресурсов у диска, особенно если это не SSD, а также размер бэкапа равен размеру диска, т.е. в случае, если на условном диске /dev/sda1 20Гб данных, но сам диск на 120Гб, то размер бэкапа составит 120Гб (уточняю такие мелочи для тех, кто тоже в поиске ответов).
2. При помощи tar. Минус хотя бы один - несоответствие требованиям. Сделать бэкап системы "на лету" не удаётся, т.к. многие файлы из /dev и /proc не архивируются либо из-за того, что они изменяются во время бэкапирования, либо потому что это открытые сокеты, либо ещё по каким-то причинам. С LiveCD не всегда есть возможность загрузиться.
3. Backup/Restore LVM. Несколько заморочено, но бэкап сделать удалось (делаю снапшот -> делаю его бэкап), а развернуть - нет. Минусы - GRUB не поддерживает LVM, поэтому /boot в любом случае нужно бэкапить-ресторить отдельно, и, очевидно, если в системе нет LVM, то способ нерабочий.
Итого единственный рабочий метод, который мне известен, это dd, но объём файлов при этом колоссальный, особенно если диски больших объёмов и если речь идёт об удалённых машинах, то передать ~500Гб по сети из Владивостока в Москву - задача непростая. Поскольку я работаю с Unix-системами не очень много (думаю, это видно из моего поста), то прошу помощи в решении задачи. Также буду благодарен, если укажете на аналогичные утилиты для Windows-систем.
Тема очень актуальна и я надеюсь, что нам удастся найти на неё ответ.
Я тем временем не складываю ручки в ожидании готовых решений, а продолжаю поиски. Если найду что-то интересное - отпишусь.
UPDATE1:
Вот уж не знаю, то ли я отличаюсь особой криворукостью, то ли я отличаюсь особой криворукостью (всё-таки есть у меня некоторая уверенность в этом). Давайте по порядку:
1. Пробовал делать бэкап mondorescue. Прекрасно бэкапит, создаёт .iso образ с бэкапом, НО развернуть этот бэкап на диск меньшего размера, чем диск, с которого его снимали, невозможно: получаем kernel panic. Если разворачиваем на диск такого же размера, то просто не можем залогиниться под root-ом :)
2. Делал бэкапы tar-ом. С LVM сделать его не получается, система не загружается и восстановить его в течение нескольких часов не удалось. Без LVM делал всё точно по статье как с KVM, так и с VMware (https://habrahabr.ru/post/251659/), но система не грузится вот ни в какую. Загрузился с LiveCD, сделал бэкап, на новой ВМ загрузился с этого LiveCD, смонтировал диск с бэкапом + новый диск, раскатал бэкап на новый диск, система не загружается.
3. При помощи встроенных в LVM backup/restore делаю бэкап, но раскатать его позже не удаётся.
4. Clonezilla не соответствует требованиям выше (поправьте, если ошибаюсь).
Буду пробовать Rsync.
Ещё добавлю вопрос: может, я слишком многого хочу? Я делаю бэкап системы целиком и полностью (исключая /proc, /dev, /sys, /tmp), а затем этот бэкап накатываю на новый диск. На новом диске ставлю GRUB, ставится без ошибок.
Может, в моём криворуком случае будет проще создать новую ВМ с установленной CentOS, на целевой машине сделать бэкап директорий
/boot /bin /etc /home /lib /lib64 /opt /root /usr /var
и вот только их кинуть на новую ВМ + обновить GRUB?
  • Вопрос задан
  • 435 просмотров
Пригласить эксперта
Ответы на вопрос 5
moropsk
@moropsk
есть такой вариант бэкапа на "живую":
https://moonback.ru/page/full-server-backup
www.mondorescue.org/docs/mondoarchive.8.html
Ответ написан
Комментировать
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Ну не знаю, со времен aix пользую tar для быстрого копирования.
Есть, правда, пара моментов.
Первое, копировать нужно только файловые системы! А всякие devfs, procfs, sysfs, tmpfs и прочие спец.системы копировать не нать! Получить список можно командой mount
Второе, копировать нужно каждую файловую систему по отдельности.
Ну и третье, не нужно создавать архивный файл на той же файловой системе, которую копируем!
tar --one-file-system -czf mybackup.tgz /
Ответ написан
Комментировать
Периодически использую rsync over ssh, ну или вот так "dd_rescue /dev/sdX | gzip -c > /path/to/backup.img.gz"

По поводу LVM - посмотрите как это реализовано в openSUSE. Кажется там я видел возможность загрузится со снапшота (хотя не исключаю, что там стояла btrfs)
Ответ написан
Комментировать
SergeySL
@SergeySL
Системный администратор
dump и restore. Все делается без размонтирования файловых систем, дамп представляет из себя обычный файл, который можно переписывать, упаковывать и т.д. и т.п.
Ответ написан
Комментировать
@Vasily_Pechersky
Системщик с опытом
Товарищи ! Rsync есть спасение ! Копирует только изменившиеся файлы.
Во первых Юрий Чудновский уже отписал о /proc и его друзьях.
Во вторых - если снапшотнуть диск с открытым файлом дб сервера - при восстановлении он будет не консистентным. 5% случаев, что сам сразу не взлетит.

Итого - просто линукс машины со статическими файлами - реплицируем Rsync`ом.
При этом имеет смысл это делать только на рабочие директории каждый день, а остальные - раз в неделю.
Базы данных - дампим штатными средствами сжимаем pigz (мультиядерный) и копируем на таргет. Там разворачиваем.

Для окошек - тоже есть реализация Rsync - syncback. Windows backup и disk2vhd тоже успешно помогают.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы