Какие есть утилиты для создания образа 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?
Стоит следующая задача: нужно создавать образ 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?
Похожие публикации
Как такое может быть? Зомби
Sphinxsearch respawning too fast, stopped; Куда копать?
Файлы и папки создаваемые приложением идут мимо примонтированной папки NFS — как исправить?
Непонятки в log/messages
Куда конектится ssh?
Нет комментариев