[править] Конвертация корневой файловой системы в 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.
Использованные источники:
- LVM-HOWTO
- 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
С разделами можно работать как обычно.
По завершению работы нужно
- размонтировать разделы;
- удалить карты устройств.
|
Размонтировать разделы и удалить карту устройств особенно важно, если эти разделы принадлежат какой-либо виртуальной машине, которую вы собираетесь запускать.
|
%# 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 -n root vg
%# lvcreate -l 100%FREE -n myspace vg
Подробнее:
[править] Сравнение LVM и ZFS
- Основная страница: ZFSvsLVM
На первый взгляд такое сравнение может показаться странным, ведь ZFS --- это файловая система, а LVM --- система для управления томами, то есть нечто, что находится на уровень ниже файловой системы.
В действительности, сравнение вполне имеет право на существование, поскольку ZFS это не просто файловая система, а нечто большее. В ней присутствует уровень "storage pool", который берёт на себя те же задачи, что и LVM.
В таком случае возникает вопрос, а какую функциональность ZFS может дать сама, без применения 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, а снимок перестанет существовать.
Подробнее:
[править] Thin Provisioning
Начиная с 2012 года (полноценно с ядра Linux 3.4; май 2012) LVM поддерживает такую возможность как thin provisioning. Это возможность использовать какое-либо внешнее блочное устройство в режиме только для чтения как основу для создания новых логических томов LVM. Такие разделы при создании уже будут выглядеть так будто они заполнены данными исходного блочного устройства. Операции с томами изменяются налету таким образом, что чтение данных выполняется с исходного блочного устройства (или с тома если данные уже отличаются), а запись — на том.
Такая возможность может быть полезна, например, при создании множества однотипых виртуальных машин или для решения других аналогичных задач, т.е. задач где нужно получить несколько изменяемых копий одних и тех же исходных данных.
Подробнее:
[править] Поддержка 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. В частности:
- LVM GUI Project[7];
- system-config-lvm.
Первый уже давно не развивается. Второй является основным графическим инструментом для администрирования LVM в Redhat-подобных дистрибутивах. Он может быть установлен и в других. Например, в Debian[8]:
%# apt-get install system-config-lvm
Вызвать его можно командой:
%# system-config-lvm
Дополнительная информация:
[править] Ограничение скорости доступа к LVM-томам
Ограничение делается на уровне cgroup:
mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir -p /sys/fs/cgroup/blkio
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
После этого:
mkdir -p /sys/fs/cgroup/blkio/limit1M/
echo "X:Y 1048576" > /sys/fs/cgroup/blkio/limit1M/blkio.throttle.write_bps_device
В качестве X:Y используются мажорный и минорный номер соответствующего тома.
Подробнее:
[править] Список команд для работы с 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:
- ↑ http://mail-index.netbsd.org/tech-kern/2008/08/28/msg002554.html
- ↑ Только вот btrfs пока находится в процессе разработки, а ZFS не поддерживается толком в Linux, поэтому конкуренция здесь получается не более чем умозрительная
- ↑ Zumastor HOWTO, Snapshots
- ↑ http://groups.google.com/group/zumastor/browse_thread/thread/72846703af4ef5d3
- ↑ http://www.redhat.com/archives/linux-lvm/2010-January/msg00012.html
- ↑ http://osdir.com/ml/linux-lvm/2011-01/msg00010.html
- ↑ http://www.xs4all.nl/~mmj/lvm/
- ↑ Или в Ubuntu: http://ubuntuforums.org/showthread.php?t=216117
Источник: http://xgu.ru/wiki/LVM |