четверг, 12 декабря 2013 г.

Резервное копирование LVM XEN DomU

Итак, необходимо создать резервную копию гостевой ОС (в нашем случае win2003).

Рисунок 1. Исходная схема раскладки LVM XEN DomU


Мы хотим создавать резервные копии не останавливая гостевую систему. Для этого воспользуемся механизмом "снепшотов".


"Снепшот" - это такой тип lvm - устройства, который представляет собой доступную только на чтение копию другого тома на момент выполнения процедуры "снепшот". Это дает возможность продолжать работу не заботясь о том, что данные могут измениться в момент резервного копирования. Кроме того, нам не нужно останавливать работу гостевой системы на время выполнения резервного копирования.

Алгоритм:

1. Создаем "снепшот" логического тома LVM.

2. Копируем весь раздел в файл (на лету сжимаем) - без остановки гостевой ОС.

3. Удаляем снепшот.

4. В случае краха гостевой ОС - останавливаем виртуальный домен. Восстанавливаем раздел из файла, содержащего "снимок" раздела. Запускаем виртуальный домен.

А теперь детали:

1. Создаем "снепшот" логического тома LVM.

root@host-system:~# lvdisplay
File descriptor 7 left open
  --- Logical volume ---   
  LV Name                /dev/vg/lv1
  VG Name                vg       
  LV UUID                MOQz2A-cvrL-pJzT-63yU-ltRQ-rLjW-t6ok3V
  LV Write Access        read/write                          
  LV Status              available                           
  # open                 2                                   
  LV Size                100.00 GB                            
  Current LE             7680                                
  Segments               1                                   
  Allocation             inherit                             
  Read ahead sectors     auto                                
  - currently set to     256                                 
  Block device           253:0    
 

root@host-system:~# xm list
Name              ID   Mem VCPUs      State   Time(s)
Domain-0           0   602     4     r----- 374304.9
win2003          104  2048     2     -b----   2844.4


Для "снепшота" необходимо выделить дисковое пространство, достаточное для сохранения изменений, произошедших в промежуток времени между моментом создания "снепшота" и моментом, когда закончится копирование "снимка" в файл. Считается что 10% от размера логического тома должно быть достаточно.

root@host-system:~# lvcreate --size 10G --snapshot --name win2003-snap /dev/vg/lv1



root@host-system:~# lvdisplay
File descriptor 7 left open
  --- Logical volume ---   
  LV Name                /dev/vg/lv1
  VG Name                vg       
  LV UUID                MOQz2A-cvrL-pJzT-63yU-ltRQ-rLjW-t6ok3V
  LV Write Access        read/write                          
  LV snapshot status     source of                           
                         /dev/vg/win2003-snap [active]
        
  LV Status              available                           
  # open                 2                                   
  LV Size                30.00 GB                            
  Current LE             7680                                
  Segments               1                                   
  Allocation             inherit                             
  Read ahead sectors     auto                                
  - currently set to     256                                 
  Block device           253:0   

 --- Logical volume ---
  LV Name                /dev/vg/win2003-snap
  VG Name                vg
  LV UUID                fP1eTL-vMAQ-AXBC-LDBj-BDad-gvyV-deU9fY
  LV Write Access        read/write
  LV snapshot status     active destination for /dev/vg/lv1
  LV Status              available
  # open                 0
  LV Size                100.00 GB
  Current LE             7680
  COW-table size         10.00 GB
  COW-table LE           2560
  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:4

 

Рисунок 2. Раскладка LVM XEN DomU после создания "снепшота"


2. Копируем весь раздел в файл (на лету сжимаем)

root@host-system:~# dd if=/dev/vg/lv1 bs=1024000 | gzip -cf > /mnt/backup-storage/win2003.gz
Сжимается весьма неплохо - 100 GB LVM - раздел (гостевая ОС занимала около 7 GB) поместился в файл размером 5.3 GB

3. Удаляем снепшот

Снепшот больше не нужен - удалим его:

root@host-system:~# lvremove /dev/vg/win2003-snap
root@host-system:~# lvdisplay
File descriptor 7 left open
  --- Logical volume ---   
  LV Name                /dev/vg/lv1
  VG Name                vg       
  LV UUID                MOQz2A-cvrL-pJzT-63yU-ltRQ-rLjW-t6ok3V
  LV Write Access        read/write                          
  LV Status              available                           
  # open                 2                                   
  LV Size                100.00 GB                            
  Current LE             7680                                
  Segments               1                                   
  Allocation             inherit                             
  Read ahead sectors     auto                                
  - currently set to     256                                 
  Block device           253:0 


4. Восстановление
В случае краха гостевой ОС остановим виртуальный домен:

root@host-system:~# xm shutdown win2003

root@host-system:~# xm list
Name        ID     Mem    VCPUs    State     Time(s)
Domain-0     0     602        4   r-----    374304.9


Восстановим раздел из файла, содержащего резервную копию:

root@host-system:~# gunzip -c /mnt/backup-storage/win2003.gz | dd of=/dev/vg/lv1 bs=1024000


Стартуем виртуальный домен:

root@host-system:~# xm create /etc/xen/config/win2003
root@host-system:~# xm list
Name             ID   Mem VCPUs      State      Time(s)
Domain-0          0   602     4     r-----    374304.9
win2003         104  2048     2     -b----      2844.4



P.S.
root@host-system:~# uname -a
Linux
host-system 2.6.26-1-xen-amd64 #1 SMP Sat Jan 10 20:39:26 UTC 2009 x86_64 GNU/Linux
root@host-system:~# cat /etc/debian_version
5.0
root@host-system:~# aptitude show xen-hypervisor
Package: xen-hypervisor
State: not a real package
Provided by: xen-hypervisor-3.2-1-amd64


Комментариев нет:

Отправить комментарий