LVM. Снэпшоты: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
Строка 5: Строка 5:
Прежде всего, чтобы пользоваться снэпшотами на LVM, необходимо, чтобы на '''VG''' было свободное неиспользуемое место
Прежде всего, чтобы пользоваться снэпшотами на LVM, необходимо, чтобы на '''VG''' было свободное неиспользуемое место


<code>vgs</code><blockquote>  VG                    #PV #LV #SN Attr   VSize    VFree
<code>vgs</code>


  VG                    #PV #LV #SN Attr   VSize    VFree
  centos_centos7-test01   1   2   0 wz--n-  <31.00g   4.00m
  centos_centos7-test01   1   2   0 wz--n-  <31.00g   4.00m
  data                    1   1   0 wz--n- 1020.00m '''512.00m'''


  data                    1   1   0 wz--n- 1020.00m '''512.00m'''</blockquote>   
   


То есть если вы создали раздел LVM root без свободного места, или создали раздел с данными через команду:
То есть если вы создали раздел LVM root без свободного места, или создали раздел с данными через команду:
Строка 21: Строка 23:
Как это сделать можно узнать в статье [[LVM. Расширение объема раздела LVM за счет другого раздела или диска]]
Как это сделать можно узнать в статье [[LVM. Расширение объема раздела LVM за счет другого раздела или диска]]


== Использовать LVM снэпшоты на НЕсистемном разделе ==
==Использовать LVM снэпшоты на НЕсистемном разделе==


=== Создадим PV, VG ===
===Создадим PV, VG===
<code>pvcreate /dev/sdb1</code>
<code>pvcreate /dev/sdb1</code>


<code>vgcreate data /dev/sdb1</code>
<code>vgcreate data /dev/sdb1</code>


=== Создадим LV, используя 50% от раздела, остальное - под будущие снапы ===
===Создадим LV, используя 50% от раздела, остальное - под будущие снапы===
<code>lvcreate -l 50%FREE --name data data</code>
<code>lvcreate -l 50%FREE --name data data</code>


Строка 39: Строка 41:
<code>  data                    1   1   0 wz--n- 1020.00m 512.00m</code>
<code>  data                    1   1   0 wz--n- 1020.00m 512.00m</code>


=== Создадим ФС, точку монтирования и смонтируем раздел ===
===Создадим ФС, точку монтирования и смонтируем раздел===
<code>mkfs.ext4 /dev/data/data</code>
<code>mkfs.ext4 /dev/data/data</code>


Строка 46: Строка 48:
<code>mount /dev/mapper/data-data /mnt/data</code>
<code>mount /dev/mapper/data-data /mnt/data</code>


=== Правим fstab ===
===Правим fstab===
<code>nano /etc/fstab</code><blockquote>...
<code>nano /etc/fstab</code><blockquote>...


Строка 53: Строка 55:
...</blockquote>
...</blockquote>


=== Создадим тестовый файл ===
===Создадим тестовый файл===
<code>echo 1 > /mnt/data/test.txt</code>
<code>echo 1 > /mnt/data/test.txt</code>


Строка 62: Строка 64:
...</blockquote>
...</blockquote>


=== Создадим снэп ===
===Создадим снэп===
'''''--size 1G''' - Это объем под данные снэпшота. Если указанный объем будет больше, чем текущее свободное место, то lvm урежет объем до максимально возможного. Например, в данном случае размер снэпа урезается до 512МБ''
'''''--size 1G''' - Это объем под данные снэпшота. Если указанный объем будет больше, чем текущее свободное место, то lvm урежет объем до максимально возможного. Например, в данном случае размер снэпа урезается до 512МБ''


Строка 77: Строка 79:
  data_snap_2021-18-12_17-13-34 data                  swi-a-s--- 104.00m      data   0.01  </blockquote>
  data_snap_2021-18-12_17-13-34 data                  swi-a-s--- 104.00m      data   0.01  </blockquote>


=== Обновляем тестовый файл ===
===Обновляем тестовый файл===
<code>echo 2 > /mnt/data/test.txt</code>
<code>echo 2 > /mnt/data/test.txt</code>


Строка 86: Строка 88:
...</blockquote>
...</blockquote>


=== Откатываемся на снэпшот data_snap_2021-18-12_17-13-34 ===
===Откатываемся на снэпшот data_snap_2021-18-12_17-13-34===
Сначала '''обязательно''' отмонтируем основной раздел, для которого делали снэп
Сначала '''обязательно''' отмонтируем основной раздел, для которого делали снэп


Строка 135: Строка 137:
  data data                  -wi-ao---- 508.00m</blockquote>
  data data                  -wi-ao---- 508.00m</blockquote>


=== Проверяем откат содержимого тестового файла ===
===Проверяем откат содержимого тестового файла===
<code>echo 1 > /mnt/data/test.txt</code>
<code>echo 1 > /mnt/data/test.txt</code>


Строка 144: Строка 146:
...</blockquote>
...</blockquote>


=== Удалить снап, все новые изменения будут приняты без возможности отката ===
===Удалить снап, все новые изменения будут приняты без возможности отката===
<code>lvremove /dev/mapper/data-data_snap_2021--18--12_17--34--33</code>
<code>lvremove /dev/mapper/data-data_snap_2021--18--12_17--34--33</code>

Версия 09:50, 19 декабря 2021


Описание

Прежде всего, чтобы пользоваться снэпшотами на LVM, необходимо, чтобы на VG было свободное неиспользуемое место

vgs

  VG                    #PV #LV #SN Attr   VSize    VFree   centos_centos7-test01   1   2   0 wz--n-  <31.00g   4.00m   data                    1   1   0 wz--n- 1020.00m 512.00m

 

То есть если вы создали раздел LVM root без свободного места, или создали раздел с данными через команду:

lvcreate -l 100%FREE --name graylog_data data1

то использовать снэпшоты не получится

Для этого будет необходимо расширять VG дополнительным разделом

Как это сделать можно узнать в статье LVM. Расширение объема раздела LVM за счет другого раздела или диска

Использовать LVM снэпшоты на НЕсистемном разделе

Создадим PV, VG

pvcreate /dev/sdb1

vgcreate data /dev/sdb1

Создадим LV, используя 50% от раздела, остальное - под будущие снапы

lvcreate -l 50%FREE --name data data

vgs

  VG                    #PV #LV #SN Attr   VSize    VFree

  centos_centos7-test01   1   2   0 wz--n-  <31.00g   4.00m

  data                    1   1   0 wz--n- 1020.00m 512.00m

Создадим ФС, точку монтирования и смонтируем раздел

mkfs.ext4 /dev/data/data

mkdir /mnt/data

mount /dev/mapper/data-data /mnt/data

Правим fstab

nano /etc/fstab

...

/dev/mapper/data-data /mnt/data                       ext4     defaults        0 0

...

Создадим тестовый файл

echo 1 > /mnt/data/test.txt

cat /mnt/data/test.txt

...

1

...

Создадим снэп

--size 1G - Это объем под данные снэпшота. Если указанный объем будет больше, чем текущее свободное место, то lvm урежет объем до максимально возможного. Например, в данном случае размер снэпа урезается до 512МБ

lvcreate --size 1G --snapshot --name data_snap_`date +%Y-%d-%m_%H-%M-%S` /dev/mapper/data-data

lvs

  LV                            VG                    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root                          centos_centos7-test01 -wi-ao----  28.99g

  swap                          centos_centos7-test01 -wi-ao----   2.00g

  data                          data                  owi-aos--- 508.00m

  data_snap_2021-18-12_17-13-34 data                  swi-a-s--- 104.00m      data   0.01 

Обновляем тестовый файл

echo 2 > /mnt/data/test.txt

cat /mnt/data/test.txt

...

2

...

Откатываемся на снэпшот data_snap_2021-18-12_17-13-34

Сначала обязательно отмонтируем основной раздел, для которого делали снэп

umount /mnt/data/

Теперь откатываемся на снэп

Снэп при успешном откате удаляется!

lvconvert --merge /dev/mapper/data-data_snap_2021--18--12_18--28--45

  Merging of volume data/data_snap_2021-18-12_18-28-45 started.   data/data: Merged: 100.00%

Монтируем основной раздел обратно

mount /mnt/data/

Проверяем

lvs

  LV   VG                    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root centos_centos7-test01 -wi-ao----  28.99g

  swap centos_centos7-test01 -wi-ao----   2.00g

  data data                  -wi-ao---- 508.00m

Если откатиться без отмонтирования основного раздела - будет предупреждение lvconvert --merge /dev/mapper/data-data_snap_2021--18--12_18--33--55

  Delaying merge since origin is open.   Merging of snapshot data/data_snap_2021-18-12_18-33-55 will occur on next activation of data/data.

Также в выводе будет атрибут "О" (The answer is: The merging is delayed, otherwise the progress would be showing up using the lvs command.) lvs

  LV   VG                    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root centos_centos7-test01 -wi-ao----  28.99g

  swap centos_centos7-test01 -wi-ao----   2.00g

  data data                  Owi-aos--- 508.00m

Отмонтируем раздел

umount /mnt/data/

Вводим команду

lvchange  --refresh data

Проверяем

lvs

  LV   VG                    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root centos_centos7-test01 -wi-ao----  28.99g

  swap centos_centos7-test01 -wi-ao----   2.00g

  data data                  -wi-ao---- 508.00m

Проверяем откат содержимого тестового файла

echo 1 > /mnt/data/test.txt

cat /mnt/data/test.txt

...

1

...

Удалить снап, все новые изменения будут приняты без возможности отката

lvremove /dev/mapper/data-data_snap_2021--18--12_17--34--33