Страницы

Сохранить статью у себя в соцсети:

четверг, 27 июня 2013 г.

§ LVM-based sandbox.

Еще одна причина почему я люблю LVM.

Еще один лирический пост, в котором я снова рассказываю о том что мне нравится и почему. На этот раз речь пойдет об LVM (Logical Volume Manager). Если вкратце, то это менеджер управления логическими дисками который позволяет абстрагироваться от уровня физических накопителей и оперировать разделами на логическом, более гибком уровне, то это инструмент позволяющий гибко управлять дисковыми разделами. Гибкость заключается в том что LVM позволяет объединять целые диски в логические группы и внутри этих групп создавать дисковые разделы. Управлять этими разделами очень удобно, можно на лету менять размеры тома, распределять том на несколько физических дисков, делать зеркалирование, создавать снимки и многое другое. Снимки, или так называемые снапшоты, о них я и расскажу сегодня.
Снимки LVM позволяют зафиксировать состояние дискового тома на определенный момент времени. Снимок хранится в специально создаваемой области и содержит состояние файловой системы на момент создания снимка. Такой снимок можно смонтировать, скопировать оттуда данные или наоборот. 
Так вот, очень удобно когда корневой раздел операционной системы находится в LVM томе. Бывает так, что нужно провести определенный эксперимент в ходе которого нужно установить программное обеспечение, выполнить настройку и изменить еще много чего. А между тем делать это на основном разделе не хочется, так как потом ошметки эксперимента нужно тщательно вычищать. Тут на выручку к нам и приходят LVM снимки. 
Итак цель - создать песочницу для экспериментов.
  • нужно создать снимки для тех разделов которые будут "испорчены" экспериментом;
  • создать временный каталог и смонтировать туда снимки;
  • смонтировать в песочницу псевдо-файловые системы;
  • выполнить chroot;
  • провести эксперимент;
  • разобрать песочницу и удалить снимки.
Важным условием для проведения мероприятия, является то что на физическом томе PV должно быть свободное место под наши снимки (многие дистрибутивы к сожалению, при установке полностью заполняют PV тома, поэтому приходится жертвовать swap разделом). 
При создании снимков нужно указать размер области отдаваемой под снимок. Здесь важно указать достаточный объем места под создаваемый снимок, так как снимок имеет четкую взаимосвязь с оригинальным томом (origin) и как только объем изменений в оригинальном томе превысит выделенный объем для снимка, снимок становится бесполезным.
Итак смотрим место и создаем два снимка для разделов santum/root и santum/usr.
# pvs
  PV         VG   Fmt  Attr PSize   PFree  
  /dev/sda1  santum lvm2 a--  930.39g 315.39g
# lvcreate -s -L5G -n santum/root-snapshot santum/root
  Logical volume "root-snapshot" created
# lvcreate -s -L3G -n santum/usr-snapshot santum/usr
  Logical volume "usr-snapshot" created

Теперь нужно смонтировать созданные снимки и сформировать будущую песочницу. Будущая песочница будет представлять собой образ нашей запущенной операционной системы со всеми смонтированными файловыми системами и запущенными процессами. Таким образом нам нужно перенести все смонтированные псевдо-файловые системы в нашу песочницу. Корнем песочницы будет каталог со смонтированным снимком нашей корневой фс. 
# mkdir /mnt/root-snapshot
# mount /dev/santum/root-snapshot /mnt/root-snapshot
# mount /dev/santum/usr-snapshot /mnt/root-snapshot/usr
# mount -o bind /dev /mnt/root-snapshot/dev
# mount -o bind /proc /mnt/root-snapshot/proc
# mount -o bind /sys /mnt/root-snapshot/sys


Вышеперечисленные псевдо-файловые системы /proc, /dev, /sys обязательный для монтирования. Однако в зависимости от дистрибутива их состав может варьироваться, например это могут быть /run, /run/lock, /dev/pts и т.п. 
Теперь когда песочница готова, можно выполнить chroot. Это операция установки нового корневого каталога. То есть мы переходим в только что созданное окружение на основе снимков. В моем случае с Gentoo Linux после chroot дополнительно можно обновить настройки окружения.
# chroot /mnt/root-snapshot /bin/bash
# env-update && source /etc/profile


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


Теперь когда эксперименты закончены, нужно в обратной последовательности разобрать песочницу: сначала делаем logout из песочницы, затем начинаем демонтирование псевдо-файловых систем, затем демонтируем снимки, ну и в конце удаляем снимки... Если конечно мы не захотим применить эти изменения в снимке к оригинальному тому...

На главную "Virtualizing Linux"

2 комментария:

  1. Так можно всегда расширить существующий vg на дополнительный диск (да хоть и на флешку) и использовать расширенное для создания снапшотов.

    ОтветитьУдалить
    Ответы
    1. Конечно можно, если есть куда и что подключать, в этом и заключается гибкость LVM.

      Удалить

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика