Настройка LVM Snapshot в качестве точки резервного копирования / восстановления в Ubuntu

Настройка LVM Snapshot в качестве точки резервного копирования / восстановления в Ubuntu.

Почему?

Что ж, на мой взгляд, при всей большой полезности Linux, его самый большой недостаток - смешанный способ установки приложений. Все библиотеки находятся в одном каталоге. Все файлы конфигурации для другого. И бинарные файлы тоже складываются в кучу. Да, Windows работает более или менее одинаково, но с учетом того, что системное / серверное программное обеспечение установлено в Linux, поскольку большая часть установленного программного обеспечения является зрелой только на 95% в любой момент времени, порча вашей системы дважды в месяц очень вероятно ..

Конечно, мы можем сделать резервную копию системы до и после каждой установки, но это занимает миллион лет. Резервное копирование системы (в отличие от резервного копирования данных / файлов) требует, чтобы вы выключили компьютер и использовали какой-либо загрузочный live CD и носитель с резервной копией. И, если накопитель заполнен более чем на 15%, резервное копирование может занять много времени, даже при использовании современного оборудования.

Итак, как это можно сделать?

29
задан 2 July 2017 в 00:06

2 ответа

Альтернатива - LVM снэпшоты - о LVM снэпшотах можно прочитать здесь: http://www.tutonics.com/2012/12/lvm-guide-part-2-snapshots.html

Одним словом - снэпшоты - это способ заморозки использованных секторов на HardDisk, говорящий системе записывать любые изменения/удаления/дополнения на зарезервированную часть HardDisk, называемый громкостью моментального снимка, тем самым откладывая решение о сохранении/отключении изменений на диске на некоторое будущее время, насколько это позволяет объем памяти моментального снимка. Таким образом, как только вы решите откатить изменения (или сохранить их), вы можете сделать это с помощью одной строки.

Сначала это может показаться сложным, но я могу вас заверить, что после первой попытки, все, что нужно для использования механизма моментального снимка, это всего лишь 2 строчных скрипта (загрузка прилагается!)

Гарантия - никаких гарантий на приведенные ниже инструкции никогда не дается. Используйте на свой страх и риск!

Как?

Если у вас нет предварительно настроенной группы томов, вам, вероятно, придется установить свежую чистую Ubuntu. Тогда вам придется приложить некоторые усилия, чтобы правильно настроить систему в первый раз, но с этого момента снимки станут легкими. И под "без усилий" я имею в виду одну команду лайнера, используя предварительно сконфигурированные скрипты.

  1. Загрузитесь на живой компакт-диск ubuntu (установки пока нет... только живой компакт-диск)
  2. Открытые аксессуары -> Терминал
  3. Мы будем очищать жесткий диск! Пожалуйста, сделайте резервную копию всего важного перед тем, как пройти этот этап.

    Сначала удалим существующие разделы:

    # fdisk /dev/sda
     Введите 'd' для удаления - введите для стольких разделов, сколько у вас есть. 
    > d 
    <входящий>
     ...
     Введите 'w', чтобы записать изменения
    > w
    
  4. Создайте загрузочный раздел и оставшуюся часть диска в качестве другого раздела

     # fdisk /dev/sda
    > n
     Для создания нового раздела.
    > p
     Для загрузочного основного раздела.
    > 1
     Нажмите <включить>, чтобы принять начальный сектор по умолчанию.
     Введите:
    > +512M
     Чтобы дать загрузочному разделу размер 512MB
    > n
     Для создания (другого) нового раздела.
    > p
     Должно быть и Первоначальным.
    <входящий> 
     Чтобы принять значение по умолчанию 2 (второй раздел).
    <входящий>
     Чтобы принять стартовый сектор по умолчанию
    <входящий>
     Чтобы принять весь диск
    > t
     Для изменения типа второго раздела на LVM
    > 2
     Чтобы выбрать второй раздел
    > 8e
     Чтобы установить тип 'LVM Linux'.
    > w
     Записывать изменения и выходить.
    

    Чтобы проверить, что изменения сработали хорошо, запустите:

    # fdisk --list
    

    Вы должны получить что-нибудь вроде этого:

      Система идентификации начала загрузки устройства.
     /dev/sda1 2048 524287 261120 83 Linux
     /dev/sda2 524288 488397167 243936440 8e Linux LVM
    
  5. Удалить все предыдущие группы томов / логические тома:

    # lvdisplay 
    

    Отобразит логические тома, которые вы можете иметь в системе

    # lvremove <существующие_логические_том_имя_томов>
    

    Если необходимо удалить установку тома, которая может помешать этой установке.

    # vgdisplay 
    

    Покажет любую существующую группу томов в системе

    # vgremove <существующий_группойтом_томов>.
    

    То же, что и для групп томов...

  6. Создайте группу томов 'vgsnap'

    # vgcreate vgsnap /dev/sda2
    

    Должно получиться:

      Группа томов "vgsnap" успешно создана.
    
  7. Создайте Логический том

    # lvcreate --extents 100%FREE --name lvroot vgsnap
    

    Корневой логический том, начиная со 100% устройства.

    # lvresize --size -30G /dev/mapper/vgsnap-lvroot
    

    Это снимет 30G для объемов подкачки и снимков. Конечно, вы можете выбирайте меньшие размеры для свопа/снимка.

    > 'y'.
     за показанное предупреждение.
    

    И создайте том подкачки:

    # lvcreate --size 15G --name lvswap vgsnap
    

    Примечание: теперь мы оставляем 15G неиспользованного дискового пространства, зарезервированного для будущего снимка.

  8. Установка Ubuntu

    Закройте терминал и запустите инсталлятор.

    Выберите "Использовать LVM...". (Вы также можете включить шифрование всего диска - но я его не тестировал...)

    Выберите "Something Else" и нажмите "Continue". На данном этапе вы найдете распределение /dev/mapper/... заданных томов. Некоторые из них сгенерированы автоматически (lvsnap-*) - пока их можно игнорировать.

    Select: /dev/mapper/vgsnap-lvroot том. Выберите "ext4" в качестве формата и монтируйте как '/'

    Выберите: /dev/mapper/vgsnap-lvswap том, и выберите "swap area"

    Если вы хотите создать зашифрованный диск (понятия не имею, будет ли это работать со снимками?), вы, вероятно, захотите выбрать /dev/sda2 и отметить "том для шифрования". Однако, не тестировал...

    Примечание: Неиспользуемые 15G остаются свободными для тома снимка.

    Выбор: /dev/sda1 раздел. Отформатируйте его как 'ext2' и смонтируйте как '/boot'

    Ниже - выберите: /dev/sda1 раздел как boot

    Install!

Используя снэпшот

Следующие шаги покажут, как использовать снэпшот в любой момент:

  1. Mounting the snapshot:

    Create the snapshot volume

    # lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
    

    Создайте каталог монтирования

    # mkdir /mnt/vgsnap-lvsnap
    

    Монтаж снимка в режиме только для чтения

    # Монтаж -o ro /dev/vgsnap/lvsnap /mnt/vgsnap-lvsnap
    

    Снэпшот включен!

    На этом этапе вы можете начать портить свою систему, устанавливать бета-драйверы, и даже (Нет! Это просто неуместно).

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

  2. Автоматический снимок мониторинга свободного места на диске: Используя подкорректированную версию скрипта, представленную здесь: http://blog.rimuhosting.com/2012/02/20/cron-script-for-checking-disk-space/ Я создал скрипт monitor_snapshot.

    Как его использовать/установить? - Как и по ссылке выше:

    # cd /etc/cron.hourly
    # копировать /home//Downloads/monitor_snapshot
    # chmod +x monitor_snapshot
    

    Перед первым запуском лучше отредактировать значения в нем, такие как адрес электронной почты (куда будут отправляться уведомления и т.д.). При правильной настройке, cron-демон будет запускать скрипт каждые X часов/дней - как вы решите - и уведомлять вас, как только снэпшот будет заполнен.

    Для проверки запуска скрипта:

    # sh /etc/cron.hourly/monitor_snapshot
    

    На снимке будет выведен процент (количество) свободного места.

    Важно! По окончании тестов/инсталляций - откат или сохранение изменений - и Размонтирование снимка!

  3. Откат изменений: (См. скрипт rollback_snapshot, со следующими инструкциями, ссылка в конце документа)

    # lvconvert --merge /dev/vgsnap/lvsnap
    

    Это тоже сделает снимок, но отбросит все ваши изменения. Также - Вы увидите предупреждение, которое предполагает, что возврат будет происходить только при следующей активации, так что:

    # reboot
    

    Примечание: Если вы пропустите слияние, ваши изменения будут зафиксированы после того, как вы Umount snapshot.

  4. Фиксация изменений - аннулирование снимка: (См. скрипт commit_snapshot, со следующими инструкциями - ссылка в конце документа)

    # umount /mnt/vgsnap-lvsnap
     Будет размонтирован (commit0 the snapshot)
    
    # lvremove /dev/mapper/vgsnap-lvsnap #
    # rm -rf /mnt/vgsnap-lvsnap/
    
    # rm /etc/cron.hourly/monitor_snapshot
     Удалить сценарий cron daemon (который не используется).
    
  5. Повторный монтаж снимка: (см. сценарий remount, с указанием - ссылка в конце документа). Как и прежде:

    # lvcreate --size 15G - snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
    # mkdir /mnt/vgsnap-lvsnap #
    # mount -o ro /dev/vgsnap/lvsnap /mnt/vgsnap-lvsnap
    

    Если вы сохранили monitor_snapshot в своем домашнем каталоге, вы можете восстановить его обратно:

    # cp /home//monitor_snapshot /etc/cron.hourly/.
    # chmod +x /etc/cron.hourly/monitor_snapshot
    

Вот и все! Следующие инструкции только для увольняющихся ;)

  1. Отбрасывание громкости снимка (если больше не требуется)

    # rmdir /mnt/vgsnap-lvsnap
    # lvremove /dev/vgsnap/lvsnap
    

    (Вы также можете изменить размер корневого раздела или подкачки, чтобы занять недостающие 15Гб, зарезервированные для подкачки)

  2. Отказ от группы томов - Возможен только путем удаления томов группы томов, что, вероятно, означает удаление установки операционной системы. Но, конечно, нет никакой реальной необходимости удалять группу томов...

    Чтобы удалить группу томов:

    # vgremove vgsnap
    

Важное замечание! - форматирование / запуск fdisk и удаление всех разделов НЕ приведет к удалению ни томов, ни группы, так как они записываются на другой части диска.... Поэтому просто используйте инструкции по удалению, приведенные выше, и удалите тома и группу, если потребуется.

12
ответ дан 2 July 2017 в 00:06

Создание cronjob для выполнения резервного копирования с помощью lvcreate -s -L <размер> -n

Здесь имя тома - это имя тома, чей снимок вы хотите сделать. Для более подробной информации вы также можете обратиться к этому учебнику

2
ответ дан 2 July 2017 в 00:06

Другие вопросы по тегам:

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