Снэпшот физического сервера на примере centos7

Допустим у нас есть физический сервер п/у Centos7 на который мы хотим установить некоторое количество ПО, но у нас нет уверенности, что оно встанет как надо, поэтому мы хотим иметь возможность откатить состояние сервера на время до установки этого ПО.

Характеристики файловой системы сервера следующие:

### > 
### > Filesystem               Size  Used Avail Use% Mounted on
### > /dev/mapper/centos-root  4.0G   54M  4.0G   2% /
### > /dev/mapper/centos-usr   8.0G  1.2G  6.9G  14% /usr
### > /dev/mapper/centos-var    30G  264M   30G   1% /var
### > /dev/mapper/centos-home  4.0G   33M  4.0G   4% /home
### > /dev/mapper/centos-opt   4.0G   33M  4.0G   1% /opt
### > /dev/mapper/centos-tmp   4.0G   33M  4.0G   1% /tmp
### > /dev/sda1                497M  216M  281M  44% /boot

Всё fs, кроме /boot собраны на LVM

В VG должно быть достаточно свободного места:

# vgs centos
### >  VG     #PV #LV #SN Attr   VSize   VFree
### >  centos   2   5   0 wz--n- 136.20g 98.95g

Пункты 1,2 опциональны, если сервер грузится через UEFI будут нюансы.

1)

vim /etc/default/grub

Удаляем "rhgb" из строки начинающейся с "GRUB_CMDLINE_LINUX=..."

2)

grub2-mkconfig -o /boot/grub2/grub.cfg

3)

vim /etc/dracut.conf

Добавляем строку: add_drivers+="dm-snapshot"

4) Генерируем новый initramfs

cd /boot
mv -f initramfs-`uname -r`.img initramfs-`uname -r`.img.bak
dracut -v /boot/initramfs-`uname -r`.img `uname -r`

5) Делаем снапы нужных нам томов, размер снапа можно указать и меньше оригинальных томов, главное, чтобы место под изменения хватило:

lvcreate -L 4G -s -n snap-root /dev/mapper/centos-root
lvcreate -L 8G -s -n snap-usr /dev/mapper/centos-usr
lvcreate -L 4G -s -n snap-opt /dev/mapper/centos-opt
lvcreate -L 30G -s -n snap-var /dev/mapper/centos-var
tar czf /home/boot.tgz /boot
tar czf /home/etc.tgz /etc
lvs

>>> 
### >  LV        VG        Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
### >  home      centos    -wi-ao----  4.00g
### >  opt       centos    owi-aos---  4.00g
### >  root      centos    owi-aos---  4.00g
### >  snap-opt  centos    swi-a-s---  4.00g      opt    0.05
### >  snap-root centos    swi-a-s---  4.00g      root   0.85
### >  snap-usr  centos    swi-a-s---  8.00g      usr    10.84
### >  snap-var  centos    swi-a-s--- 30.00g      var    0.41
### >  swap      centos    -wi-ao----  4.00g
### >  tmp       centos    -wi-ao----  4.00g
### >  usr       centos    owi-aos---  8.00g
### >  var       centos    owi-aos--- 30.00g
<<<

Соответственно, чтобы откатиться нужно выполнить следующие команды:

lvconvert --merge /dev/centos/snap-opt
lvconvert --merge /dev/centos/snap-usr
lvconvert --merge /dev/centos/snap-var
lvconvert --merge /dev/centos/snap-root
tar xzf /home/boot.tgz -C /
reboot

после ребута

# lvs
### >    LV   VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
### >    home centos -wi-ao---- 4.00g
### >    opt  centos -wi-ao---- 4.00g
### >    root centos -wi-ao---- 4.00g
### >    swap centos -wi-ao---- 4.00g
### >    tmp  centos -wi-ao---- 4.00g
### >    usr  centos -wi-ao---- 8.00g
### >    var  centos -wi-ao---- 30.00g
  
Если есть что-то типа: "var  centos Owi-ao---- 30.00g" 
             #______________________^________________

Надо подождать пока слияние не закончится.