Как использовать моментальный снимок LVM для резервного копирования данных в Linux
В прошлой статье мы рассмотрели основные принципы LVM. В этой статье мы сосредоточимся на том, как защитить данные с помощью создания снимков LVM.
Есть два варианта защиты данных от сбоев диска или других проблем. Вы можете делать полные или инкрементные резервные копии и хранить N-количество копий. В качестве альтернативы с помощью LVM вы можете создать том моментальных снимков, который будет делать моментальные снимки при внесении изменений в исходный том.
LVM моментальные снимки используют механизм копирования при записи для создания моментальных снимков. Первоначально, когда вы создаете том моментальных снимков, он будет содержать некоторые метаданные об исходном логическом томе и сведения о его блоках. Когда вы вносите какие-либо изменения в исходный том, LVM будет отслеживать изменения и делать моментальный снимок измененных блоков. Здесь LVM просто сохраняет заблокированные изменения на том моментального снимка.
Тестовая лабораторя
Я подключил два новых диска к своей машине Ubuntu, которые будут использоваться в демонстрационных целях. Если вы хотите узнать, как работает следующая команда в деталях, ознакомьтесь с нашим руководством введение в 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. Размер логического тома составляет 5GB.
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/
После создания логического тома имеется почти 20GB свободного пространства.
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
— Этот флаг создает том как snapshot том. Вы также можете использовать-s
вместо флага--snapshot
.—name
— Имя, присваиваемое тому снапшота. В моем случае snap – это имя моего тома моментальных снимков./dev/mapper/ostechnix_lab-lab
— Это расположение исходного тома.
Выполните команду lvs
, чтобы увидеть снимок тома. Посмотрите на раздел origin из приведенного ниже вывода. Он указывает на исходный том lab, а data% составляет 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
, который будет расширять том, когда заданный процент пространства будет использован в томе моментальных снимков. Например, если у вас есть том моментальных снимков 2GB и порог установлен на 50, что означает, что если используется 50% пространства (это составляет 1GB), то должно произойти автоматическое расширение.
Вы должны установить, сколько места должно быть добавлено к тому моментальных снимков, установив параметр autoextend_percent
.
Заключение
В этой статье мы рассмотрели что такое моментальные снимки LVM, как создавать новые тома моментальных снимков и восстанавливать тома моментальных снимков.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен ostechnix.com
Комментарии (0)