Поиск по сайту:

Используйте моментальный снимок LVM для резервного копирования ваших данных в Linux

Снимки LVM Linux — создание, расширение и восстановление снимков томов LVM в Linux

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

Что такое снимки LVM?

Существует два варианта защиты ваших данных от сбоев диска или других проблем. Вы можете создавать полные или инкрементальные резервные копии и хранить N копий. В качестве альтернативы с помощью LVM вы можете создать том моментального снимка, который будет делать снимки при внесении изменений в исходный том.

Снимки LVM используют механизм копирования при записи. Первоначально, когда вы создаете том моментального снимка, он будет содержать некоторые метаданные об исходном логическом томе и сведениях о его блоке. Когда вы вносите какие-либо изменения в исходный том, LVM будет отслеживать изменения и делать снимки измененных блоков. Здесь LVM просто сохраняет изменения, заблокированные в томе моментального снимка.

Настройка лаборатории

Я подключил к своей машине с Ubuntu два новых диска, которые будут использоваться в демонстрационных целях. Если вы хотите подробно узнать, как работает следующая команда, ознакомьтесь с нашим введением в руководство LVM, приведенным ниже.

Руководство по диспетчеру логических томов Linux (LVM) для начинающих

$ lsblk /dev/sd[cd]
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc    8:32   0  10G  0 disk 
sdd    8:48   0  15G  0 disk 

Оба диска инициализируются как физический том.

$ sudo pvcreate /dev/sd[cd]
Physical volume "/dev/sdc" successfully created.
Physical volume "/dev/sdd" successfully created.

Группа томов с именем "ostechnix_lab" создается на основе инициализированного физического тома.

$ sudo vgcreate ostechnix_lab /dev/sd[cd]
Volume group "ostechnix_lab" successfully created

Логический том с именем "lab" создается из группы томов "ostechnix_lab". Размер логического тома составляет 5 ГБ.

$ sudo lvcreate -L 5GB -n lab ostechnix_lab
Logical volume "lab" created.

Том отформатирован с использованием файловой системы ext4 и смонтирован в /opt/lvm_lab/.

sudo mkfs.ext4 /dev/ostechnix_lab/lab
mkdir /opt/lvm_lab
sudo mount /dev/ostechnix_lab/lab /opt/lvm_lab/

После создания логического тома на данный момент осталось около 20 ГБ свободного места.

$ sudo vgdisplay
  --- Volume group ---
  VG Name               ostechnix_lab
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               24.99 GiB
  PE Size               4.00 MiB
  Total PE              6398
  Alloc PE / Size       1280 / 5.00 GiB
  Free  PE / Size       5118 / 19.99 GiB
  VG UUID               LCGSEd-WTnT-lUEN-N0a8-QWhI-TqDi-lUZExd

Создание тома моментального снимка

Я собираюсь создать том моментального снимка размером 5 ГБ. Выполните следующую команду, чтобы создать том моментального снимка:

$ sudo lvcreate -L +5G --snapshot --name snap /dev/mapper/ostechnix_lab-lab
  Logical volume "snap" created.

Позвольте мне рассказать, что делает каждый флаг в приведенной выше команде.

  • -L +5G => Значение пробела должно быть передано в флаг -L. Здесь выделено 5ГБ.
  • --snapshot => Этот флаг создает том как том моментального снимка. Вы также можете использовать -s вместо флага --snapshot.
  • --name => Имя, присвоенное тому снимка. В моем случае "snap" — это имя тома моментального снимка.
  • /dev/mapper/ostechnix_lab-lab => Это расположение исходного тома.

Запустите команду "lvs", чтобы просмотреть том моментального снимка. Взгляните на раздел "origin" в приведенном ниже выводе. Он указывает на исходный том "lab", а значение % данных равно "0,01". снимки будут сделаны в случае каких-либо изменений в блоках этого тома.

$ sudo lvs
  LV   VG            Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lab  ostechnix_lab owi-aos--- 5.00g                                                    
  snap ostechnix_lab swi-a-s--- 5.00g      lab    0.01  

Вы также можете смонтировать том моментального снимка и посмотреть, какие файлы и каталоги присутствуют.

mkdir /mnt/LVM_Snapshot/
mount /dev/mapper/ostechnix_lab-snap /mnt/LVM_Snapshot/

Как восстановить снимок LVM

Выполните следующую команду, чтобы создать случайные данные в исходном томе размером 1 ГБ.

dd if=/dev/zero of=/data/dummy_file2 bs=1G count=1 oflag=dsync

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

$ ls -lh /opt/lvm_lab/ostechnix_sample.txt 
-rw-r--r-- 1 root root 1.0G Feb 19 15:46 /opt/lvm_lab/ostechnix_sample.txt
$ sudo lvs
  LV   VG            Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lab  ostechnix_lab owi-aos--- 5.00g                                                    
  snap ostechnix_lab swi-a-s--- 5.00g      lab    20.09    

Чтобы восстановить снимок LVM, выполните следующую процедуру. Важным моментом является то, что после восстановления моментального снимка логический том будет автоматически удален.

ШАГ 1. Отключите файловую систему, в которой смонтирован исходный логический том.

sudo umount /opt/lvm_lab

ШАГ 2. Запустите команду lvconvert, чтобы начать процесс восстановления.

$ sudo lvconvert --merge /dev/ostechnix_lab/snap 
sudo lvconvert --merge /dev/ostechnix_lab/snap
  Merging of volume ostechnix_lab/snap started.
  ostechnix_lab/lab: Merged: 80.04%
  ostechnix_lab/lab: Merged: 80.42%
  ostechnix_lab/lab: Merged: 81.00%
  ostechnix_lab/lab: Merged: 81.43%
  ostechnix_lab/lab: Merged: 89.06%
  ostechnix_lab/lab: Merged: 98.04%
  ostechnix_lab/lab: Merged: 100.00%

Вы можете запустить команду lvs, и в разделе Attr отобразится "O", что означает, что восстановление моментального снимка в ходе выполнения.

ШАГ 3. После завершения процесса слияния том моментального снимка будет автоматически удален. Вы можете проверить это, выполнив команду lvs.

$ sudo lvs
  LV   VG            Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lab  ostechnix_lab -wi-ao---- 5.00g    

ШАГ 4. Подключите логический том и проверьте, восстановлены ли данные.

sudo mount /dev/ostechnix_lab/lab /opt/lvm_lab

Изменение размера тома снимка LVM и повреждение

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

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

Чтобы решить эту проблему, у вас есть три варианта.

  • Выделите размер тома моментального снимка и исходного тома поровну.
  • Вручную увеличьте размер тома моментального снимка.
  • Автоматически увеличивать размер тома моментального снимка. Это рекомендуемый метод.

Чтобы увеличить размер логического тома вручную, выполните следующую команду. Здесь к тому моментального снимка добавляется размер 3 ГБ.

sudo lvextend -L +3G /dev/ostechnix_lab/snap

Чтобы автоматически увеличить размер, вам необходимо отредактировать файл "/etc/lvm/lvm.conf". Вам необходимо изменить два важных параметра.

Параметр autoextend_threshold автоматически расширяет том при заполнении определенного процента тома моментального снимка. Например, если пороговое значение установлено на 50% для тома 2 ГБ, то после заполнения 1 ГБ пространства будет автоматически добавлено.

Другими словами, если у вас объем моментального снимка 2 ГБ и порог установлен на 50, что означает, что используется 50% пространства, что составляет 50%.1 ГБ, то должно произойти автоматическое продление.

Вам необходимо указать, сколько места должно быть добавлено к тому моментального снимка, задав параметр autoextend_percent.

Установить параметр Autoextend_percent

Заключение

В этой статье мы увидели, что такое снимки LVM, как создавать новые тома моментальных снимков и восстанавливать тома моментальных снимков. Наконец, мы увидели, как увеличить том моментального снимка как вручную, так и автоматически.

Читать далее:

  • Как переместить группу томов LVM на другой компьютер в Linux

Статьи по данной тематике