Используйте моментальный снимок 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