The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Использование LVM snapshots для упрощения работы с виртуальными машинами (lvm snapshot disk redhat virtual xen)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: lvm, snapshot, disk, redhat, virtual, xen,  (найти похожие документы)
From: Andrey Markelov Date: Mon, 3 Aug 2010 17:02:14 +0000 (UTC) Subject: Использование LVM snapshots для упрощения работы с виртуальными машинами Оригинал: http://markelov.blogspot.com/2008/10/lvm-snapshots.html Использование мгновенных снимков LVM (Snapshots, снапшоты) при работе с виртуальными машинами позволяет получить ряд полезных преимуществ: * быстрое, за считанные минуты, развертывание стандартных конфигураций; * создание/удаление машин, для которых требуется быстрый возврат к стандартной конфигурации (тестовые/учебные машины, машины без сохранения конфигурации); * экономия места дискового хранилища. Продемонстрируем работу на примере дистрибутива Fedora/RHEL с использованием гипервизора Xen. Задача разбивается на следующие шаги: 1. создание логического тома; 2. установка на логический том виртуальной машины; 3. удаление "машинозависимой" информации; 4. создание снапшота логического тома; 5. копирование и редактирование конфигурационного файла DomU; 6. создание домена; 7. для создания следующего домена переходим к пункту 4. Если вы плохо знакомы с устройством и командами LVM2, то перед тем, как читать дальнейший текст, ознакомьтесь, например, с русскоязычной сатьей на IBM developerWorks Россия. Сначала подготовим виртуальную машину-шаблон. Создадим новый раздел на жестком диске и установим его тип в 8e (Linux LVM): [root@server1 ~]# fdisk -l Disk /dev/sda: 160.0 ГБ, 160041885696 байт 255 heads, 63 sectors/track, 19457 cylinders Units = цилиндры по 16065 * 512 = 8225280 байт Device Boot Start End Blocks Id System /dev/sda1 * 1 19 152586 83 Linux /dev/sda2 20 12767 102398310 83 Linux /dev/sda3 12768 13022 2048287+ 82 Linux своп / Solaris /dev/sda4 13023 19457 51689137+ 5 Расширенный /dev/sda5 13023 19457 51689106 8e Linux LVM Теперь инициализируем /dev/sda5 как физический том, создадим на нем группу томов volgroup и часть дискового пространства volgroup отдадим под логический том vmtemplate: [root@server1 ~]# pvcreate /dev/sda5 Physical volume "/dev/sda5" successfully created [root@server1 ~]# vgcreate volgroup /dev/sda5 Volume group "volgroup" successfully created [root@server1 ~]# lvcreate -L 16G -n vmtemplate volgroup Logical volume "vmtemplate" created [root@server1 ~]# vgdisplay volgroup --- Volume group --- VG Name volgroup System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 49,29 GB PE Size 4,00 MB Total PE 12619 Alloc PE / Size 4096 / 16,00 GB Free PE / Size 8523 / 33,29 GB VG UUID t0E3c4-DYeW-Si8k-FBNF-sRnO-wVYG-cmpEX7 Итак, по выводу vgdisplay видно, что под снапшоты мы оставили 33G. Сколько выделить места под логический том vmtemplate и снапшоты, зависит от количества и целей, для которых будут использоваться виртуальные машины. На этом мы закончили подготовительные действия, и теперь можно приступить к созданию эталонной виртуальной машины. В Fedora/RHEL проще всего ее создать при помощи утилиты virt-manager. Запустив мастер создания виртуальной машины, указываем ее имя, например, template1. В качестве типа виртуализации выбираем "паравиртуализация", задаем URL, по которому доступен дистрибутив, и месторасположение kickstart-файла, если вы заранее его подготовили. Теперь - важно: в качестве дискового хранилища указываем наш заранее созданный логический том /dev/volgroup/vmtemplate. На оставшихся двух экранах укажем способ подключения к сети, число ЦП и объем ОЗУ. В итоге: Пока наша виртуальная машина устанавливается, можно на несколько минут отойти и выпить чашечку кофе :) Следующий важный шаг, который необходимо выполнить по окончании установки, - удалить всю "машинозависимую" информацию с жесткого диска виртуальной машины. Действительно, нам вряд ли будут необходимы несколько машин с одинаковым MAC-адресом или именем хоста. В большинстве случаев, единственное, что нужно отредактировать, это удалить строку HWADDR в файле конфигурации сетевого интерфейса: [root@template1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 # Xen Virtual Ethernet DEVICE=eth0 BOOTPROTO=dhcp DHCPCLASS= HWADDR=00:16:3E:XX:XX:XX ONBOOT=yes После чего завершаем работу template1: [root@server1 ~]# xm shutdown template1 Наш шаблон готов. Дальнейшие шаги повторяем столько раз, сколько виртуальных машин нам необходимо. При регулярном создании/удалении машин проще всего будет автоматизировать эти шаги при помощи скрипта. Создаем снапшот: [root@server1 ~]# lvcreate -L 1G -s -n snap01 /dev/volgroup/vmtemplate Logical volume "snap01" created [root@server1 ~]# lvdisplay /dev/volgroup/snap01 --- Logical volume --- LV Name /dev/volgroup/snap01 VG Name volgroup LV UUID 1mMgmi-FdGJ-EDJK-QWXI-ePH3-EIRH-ZX2Ik3 LV Write Access read/write LV snapshot status active destination for /dev/volgroup/vmtemplate LV Status available # open 0 LV Size 16,00 GB Current LE 4096 COW-table size 1,00 GB COW-table LE 256 Allocated to snapshot 0,00% Snapshot chunk size 4,00 KB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 После чего нам нужно создать конфигурационный файл для домена vm01. За основу можно взять конфигурационный файл "шаблона": [root@server1 ~]# cp /etc/xen/template1 /etc/xen/vm01 После редактирования описание виртуальной машины не должно содержать UUID и MAC-адрес, или же они должны быть уникальными. Также необходимо сменить имя домена с template1 на выбранное ранее vm01. Ну и конечно в качестве хранилища нужно указать наш снапшот. В итоге должно получиться нечто похожее на: [root@server1 ~]# cat /etc/xen/vm01 name = "vm01" maxmem = 384 memory = 384 vcpus = 1 bootloader = "/usr/bin/pygrub" on_poweroff = "destroy" on_reboot = "restart" on_crash = "restart" vfb = [ "type=vnc,vncunused=1" ] disk = [ "phy:/dev/volgroup/snap01,xvda,w" ] vif = [ "bridge=virbr0" ] Все готово. Создаем домен: [root@server1 ~]# xm create /etc/xen/vm01 Using config file "/etc/xen/vm01". Started domain vm01 [root@server1 ~]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 1510 2 r----- 7528.0 vm01 4 383 1 -b---- 15.4 При необходимости всегда можно проверить, сколько места занимает "разница" между шаблоном и снапшотом, при помощи команды: [root@server1 ~]# lvdisplay /dev/volgroup/snap01 Сразу после создания домена vm01 и интерактивного входа пользователя (GNOME) - эта разница составляет порядка 20Мб. Теперь, пользуясь нашим "шаблонным" логическим томом vmtemplate, мы можем создавать/удалять столько виртуальных машин, сколько нам надо, экономя время и дисковое пространство хоста.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру