Повесть о Linux и LVM (part 2) - Об ОС *Nix - Системное администрирование - Каталог статей - Архив документации и мануалов для админов

Вторник, 06.12.2016, 02:49
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 193

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Об ОС *Nix

Повесть о Linux и LVM (part 2)

[править] Резервное копирование при помощи "снапшотов"

Развивая приведенный пример, предположим, что нам нужно выполнить резервирование базы данных. Для этой задачи мы будем использовать устройство-"снапшот".

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

В группе томов ops у нас осталось около 600Мб свободного места, его мы и задействуем для "снапшот"-устройства. Размер "снапшот"-устройства не регламентируется, но должен быть достаточен для сохранения всех изменений, которые могут произойти с томом, с которого он сделан, за время жизни снапшота. 600Мб должно хватить для наших целей:

%# lvcreate -L592M -s -n dbbackup /dev/ops/databases 
lvcreate -- WARNING: the snapshot must be disabled if it gets full
lvcreate -- INFO: using default snapshot chunk size of 64 KB for "/dev/ops/dbbackup"
lvcreate -- doing automatic backup of "ops"
lvcreate -- logical volume "/dev/ops/dbbackup" successfully create

Если вы делаете "снапшот" файловой системы XFS, нужно выполнить на смонтированной файловой системе команду xfs_freeze, и лишь после этого создавать "снапшот":

%# xfs_freeze -f /mnt/point; lvcreate -L592M -s -n dbbackup /dev/ops/databases; xfs_freeze -u /mnt/point

Icon-caution.gif

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

После того как мы создали "снапшот", его нужно смонтировать:

%# mkdir /mnt/ops/dbbackup
%# mount /dev/ops/dbbackup /mnt/ops/dbbackup
mount: block device /dev/ops/dbbackup is write-protected, mounting read-only

Если вы работаете с файловой системой XFS, вам будет нужно при монтировании указать опцию nouuid:

%# mount -o nouuid,ro /dev/ops/dbbackup /mnt/ops/dbbackup

Выполним резервное копирование раздела:

%# tar -cf /dev/rmt0 /mnt/ops/dbbackup
tar: Removing leading `/' from member names

После выполнения необходимых процедур, нужно удалить устройство-"снапшот":

%# umount /mnt/ops/dbbackup
%# lvremove /dev/ops/dbbackup 
lvremove -- do you really want to remove "/dev/ops/dbbackup"? [y/n]: y
lvremove -- doing automatic backup of volume group "ops"
lvremove -- logical volume "/dev/ops/dbbackup" successfully removed

Icon-caution.gif

Запись данных на том, с которого сделан снимок, очень сильно замедлена по сравнению с обычной работой!

Элементарное сравнение производительности, наглядно демонстрирующее разницу между скоростью работы с томом, у которого нет снапшотов (смонтирован в /data/lv3/xxxx), и с томом, на котором есть снапшот (смонтирован в /data/lv4/qqqq).

%# dd if=/dev/zero of=/data/lv3/xxxx count=100 bs=1024k
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.827104 s, 127 MB/s

%# dd if=/dev/zero of=/data/lv4/qqqq count=100 bs=1024k
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 5.77779 s, 18.1 MB/s

Подробнее о снапшотах:

Резервное копирование MySQL и LVM:

[править] Удаление диска из группы томов

Скажем, вы хотите освободить один диск из группы томов. Для этого необходимо выполнить процедуру переноса использующихся физических экстентов. Естественно, что на других физических томах должно быть достаточно свободных физических экстентов.

Выполните команду:

%# pvmove /dev/hdb
pvmove -- moving physical extents in active volume group "dev"
pvmove -- WARNING: moving of active logical volumes may cause data loss!
pvmove -- do you want to continue? [y/n] y
pvmove -- 249 extents of physical volume "/dev/hdb" successfully moved

Учтите, что операция переноса физических экстентов занимает много времени. Если вы хотите наблюдать за процессом переноса экстентов, укажите в команде ключ -v .

После окончания процедуры переноса, удалите физический том из группы томов:

%# vgreduce dev /dev/hdb
vgreduce -- doing automatic backup of volume group "dev"
vgreduce -- volume group "dev" successfully reduced by physical volume:
vgreduce -- /dev/hdb

Теперь данный диск может быть физически удален из системы или использован в других целях. Например, добавлен в другую группу томов.

[править] Перенос группы томов на другую систему

Физический перенос группы томов на другую систему организовывается при помощи команд vgexport и vgimport.

Сперва необходимо размонтировать все логические тома группы томов и деактивировать группу:

%# unmount /mnt/design/users
%# vgchange -an design
vgchange -- volume group "design" successfully deactivated

После этого экспортируем группу томов. Процедура экспорта запрещает доступ к группе на данной системе и готовит ее к удалению:

%# vgexport design
vgexport -- volume group "design" sucessfully exported

Теперь можно выключить машину, отсоединить диски, составляющие группу томов и подключить их к новой системе. Остается импортировать группу томов на новой машине и смонтировать логические тома:

%# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "/dev/sdb1" is in EXPORTED VG "design" [996 MB / 996 MB free]
pvscan -- inactive PV "/dev/sdb2" is in EXPORTED VG "design" [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
# vgimport design /dev/sdb1 /dev/sdb2
vgimport -- doing automatic backup of volume group "design"
vgimport -- volume group "design" successfully imported and activated

%# mkdir -p /mnt/design/users
%# mount /dev/design/users /mnt/design/users

Все! Группа томов готова к использованию на новой системе.

[править] Конвертация корневой файловой системы в LVM

В данном примере имеется установленная система на двух разделах: корневом и /boot. Диск размером 2Гб разбит на разделы следующим образом:

/dev/hda1 /boot 
/dev/hda2 swap
/dev/hda3 /

Корневой раздел занимает все пространство, оставшееся после выделения swap и /boot разделов. Главное требование, предъявляемое к корневому разделу в нашем примере: он должен быть более чем на половину пуст. Это нужно, чтобы мы могли создать его копию. Если это не так, нужно будет использовать дополнительный диск. Процесс при этом останется тот же, но уменьшать корневой раздел будет не нужно.

Для изменения размера файловой системы мы будем использовать утилиту GNU parted.

Загрузитесь в однопользовательском режиме, это важно. Запустите программу parted для уменьшения размера корневого раздела. Ниже приведен пример диалога с утилитой parted:

# parted /dev/hda
(parted) p
.
.
.

Изменим размер раздела:

(parted) resize 3 145 999

Первое число -- это номер раздела (hda3), второе -- начало раздела hda3, не меняйте его. Последнее число -- это конец раздела. Укажите приблизительно половину текущего размера раздела.

Создадим новый раздел:

(parted) mkpart primary ext2 1000 1999

Этот раздел будет содержать LVM. Он должен начинаться после раздела hda3 и заканчиваться в конце диска.

Выйдите из утилиты parted:

(parted) q

Перезагрузите систему. Убедитесь, что ваше ядро содержит необходимые установки. Для поддержки LVM должны быть включены параметры CONFIG_BLK_DEV_RAM и CONFIG_BLK_DEV_INITRD.

Для созданного раздела необходимо изменить тип на LVM (8e). Поскольку parted не знает такого типа, воспользуемся утилитой fdisk:

%# fdisk /dev/hda
Command (m for help): t
Partition number (1-4): 4
Hex code (type L to list codes): 8e
Changed system type of partition 4 to 8e (Unknown)
Command (m for help): w

Инициализируем LVM, физический том; создаем группу томов и логический том для корневого раздела:

%# vgscan
%# pvcreate /dev/hda4
%# vgcreate vg /dev/hda4
%# lvcreate -L250M -n root vg

Создадим теперь файловую систему на логическом томе и перенесем туда содержимое корневого каталога:

%# mke2fs /dev/vg/root
%# mount /dev/vg/root /mnt/
%# find / -xdev | cpio -pvmd /mnt

Отредактируйте файл /mnt/etc/fstab на логическом томе соответствующем образом. Например, строку:

/dev/hda3 / ext2 defaults 1 1

замените на:

/dev/vg/root / ext2 defaults 1 1

Создаем образ initrd, поддерживающий LVM:

%# lvmcreate_initrd
Logical Volume Manager 1.0.6 by Heinz Mauelshagen 25/10/2002
lvmcreate_initrd -- make LVM initial ram disk /boot/initrd-lvm-2.4.20-inp1-up-rootlvm.gz

lvmcreate_initrd -- finding required shared libraries
lvmcreate_initrd -- stripping shared libraries
lvmcreate_initrd -- calculating initrd filesystem parameters
lvmcreate_initrd -- calculating loopback file size
lvmcreate_initrd -- making loopback file (6491 kB)
lvmcreate_initrd -- making ram disk filesystem (19125 inodes)
lvmcreate_initrd -- mounting ram disk filesystem
lvmcreate_initrd -- creating new /etc/modules.conf
lvmcreate_initrd -- creating new modules.dep
lvmcreate_initrd -- copying device files to ram disk
lvmcreate_initrd -- copying initrd files to ram disk
lvmcreate_initrd -- copying shared libraries to ram disk
lvmcreate_initrd -- creating new /linuxrc
lvmcreate_initrd -- creating new /etc/fstab
lvmcreate_initrd -- ummounting ram disk
lvmcreate_initrd -- creating compressed initrd /boot/initrd-lvm-2.4.20-inp1-up-rootlvm.gz

Внимательно изучите вывод команды. Обратите внимание на имя нового образа и его размер. Отредактируйте файл /etc/lilo.conf. Он должен выглядеть приблизительно следующим образом:

image = /boot/KERNEL_IMAGE_NAME
label = lvm
root = /dev/vg/root
initrd = /boot/INITRD_IMAGE_NAME
ramdisk = 8192

KERNEL_IMAGE_NAME -- имя ядра, поддерживающего LVM. INITRD_IMAGE_NAME -- имя образа initrd, созданного командой lvmcreate_initrd. Возможно, вам будет нужно увеличить значение ramdisk, если у вас достаточно большая конфигурация LVM, но значения 8192 должно хватить в большинстве случаев. Значение по умолчанию параметра ramdisk равно 4096. Если сомневаетесь, проверьте вывод команды lvmcreate_initrd в строке lvmcreate_initrd -- making loopback file (6189 kB).

После этого файл lilo.conf нужно скопировать и на логический том:

%# cp /etc/lilo.conf /mnt/etc/

Выполните команду lilo:

%# lilo

Перезагрузитесь и выберите образ lvm. Для этого введите "lvm" в ответ на приглашение LILO. Система должна загрузится, а корневой раздел будет находиться на логическом томе.

После того как вы убедитесь, что все работает нормально, образ lvm нужно сделать загружаемым по умолчанию. Для этого укажите в конфигурационном файле LILO строку default=lvm, и выполните команду lilo.

Наконец, добавьте оставшийся старый корневой раздел в группу томов. Для этого измените тип раздела утилитой fdisk на 8е, и выполните команды:

%# pvcreate /dev/hda3
%# vgextend vg /dev/hda3

[править] Организация корневой файловой системы в LVM для дистрибутива ALT Master 2.2

При установке данного дистрибутива оказалось невозможным разместить корневой раздел в системе LVM. Связано это с тем, как выяснилось позже, что в ядре, поставляемом с данным дистрибутивом, поддержка файловой системы ext2 организована в виде загружаемого модуля. Образ же initrd использует файловую систему romfs, поддержка которой вкомпилирована в ядро. При выполнении команды lvmcreate_initrd генерируется файл-образ initrd с системой ext2. Если после этого вы попытаетесь загрузиться, то получите примерно следующее:

Kernel panic: VFS: Unable to mount root fs on 3a:00

Первое, что вам нужно будет сделать -- это скомпилировать ядро со встроенной поддержкой файловой системы ext2, установить его и проверить. После этого снова выполните команду lvmcreate_initrd. Дальнейшие действия зависят от вашей конфигурации. Смонтируйте созданный образ:

%# gzip -d /boot/initrd-lvm-2.4.20-inp1-up-rootlvm.gz
%# mount -o loop /boot/initrd-lvm-2.4.20-inp1-up-rootlvm /mnt/initrd

И копируйте туда модули, необходимые для работы с вашими дисковыми накопителями и файловыми системами (если они не вкомпилированы в ядро). Так, для системы с RAID-контроллером ICP-Vortex и корневой файловой системой reiserfs нужны модули: gdth.o mod_scsi.o sd_mod.o reiserfs.o. Добавьте их загрузку в файл /mnt/initrd/linuxrc.

Обратите внимание на оставшееся свободное место на образе:

Filesystem Size Used Avail Use% Mounted on ... /boot/initrd-lvm-2.4.20-inp1-up-rootlvm

 4.0M 3.9M 0.1M 100% /mnt/initrd

В файловой системе должно быть свободно еще 200-300Кб, в зависимости от вашей LVM-конфигурации. Если же у вас ситуация похожа на приведенную в листинге, будет необходимо создать новый образ, с большим размером файловой системы и повторить операции добавления модулей.

Наконец, отмонтируйте образ, сожмите его, запустите программу lilo и перезагрузитесь:

%# umount /mnt/initrd
%# gzip /boot/initrd-lvm-2.4.20-inp1-up-rootlvm
%# lilo
%# reboot

[править] Заключение

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

Использованные источники:

  1. LVM-HOWTO
  2. http://www.gweep.net/~sfoskett/linux/lvmlinux.html

[править] Дополнительные вопросы по LVM

[править] Дисковые разделы и LVM внутри LVM

LVM может находиться рекурсивно внутри логического тома LVM.

Например, пусть есть три логических тома: LV1, LV2 и LV3. Один из которых, LV2 разбит на разделы, каждый из которых является физическим томом LVM, который в свою очередь объединены в группу томов, на которых созданы логические тома и так далее.

 LV1 LV2 LV3
 ...--++----------------------------+ +--....
 ||+-------------------------+ | |
 ||| LVM | | |
 ||+-------------------------+ | |
 ...--++----------------------------+ +--.....

Такая ситуация очень легко может возникнуть при использовании виртуальных машин, например в том случае, если том LV2 выдан как диск виртуальной машине Xen или эмулятору QEMU.

Может возникнуть необходимость залезть внутрь системы томов, которые установлены внутрь логического тома. Например, это может произойти в случае, когда виртуальная машина (в результате сбоя или по какой-то другой причине), не загружается, а нужно добраться до её данных (напомним, что всё это при условии, что LVM используется не только снаружи, то есть в домене 0, но и внутри, то есть в домене U).

Решение, если говорить кратко, заключается в том, что бы использовать kpartx из пакета multipath-tools, которая даёт возможность строить карты устройств (device maps) для разделов.

Далее процедура использования kpartx описывается подробно.

Блочное устройство, внутри которого находятся тома LVM может быть любым, в частности, это может быть том LVM, том EVMS, простой дисковый раздел или физическое устройство.

Убедитесь что пакет multipath-tools установлен:

%# apt-get install multipath-tools 

Посмотрите как выполнено разбинение на разделы:

dom0:~ # fdisk -l /dev/evms/san2/vm3
Disk /dev/evms/san2/vm3: 5368 MB, 5368708096 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

 Device Boot Start End Blocks Id System
/dev/evms/san2/vm3p1 * 1 9 72261 83 Linux
/dev/evms/san2/vm3p2 10 652 5164897+ f W95 Ext'd (LBA)
/dev/evms/san2/vm3p5 10 75 530113+ 82 Linux swap / Solaris
/dev/evms/san2/vm3p6 76 493 3357553+ 83 Linux
/dev/evms/san2/vm3p7 494 652 1277136 83 Linux

Создайте карту устройств для блочного устройства:

dom0:~ # kpartx -a /dev/evms/san2/vm3 

Карты находятся здесь:

%# ls -l /dev/mapper
total 0
lrwxrwxrwx 1 root root 16 Aug 26 16:28 control -> ../device-mapper
brw------- 1 root root 253, 1 Aug 26 16:28 mpath1
brw------- 1 root root 253, 0 Aug 26 16:28 mpath2
brw------- 1 root root 253, 13 Aug 29 08:55 san2|vm3p1
brw------- 1 root root 253, 14 Aug 29 08:55 san2|vm3p2
brw------- 1 root root 253, 15 Aug 29 08:55 san2|vm3p5
brw------- 1 root root 253, 16 Aug 29 08:55 san2|vm3p6
brw------- 1 root root 253, 17 Aug 29 08:55 san2|vm3p7

Имена выглядят несколько странно, но вообще это нормально.

Можно попробовать смонтировать раздел:

%# mount -o rw /dev/mapper/san2\|vm3p6 /mnt

В данном случае была смонтирована корневая файловая система виртуальной машины:

%# ls -l /mnt
total 96
dr-xr-xr-x 3 root root 4096 Aug 28 10:12 automount
drwxr-xr-x 2 root root 4096 Aug 25 16:51 bin
drwxr-xr-x 2 root root 4096 Aug 25 16:45 boot
drwxr-xr-x 5 root root 4096 Aug 25 16:45 dev
drwxr-xr-x 69 root root 8192 Aug 29 08:53 etc
drwxr-xr-x 2 root root 4096 May 4 01:43 home
drwxr-xr-x 11 root root 4096 Aug 25 17:10 lib
drwx------ 2 root root 16384 Aug 25 16:45 lost+found
drwxr-xr-x 2 root root 4096 May 4 01:43 media
drwxr-xr-x 3 root root 4096 Aug 28 15:08 mnt
drwxr-xr-x 4 root root 4096 Aug 25 16:49 opt
drwxr-xr-x 2 root root 4096 Aug 25 16:45 proc
drwx------ 10 root root 4096 Aug 28 14:56 root
drwxr-xr-x 3 root root 8192 Aug 25 16:52 sbin
drwxr-xr-x 4 root root 4096 Aug 25 16:45 srv
-rw-r--r-- 1 root root 0 Aug 29 08:53 success
drwxr-xr-x 3 root root 4096 Aug 25 16:45 sys
drwxrwxrwt 6 root root 4096 Aug 29 08:49 tmp
drwxr-xr-x 12 root root 4096 Aug 25 16:50 usr
drwxr-xr-x 3 root root 4096 Aug 25 16:54 var

Аналогичным образом монтируем остальные разделы:

%# mount -o rw /dev/mapper/san2\|vm3p1 /mnt/boot
%# mount -o rw /dev/mapper/san2\|vm3p7 /mnt/var

С разделами можно работать как обычно.

По завершению работы нужно

  • размонтировать разделы;
  • удалить карты устройств.

Note-icon.gif

Размонтировать разделы и удалить карту устройств особенно важно, если эти разделы принадлежат какой-либо виртуальной машине, которую вы собираетесь запускать.

%# umount /mnt/var
%# umount /mnt/boot
%# umount /mnt
%# kpartx -d /dev/evms/san2/vm3 

%# ls -l /dev/mapper
total 0
lrwxrwxrwx 1 root root 16 Aug 26 16:28 control > ../device-mapper
brw------- 1 root root 253, 1 Aug 26 16:28 mpath1
brw------- 1 root root 253, 0 Aug 26 16:28 mpath2


При условии что разделы находятся не на блочном устройстве, а в обычно файле, сначала нужно воспользоваться программой losetup.

В данном примере loop0 это первое свободное loopback-устройство, но возможно, что оно будет занято, и тогда вместо loop0 нужно будет использовать loopX с более выскоим номерм X:

%# cd /etc/xen/images
%# losetup /dev/loop0 /xen/images/vm1.img 
%# losetup -a
/dev/loop0: [6806]:318859 (vm1.img)

%# fdisk -l /dev/loop0 
Disk /dev/loop0: 1638 MB, 1638400000 bytes 
255 heads, 63 sectors/track, 199 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 
 Device Boot Start End Blocks Id System 
/dev/loop0p1 * 1 9 72261 83 Linux 
/dev/loop0p2 10 199 1526175 5 Extended 
/dev/loop0p5 10 26 136521 82 Linux swap / Solaris 
/dev/loop0p6 27 151 1004031 83 Linux 
/dev/loop0p7 152 199 385528+ 83 Linux 

%# kpartx -a /dev/loop0 
%# ls -l /dev/mapper/ 
total 0 
lrwxrwxrwx 1 root root 16 Sep 12 15:38 control -> ../device-mapper 
brw------- 1 root root 253, 15 Sep 30 13:19 loop0p1 
brw------- 1 root root 253, 16 Sep 30 13:19 loop0p2 
brw------- 1 root root 253, 17 Sep 30 13:19 loop0p5 
brw------- 1 root root 253, 18 Sep 30 13:19 loop0p6 
brw------- 1 root root 253, 19 Sep 30 13:19 loop0p7 

Можно монтировать, копировать, восстанавливать, форматировать эти разделы, короче, делать с ними всё, что делается с обычными дисковыми разделами.

%# mount /dev/mapper/loop0p6 /mnt
%# mount /dev/mapper/loop0p1 /mnt/boot
%# mount /dev/mapper/loop0p7 /mnt/var
%# mount 
-snip-
/dev/mapper/loop0p6 on /mnt type ext3 (rw) 
/dev/mapper/loop0p1 on /mnt/boot type ext2 (rw) 
/dev/mapper/loop0p7 on /mnt/var type ext3 (rw) 

Другое решение:

%# lomount -diskimage vm1.img -partition 1 /mnt
%# mount 
-snip-
/xen/images/vm1.img on /mnt type ext2 (rw,loop=/dev/loop0,offset=32256) 

С одной стороны при таком подходе:

  • не нужно вручную подключать loopback-устройства;
  • не нужно использовать kpartx;

Но с другой стороны:

  • это решение позволяет смонтировать только простые разделы, размещённые внутри тома LVM.

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

Если внутри тома находится расширенный раздел, подход работает, но требует дополнительных манипуляций:

%# fdisk -l -u /xen/images/vm1.img 
You must set cylinders. 
You can do this from the extra functions menu. 
Disk vm1.img: 0 MB, 0 bytes 
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors 
Units = sectors of 1 * 512 = 512 bytes 
 Device Boot Start End Blocks Id System 
vm1.img1 * 63 144584 72261 83 Linux 
vm1.img2 144585 3196934 1526175 5 Extended 
vm1.img5 144648 417689 136521 83 Linux 
vm1.img6 417753 2425814 1004031 83 Linux 
vm1.img7 2425878 3196934 385528+ 83 Linux 

Найти начало интересующего раздела можно путём умножения значения поля Start (показанного fdiks) на 512.

417753*512=213889536

Если мы хотим смонтировать корневой раздел:

%# mount -o loop,offset=213889536 /xen/images/vm1.img /mnt
%# mount 
-snip-
/xen/images/vm1.img on /mnt type ext3 (rw,loop=/dev/loop0,offset=213889536) 

[править] Создание зашифрованных томов LVM

Пример создания зашифрованного тома:

%# cryptsetup -y -s 256 -c aes-cbc-essiv:sha256 luksFormat /dev/hda3
%# cryptsetup luksOpen /dev/hda3 lukspace
%# pvcreate /dev/mapper/lukspace
%# vgcreate vg /dev/mapper/lukspace
%# lvcreate -L10G -nroot vg
%# lvcreate -l 100%FREE -nmyspace vg

Подробнее:

[править] Сравнение LVM и ZFS

Основная страница: ZFSvsLVM

На первый взгляд такое сравнение может показаться странным, ведь ZFS ­--- это файловая система, а LVM ­--- система для управления томами, то есть нечто, что находится на уровень ниже файловой системы.

В действительности, сравнение вполне имеет право на существование, поскольку ZFS это не просто файловая система, а нечто большее. В ней присутствует уровень "storage pool", который берёт на себя те же задачи, что и LVM.

В таком случае возникает вопрос, а какую функциональность ZFS может дать сама, без применения LVM, и если что-то она делает лучше, то что именно?

[править] Восстановления LVM после сбоя

[править] Слияние LVM

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

Начиная с ядра 2.6.33 [1] необходимый код присутствует в составе ядра Linux. Для того чтобы использовать его, необходим пакет LVM версии не менее 2.02.58 [2].

Пример использования:

 %# lvconvert --merge /dev/VG0/lv1_snap

После выполнения этой команды изменения, сделанные в снимке lv1_snap будут перенесены в родительский том /dev/VG0/lv1, а снимок перестанет существовать.

Подробнее:

[править] Поддержка LVM в NetBSD

В 2008 году в NetBSD появилась[1] начальная поддержка LVM.

Та часть, которая интегрируется в ядро, была написана с нуля и распространяется по лицензии BSD. Другая (большая) часть, которая работает в пространстве пользователя (userland), взята из Linux и осталась под лицензией GPL.

Пока что не работают такие вещи как создание снимков (snapshots), не работает pvmove и нет возможности совместной работы с LVM в кластере, как это можно делать с помощью CLVM (однако, использовать независимые логические тома в кластере, конечно же, можно).

Подробнее:

[править] Работа с LVM в FreeBSD

Автор: Владимир Чижиков (Skif), [3]

Для монтирования LVM с EXT2/EXT3 файловой системой необходимо скомпилировать ядро с поддержкой EXT2FS:

 options EXT2FS

либо добавить /boot/loader.conf строку:

 ext2fs_load="YES"

Если после перезагрузки сервера необходимости в подключении данного диска не будет, тогда достаточно просто подгрузить модуль ядра kldload ext2fs

Для подключения LVM разделов необходимо перекомпилировать ядро с опцией:

 option GEOM_LINUX_LVM

либо добавить /boot/loader.conf

 geom_linux_lvm_load="YES"

вручную можно произвести загрузку следующим образом

 geom linux_lvm load

посмотреть результат (пример):

 # geom linux_lvm list
 Geom name: skdeb5-home.bsd
 Providers:
 1. Name: linux_lvm/skdeb5-home.bsd-swap_1
 Mediasize: 1551892480 (1.4G)
 Sectorsize: 512
 Mode: r0w0e0
 2. Name: linux_lvm/skdeb5-home.bsd-root
 Mediasize: 38205915136 (36G)
 Sectorsize: 512
 Mode: r1w1e1
 Consumers:
 1. Name: ad2s2
 Mediasize: 39761003520 (37G)
 Sectorsize: 512
 Mode: r1w1e2

в /etc/fstab прописать следующим образом:

 cat /etc/fstab | grep linux_lvm
 /dev/linux_lvm/skdeb5-home.bsd-root /mnt/ad2s2.ext2 ext2fs rw 0 0

PS: Для монтирования LVM-раздела с другой FS, отличной от EXT2/EXT3 необходимо перекомпилировать ядро или загрузить соответствующие данной ФС модули ядра.


[править] Работа с LVM в Windows

LVM это чуждая для Windows система, и её поддержка в Windows отсутствует. Не предполагается, что вы будете работать с LVM из-под Windows. Однако, в некоторых случаях такая потребность всё же может возникнуть:

  • В случае, когда у вас на компьютере установлено две системы (dual boot), одна из которых Linux, а вторая Windows;
  • В случае, когда на переносном диске у вас LVM, внутри ценные файлы, а рядом только Windows-машины.

Программа Virtual Volumes позволяет обращаться к логическому тому LVM изнутри Windows-машины. Программа находится в процессе разработки. Пока она имеет некоторые ограничения.

Подробнее:

[править] Альтернативы LVM

LVM сегодня — это главная система управления томами, существующая в Linux. Раньше главным её конкурентом считалась система EVMS, но затем, после того как LVM была включена в ядро, а EVMS нет, конкуренция закончилась в пользу LVM.

Сейчас главными конкурентами LVM можно считать файловые системы с возможностями систем управления томами, такие как btrfs и ZFS[2].

Кроме этого существует система Zumastor, которая отличается от LVM лучшей поддержкой управления снимками (snapshotting) и удалённой репликацией. Особенно печальным для LVM создатели Zumastor считают следующий факт: если в LVM сделать много снимков с одного тома, а потом в оригинальном томе изменить какой-то блок, то оригинальная информация будет копироваться теперь для каждого снимка[3]. Можно представить, какая будет производительность и расточительность при записи в оригинальный том, особенно в случае большого количества снимков с него. Большим недостатком Zumastor является то, что его развитие приостановлено несколько лет назад[4].

Проблема неэффективных снапшотов в LVM считается одной из важнейших проблем LVM на сегодняшний день и работа по её устранению относится к одной из наиболее приоритетных[5]. Другой приоритетной задачей является поддержка снапшотов бесконечной глубины, то есть, возможность создания снапшотов со снапшотов[6]. Другие попытки решить эту задачу: [4], [5].

[править] Графические инструменты администрирования LVM

system-config-lvm в действии

Есть несколько графических инструментов, помогающих использовать LVM. В частности:

  1. LVM GUI Project[7];
  2. system-config-lvm.

Первый уже давно не развивается. Второй является основным графическим инструментом для администрирования LVM в Redhat-подобных дистрибутивах. Он может быть установлен и в других. Например, в Debian[8]:

%# apt-get install system-config-lvm

Вызвать его можно командой:

%# system-config-lvm

Дополнительная информация:

[править] Приложения

[править] Список команд для работы с LVM

lvchange
Изменить атрибуты логического тома
lvcreate
Создать логический том
lvdisplay
Показать информацию о логическом томе
lvextend
Добавить места в логический том
lvmchange
(команда устарела, её лучше не использовать)
lvmdiskscan
Показать список устройств, которые могут быть использованы как физический том
lvmsadc
Собрать данные об активности использования LVM
lvmsar
Создать отчёт об активности использования LVM
lvreduce
Уменьшить размер логического тома
lvremove
Удалить логический том из системы
lvrename
Переименовать логический том
lvresize
Изменить размер логического тома
lvs
Показать информацию о логическом томе
lvscan
Показать список логических томов во всех группах томов
pvchange
Изменить атрибуты физического тома
pvcreate
Инициализировать физический том для использования в LVM
pvdata
Показать информацию (из метаданных на диске) о физическом томе
pvdisplay
Показать информацию о физическом томе
pvmove
Переместить эстенты с одного физического тома на другой
pvremove
Удалить метку LVM с физического тома
pvresize
Изменить размер физического тома, использующегося в группе томов
pvs
Показать информацию о физическом томе
pvscan
Показать список всех физических томов
vgcfgbackup
Сделать резервную копию конфигурации группы томов
vgcfgrestore
Восстановить из резервной копии конфигурацию группы томов
vgchange
Изменить атрибуты группы томов
vgck
Проверить целостность группы томов
vgconvert
Изменить формат метаданных группы томов
vgcreate
Создать группу томов
vgdisplay
Показать информацию о группе томов
vgexport
Разрегистрировать группу томов в системе
vgextend
Добавить физический том в группу томов
vgimport
Зарегистрировать эскпортированную группу томов в системе
vgmerge
Объединить группы томов
vgmknodes
Создать файлы устройств для групп томов в каталоге /dev/
vgreduce
Удалить физический том из группы томов
vgremove
Удалить группу томов
vgrename
Переименовать группу томов
vgs
Показать информацию о группах томов
vgscan
Выполнить поиск групп томов
vgsplit
Переместить физический том в новую группу томов

[править] Дополнительная информация

Xen и LVM:

[править] Примечания

  1. http://mail-index.netbsd.org/tech-kern/2008/08/28/msg002554.html
  2. Только вот btrfs пока находится в процессе разработки, а ZFS не поддерживается толком в Linux, поэтому конкуренция здесь получается не более чем умозрительная
  3. Zumastor HOWTO, Snapshots
  4. http://groups.google.com/group/zumastor/browse_thread/thread/72846703af4ef5d3
  5. http://www.redhat.com/archives/linux-lvm/2010-January/msg00012.html
  6. http://osdir.com/ml/linux-lvm/2011-01/msg00010.html
  7. http://www.xs4all.nl/~mmj/lvm/
  8. Или в Ubuntu: http://ubuntuforums.org/showthread.php?t=216117



Источник: http://xgu.ru/wiki/LVM
Категория: Об ОС *Nix | Добавил: admin (07.08.2011)
Просмотров: 8615 | Комментарии: 3 | Теги: xen, virlualization | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2016