LVM-Управление логическими томами

Материал из Home wiki
Версия от 00:25, 9 сентября 2018; KOleg (обсуждение | вклад) (Новая страница: «== Управление логическими томами == Большинство реализаций систем управления логическим…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

Управление логическими томами

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

Группировка физических носителей - это специальное обозначение операции группировки множества блочных устройств (жестких дисков, а также устройств iSCSI и.т.д.) в рамках одного виртуального логического устройства для хранения данных. При возникновении необходимости в расширении этой логической группы устройств в нее впоследствии могут быть добавлены дополнительные блочные устройства (включая их разделы).

Размеры томов LVM в этой физической группе устройств не зависят от размеров отдельных устройств. Общий размер группы устройств является пределом.

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

Знакомство с LVM

Недостатки стандартных разделов

Существует несколько недостатков стандартных разделов жестких дисков, которые чаще всего выявляются в процессе эксплуатации последних. Рассмотрим систему с дисками малого и большого размера, на которых созданы разделы таким образом, как показано на иллюстрации ниже. Первый диск (представленный файлом устройства /dev/sda) разделен на два раздела, а второй диск (представленный файлом устройства /dev/sdb) - также разделен на два раздела, причем часть диска остается не размеченной.

Lvm classic partitions.png

Продолжая рассмотрение приведенного выше примера, подумайте о том, каким образом можно поступить в случае возникновения необходимости увеличения дискового пространства, доступного по пути /srv/project42. Какое действие вы можете предпринять? Любое ваше решение будет связано в размонтированием файловой системы, созданием резервной копии хранящихся в ней данных, удалением и повторным созданием разделов, восстановлением данных из резервной копии и повторным монтированием файловой системы.

Решение в случае использования LVM

В случае использования LVM будет создана виртуальная прослойка между смонтированными файловыми системами и аппаратными устройствами. Эта виртуальная прослойка позволит администратору увеличить размер смонтированной файловой системы в процессе ее эксплуатации. При корректном использовании LVM не возникает необходимости в размонтировании файловой системы для увеличения ее размера в ручном режиме.

Lvm volume group ru.png

Терминология LVM

Физический том (physical volume - pv)

Физическим томом является любое блочное устройство (файл устройства, соответствующий диску, разделу на диске, дисковому массиву RAID или даже устройству iSCSI). Все эти устройства могут быть добавлены в группу томов.

Команды, используемые для управления физическими томами, всегда начинаются с символов pv.

[root@centos65 ~]# pv
pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove
pvresize   pvs        pvscan

Группа томов (volume group - vg)

Группа томов является уровнем абстракции между блочными устройствами и логическими томами.

Команды, используемые для управления группами томов, начинаются с символов vg.

[root@centos65 ~]# vg
vgcfgbackup    vgconvert      vgextend       vgmknodes      vgs
vgcfgrestore   vgcreate       vgimport       vgreduce       vgscan
vgchange       vgdisplay      vgimportclone  vgremove       vgsplit
vgck           vgexport       vgmerge        vgrename

Логический том (logical volume - lv)

Логический том создается в рамках группы томов. Каждый логический том может содержать файловую систему, которая может монтироваться. Методика использования логических томов аналогична методике использования разделов дисков и предусматривает работу с тем же набором стандартных утилит (mkfs, mount, fsck, df, ).

Команды, используемые для управления логическими томами, начинаются с символов lv.

[root@centos65 ~]# lv
lvchange     lvextend     lvmdiskscan  lvmsar       lvresize 
lvconvert    lvm          lvmdump      lvreduce     lvs 
lvcreate     lvmchange    lvmetad      lvremove     lvscan 
lvdisplay    lvmconf      lvmsadc      lvrename

Пример: работа с LVM

В данном примере показана методика использования дискового устройства (в нашем примере дисковое устройство представлено файлом устройства /dev/sdc, но оно также может быть представлено и файлом устройства /dev/sdb, и любым другим файлом устройства, соответствующим другому дисковому устройству или разделу на таком устройстве) при работе с технологией LVM и даны пояснения относительно создания группы томов (vg), а также создания и использования логического тома (vg/lvol0).

В первую очередь необходимо создать физические тома, которые впоследствии будут объединены в рамках группы томов с помощью утилиты pvcreate. Данная утилита модифицирует раздел дискового устройства таким образом, чтобы он мог использоваться в рамках групп томов. В примере ниже показано, как задействовать диск SCSI при работе с технологией LVM.

root@RHEL4:~# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

Примечание: Технология LVM будет отлично работать и в случае использования устройств вместо специализированных разделов на них, но другая операционная система, установленная на этом же компьютере (или в этой же сети хранения данных) наверняка не сможет определить, что устройство используется в рамках группы томов LVM и, скорее всего, пометит блочное устройство как устройство без данных! Вы можете избежать такого поведения сторонней операционной системы, создав раздел на всей доступной поверхности дискового устройства и использовав утилиту pvcreate по отношению к этому разделу, а не к дисковому устройству.

После этого следует воспользоваться утилитой vgcreate для создания группы томов, содержащей том с одного дискового устройства. Учтите, что в эту группу томов впоследствии могут быть добавлены тома с других устройств.

root@RHEL4:~# vgcreate vg /dev/sdc
Volume group "vg" successfully created

Последний шаг заключается в использовании утилиты lvcreate для создания логического тома.

root@RHEL4:~# lvcreate --size 500m vg
Logical volume "lvol0" created

Теперь в логическом томе, представленном файлом устройства /dev/vg/lvol0, может быть создана файловая система ext3, которая впоследствии может монтироваться и использоваться по назначению.

root@RHELv4u2:~# mke2fs -m0 -j /dev/vg/lvol0 
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
128016 inodes, 512000 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done 
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@RHELv4u2:~# mkdir /home/project10
root@RHELv4u2:~# mount /dev/vg/lvol0 /home/project10/
root@RHELv4u2:~# df -h | grep proj
/dev/mapper/vg-lvol0  485M   11M  474M   3% /home/project10

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

Пример: расширение логического тома

Логический том может быть расширен без отмонтирования файловой системы. Возможность расширения логического тома определяется возможностями используемой рамках этого тома файловой системы. Смонтированные тома с файловыми системами vfat и ext2 не могут быть расширены, поэтому в данном примере мы будем использовать файловую систему ext3.

Утилита fdisk выводит информацию о недавно добавленных дисках SCSI, которые будут содержать данные нашего тома LVM. Впоследствии этот том может быть расширен. В первую очередь давайте рассмотрим параметры этих дисков.

[root@RHEL5 ~]# fdisk -l | grep sd[bc]
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdb: 1181 MB, 1181115904 bytes
Disk /dev/sdc: 429 MB, 429496320 bytes

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

[root@RHEL5 ~]# fdisk -l | grep sd[bc]
Disk /dev/sdc doesn't contain a valid partition table
Disk /dev/sdb: 1181 MB, 1181115904 bytes
/dev/sdb1               1         143     1148616   83  Linux
Disk /dev/sdc: 429 MB, 429496320 bytes

Также вы знаете о том, как готовить диски к работе с технологией LVM с помощью утилиты pvcreate, а также о том, как создавать группу томов с помощью утилиты vgcreate. В данном примере в группу томов с именем vg2 добавляется как диск с разделами, так и диск без них.

[root@RHEL5 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created
[root@RHEL5 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created
[root@RHEL5 ~]# vgcreate vg2 /dev/sdb1 /dev/sdc
  Volume group "vg2" successfully created

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

[root@RHEL5 ~]# pvdisplay | grep -B1 vg2
  PV Name               /dev/sdb1
  VG Name               vg2
--
  PV Name               /dev/sdc
  VG Name               vg

Кроме того, вы должны быть знакомы как с утилитой lvcreate, предназначенной для создания логических томов, так и с утилитой mke2fs, предназначенной для создания файловой системы ext3 в рамках этих томов.

[root@RHEL5 ~]# lvcreate --size 200m vg2
  Logical volume "lvol0" created
[root@RHEL5 ~]# mke2fs -m20 -j /dev/vg2/lvol0 
...

Как вы можете увидеть, нам удалось создать и смонтировать логический том размер которого, в соответствии с информацией от утилиты df, составляет практически 200 МБ.

[root@RHEL5 ~]# mkdir /home/resizetest
[root@RHEL5 ~]# mount /dev/vg2/lvol0 /home/resizetest/
[root@RHEL5 ~]# df -h | grep resizetest
                      194M  5.6M  149M   4% /home/resizetest

Расширение тома осуществляется достаточно просто с помощью утилиты lvextend.

[root@RHEL5 ~]# lvextend -L +100 /dev/vg2/lvol0 
  Extending logical volume lvol0 to 300.00 MB
  Logical volume lvol0 successfully resized

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

[root@RHEL5 ~]# df -h | grep resizetest
                      194M  5.6M  149M   4% /home/resizetest

Однако, в случае использования утилиты lvdisplay мы можем увидеть реальный размер тома после расширения.

[root@RHEL5 ~]# lvdisplay /dev/vg2/lvol0 | grep Size
  LV Size                300.00 MB

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

[root@RHEL5 ~]# resize2fs /dev/vg2/lvol0 
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vg2/lvol0 is mounted on /home/resizetest; on-line re\
sizing required
Performing an on-line resize of /dev/vg2/lvol0 to 307200 (1k) blocks.
The filesystem on /dev/vg2/lvol0 is now 307200 blocks long.

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

[root@RHEL5 ~]# df -h | grep resizetest
                      291M 6.1M 225M 3% /home/resizetest
[root@RHEL5 ~]#

Пример: изменение размера физического тома

Ниже представлено краткое описание методики изменения размера физического тома средствами LVM (после изменения его размера с помощью утилиты fdisk). Описание начинается с получения информации о разделе дискового устройства размером в 100 МБ, представленном файлом устройства /dev/sde1. Мы заранее использовали утилиту fdisk для создания и проверки размера этого раздела.

[root@RHEL5 ~]# fdisk -l 2>/dev/null | grep sde1
/dev/sde1               1         100      102384   83 Linux
[root@RHEL5 ~]#

Теперь мы можем использовать утилиту pvcreate для создания физического тома, а также утилиту pvs для проверки корректности его создания.

[root@RHEL5 ~]# pvcreate /dev/sde1
  Physical volume "/dev/sde1" successfully created
[root@RHEL5 ~]# pvs | grep sde1
  /dev/sde1             lvm2 --    99.98M  99.98M
[root@RHEL5 ~]#

На следующем шаге следует использовать утилиту fdisk для увеличения размера раздела (на самом деле будет осуществляться удаление этого раздела и повторное создание раздела с дополнительными цилиндрами, который будет представлен файлом устройства /dev/sde1).

[root@RHEL5 ~]# fdisk /dev/sde

Command (m for help): p

Disk /dev/sde: 858 MB, 858993152 bytes
64 heads, 32 sectors/track, 819 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1         100      102384   83  Linux

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 
Value out of range.
Partition number (1-4): 1
First cylinder (1-819, default 1): 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-819, default 819): 200

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@RHEL5 ~]#

Если мы используем сейчас утилиты fdisk и pvs для проверки размеров раздела и физического тома, мы обнаружим различие в значениях. В рамках LVM все еще используется старый размер раздела.

[root@RHEL5 ~]# fdisk -l 2>/dev/null | grep sde1
/dev/sde1               1         200      204784   83  Linux
[root@RHEL5 ~]# pvs | grep sde1
  /dev/sde1             lvm2 --    99.98M  99.98M
[root@RHEL5 ~]#

Утилита pvresize, примененная по отношению к физическому тому, уведомит LVM об изменении размера раздела дискового устройства. Информация о корректном размере также может быть получена с помощью утилиты pvs.

[root@RHEL5 ~]# pvresize /dev/sde1
  Physical volume "/dev/sde1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
[root@RHEL5 ~]# pvs | grep sde1
  /dev/sde1             lvm2 --   199.98M 199.98M
[root@RHEL5 ~]#

Пример: зеркалирование логического тома

Начнем работу с создания трех физических томов LVM. После этого проверим корректность создания и размеры этих томов с помощью утилиты pvs. Мы создаем три физических диска по той причине, что в LVM два диска используются для хранения данных с зеркалированием, а третий том - для хранения данных журнала зеркалирования!

[root@RHEL5 ~]# pvcreate /dev/sdb /dev/sdc /dev/sdd
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
  Physical volume "/dev/sdd" successfully created
[root@RHEL5 ~]# pvs
  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sdb              lvm2 --   409.60M 409.60M
  /dev/sdc              lvm2 --   409.60M 409.60M
  /dev/sdd              lvm2 --   409.60M 409.60M

После этого создадим группу томов и проверим корректность ее создания с помощью ранее использованной утилиты pvs. Учтите, что три физических тома теперь принадлежат к группе томов с именем vg33, причем размеры этих томов округляются в меньшую сторону (на шаг, равный размеру экстента, в нашем случае 4МБ).

[root@RHEL5 ~]# vgcreate vg33 /dev/sdb /dev/sdc /dev/sdd
  Volume group "vg33" successfully created
[root@RHEL5 ~]# pvs
  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sda2 VolGroup00  lvm2 a-    15.88G      0 
  /dev/sdb  vg33        lvm2 a-   408.00M 408.00M
  /dev/sdc  vg33        lvm2 a-   408.00M 408.00M
  /dev/sdd  vg33        lvm2 a-   408.00M 408.00M
[root@RHEL5 ~]#

Последний шаг заключается в создании логического тома с помощью утилиты lvcreate. Обратите внимание на параметр -m 1, предназначенный для выделения одного дискового устройства для хранения данных журнала зеркалирования. Также обратите внимание на изменение значений свободного пространства на каждом из трех физических томов!

[root@RHEL5 ~]# lvcreate --size 300m -n lvmir -m 1 vg33 
  Logical volume "lvmir" created
[root@RHEL5 ~]# pvs
  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sda2 VolGroup00  lvm2 a-    15.88G      0 
  /dev/sdb  vg33        lvm2 a-   408.00M 108.00M
  /dev/sdc  vg33        lvm2 a-   408.00M 108.00M
  /dev/sdd  vg33        lvm2 a-   408.00M 404.00M

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

[root@RHEL5 ~]# lvs vg33/lvmir
  LV    VG   Attr   LSize   Origin Snap%  Move Log        Copy% 
  lvmir vg33 mwi-ao 300.00M                    lvmir_mlog 100.00

Пример: снимок логического тома

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

В примере ниже создается снимок логического тома под названием bigLV.

[root@RHEL5 ~]# lvcreate -L100M -s -n snapLV vg42/bigLV
Logical volume "snapLV" created
[root@RHEL5 ~]#

Изучив вывод утилиты lvs, вы можете убедиться в том, что снимок snapLV действительно является снимком логического тома bigLV. Спустя непродолжительное время после создания снимка, происходит несколько модификаций данных на логическом томе bigLV (0.02 процента).

[root@RHEL5 ~]# lvs
  LV       VG         Attr   LSize   Origin Snap%  Move Log Copy%
  bigLV    vg42       owi-a- 200.00M 
  snapLV   vg42       swi-a- 100.00M bigLV    0.02 
[root@RHEL5 ~]#

Но в процессе последующего использования тома bigLV объем модификаций увеличивается. Это означает, что в рамках логического тома снимка должен храниться больший объем оригинальных данных (10.22 процента).

[root@RHEL5 ~]# lvs | grep vg42
  bigLV    vg42       owi-ao 200.00M 
  snapLV   vg42       swi-a- 100.00M bigLV   10.22 
[root@RHEL5 ~]#

Теперь вы можете использовать обычные инструменты для резервного копирования данных (dump, tar, cpio, ) с целью создания резервной копии логического тома снимка. Эта резервная копия будет содержать все данные, хранящиеся в рамках логического тома bigLV в момент создания снимка. После создания резервной копии вы можете удалить логический том снимка.

[root@RHEL5 ~]# lvremove vg42/snapLV
Do you really want to remove active logical volume "snapLV"? [y/n]: y
  Logical volume "snapLV" successfully removed
[root@RHEL5 ~]#

Проверка существующих физических томов

Утилита lvmdiskscan

Для получения списка блочных устройств, которые могут использоваться для работы с технологией LVM следует использовать утилиту lvmdiskscan. В примере ниже для вывода информации исключительно об устройствах SCSI используется утилита grep.

[root@RHEL5 ~]# lvmdiskscan | grep sd
  /dev/sda1                [      101.94 MB] 
  /dev/sda2                [       15.90 GB] LVM physical volume
  /dev/sdb                 [      409.60 MB] 
  /dev/sdc                 [      409.60 MB] 
  /dev/sdd                 [      409.60 MB] LVM physical volume
  /dev/sde1                [       95.98 MB] 
  /dev/sde5                [      191.98 MB] 
  /dev/sdf                 [      819.20 MB] LVM physical volume
  /dev/sdg1                [      818.98 MB] 
[root@RHEL5 ~]#

Утилита pvs

Простейший способ получения информации о том, используется ли технология LVM для работы с определенными устройствами, заключается в использовании утилиты pvs. При рассмотрении фрагмента вывода данной утилиты, приведенного в примере ниже, можно сделать вывод о том, что технология LVM используется исключительно для работы с разделом дискового устройства, представленным файлом устройства /dev/sda2. В выводе утилиты также содержится информация о том, что раздел дискового устройства, представленный файлом устройства /dev/sda2, состоит в группе томов с именем Volgroup00 и имеет размер, равный практически 16 Гб. Кроме того, в выводе утилиты содержится информация о дисковых устройствах, представленных файлами устройств /dev/sdc и /dev/sdd, которые состоят в группе томов с именем vg33. Технология LVM может использоваться и для работы с дисковым устройством, представленным файлом устройства /dev/sdb, но это устройство на данный момент не относится к каким-либо группам томов.

[root@RHEL5 ~]# pvs
  PV         VG         Fmt  Attr PSize   PFree 
  /dev/sda2 VolGroup00  lvm2 a-    15.88G      0 
  /dev/sdb              lvm2 --   409.60M 409.60M
  /dev/sdc vg33         lvm2 a-   408.00M 408.00M
  /dev/sdd vg33         lvm2 a-   408.00M 408.00M
[root@RHEL5 ~]#

Утилита pvscan

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

[root@RHEL5 ~]# pvscan
  PV /dev/sdc    VG vg33         lvm2 [408.00 MB / 408.00 MB free]
  PV /dev/sdd    VG vg33         lvm2 [408.00 MB / 408.00 MB free]
  PV /dev/sda2   VG VolGroup00   lvm2 [15.88 GB / 0    free]
  PV /dev/sdb                    lvm2 [409.60 MB]
  Total: 4 [17.07 GB] / in use: 3 [16.67 GB] / in no VG: 1 [409.60 MB]
[root@RHEL5 ~]#

Утилита pvdisplay

Используйте утилиту pvdisplay для получения дополнительной информации о физическом томе. Также вы можете использовать утилиту pvdisplay без аргументов для вывода информации обо всех физических томах (LVM).

root@RHEL5 ~]# pvdisplay /dev/sda2
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               15.90 GB / not usable 20.79 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              508
  Free PE               0
  Allocated PE          508
  PV UUID               TobYfp-Ggg0-Rf8r-xtLd-5XgN-RSPc-8vkTHD

[root@RHEL5 ~]#

Проверка существующих групп томов

Утилита vgs

По аналогии с утилитой pvs, утилита vgs может использоваться для вывода краткой информации обо всех группах томов. В выводе данной утилиты, приведенном в примере ниже, содержится информация только об одной группе томов с именем VolGroup00, размер которой равен практически 16 Гб.

[root@RHEL5 ~]# vgs
  VG         #PV #LV #SN Attr   VSize  VFree
  VolGroup00   1   2   0 wz--n- 15.88G     0 
[root@RHEL5 ~]#

Утилита vgscan

Утилита vgscan позволяет осуществить сканирование всех дисковых устройств в поисках существующих групп томов. Также данная утилита обновляет содержимое файла /etc/lvm/.cache. В данном файле содержится список всех устройств, для работы с которыми на данный момент используется технология LVM.

[root@RHEL5 ~]# vgscan
  Reading all physical volumes. This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
[root@RHEL5 ~]#

В случае использования технологии LVM утилита vgscan будет запускаться автоматически в процессе загрузки системы, поэтому в том случае, если вы будете осуществлять горячее подключение дисковых устройств, вам придется самостоятельно запускать утилиту vgscan для добавления в файл /etc/lvm/.cache информации о новых устройствах.

Утилита vgdisplay

Утилита vgdisplay предоставляет более подробную информацию о группе томов (или обо всех группах томов, если вы не будете передавать ей каких-либо аргументов).

[root@RHEL5 ~]# vgdisplay VolGroup00
  --- Volume group ---
  VG Name               VolGroup00
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               15.88 GB
  PE Size               32.00 MB
  Total PE              508
  Alloc PE / Size       508 / 15.88 GB
  Free PE / Size        0 / 0 
  VG UUID               qsXvJb-71qV-9l7U-ishX-FobM-qptE-VXmKIg

[root@RHEL5 ~]#

Проверка существующих логических томов

Утилита lvs

Используйте утилиту lvs для получения краткой информации обо всех существующих логических томах. В выводе данной утилиты, приведенном в примере ниже, вы можете обнаружить информацию о двух логических томах с именами LogVol00 и LogVol01.

[root@RHEL5 ~]# lvs
  LV       VG         Attr    LSize  Origin Snap%  Move Log Copy% 
  LogVol00 VolGroup00 -wi-ao  14.88G 
  LogVol01 VolGroup00 -wi-ao   1.00G 
[root@RHEL5 ~]#

Утилита lvscan

Утилита lvscan позволяет осуществить сканирование всех дисковых устройств в поисках существующих логических томов.

[root@RHEL5 ~]# lvscan
  ACTIVE           '/dev/VolGroup00/LogVol00' [14.88 GB] inherit
  ACTIVE           '/dev/VolGroup00/LogVol01' [1.00 GB] inherit
[root@RHEL5 ~]#

Утилита lvdisplay

Более подробная информация о логических томах может быть получена с помощью утилиты lvdisplay(1).

[root@RHEL5 ~]# lvdisplay VolGroup00/LogVol01
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol01
  VG Name                VolGroup00
  LV UUID                RnTGK6-xWsi-t530-ksJx-7cax-co5c-A1KlDp
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.00 GB
  Current LE             32
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:1

[root@RHEL5 ~]#

Управление логическими томами

Утилита pvcreate

Используйте утилиту pvcreate для добавления устройств, работа с которыми должна осуществляться посредством технологии LVM. В данном примере показана методика перевода дискового устройства (или устройства из аппаратного массива RAID) в разряд устройств LVM.

[root@RHEL5 ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
[root@RHEL5 ~]#

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

[root@RHEL5 ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
[root@RHEL5 ~]#

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

[root@RHEL5 ~]# pvcreate /dev/sde /dev/sdf /dev/sdg
  Physical volume "/dev/sde" successfully created
  Physical volume "/dev/sdf" successfully created
  Physical volume "/dev/sdg" successfully created
[root@RHEL5 ~]#

Утилита pvremove

Используйте утилиту pvremove для удаления физических томов из списка физических томов LVM. Соответствующие устройства не должны использоваться.

[root@RHEL5 ~]# pvremove /dev/sde /dev/sdf /dev/sdg
  Labels on physical volume "/dev/sde" successfully wiped
  Labels on physical volume "/dev/sdf" successfully wiped
  Labels on physical volume "/dev/sdg" successfully wiped
[root@RHEL5 ~]#

Утилита pvresize

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

[root@RHEL5 ~]# pvresize /dev/sde1
  Physical volume "/dev/sde1" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Утилита pvchange

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

[root@RHEL5 ~]# pvchange -xn /dev/sdd
  Physical volume "/dev/sdd" changed
  1 physical volume changed / 0 physical volumes not changed
[root@RHEL5 ~]#

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

[root@RHEL5 ~]# pvchange -xy /dev/sdd
  Physical volume "/dev/sdd" changed
  1 physical volume changed / 0 physical volumes not changed
[root@RHEL5 ~]#

Утилита pvmove

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

[root@RHEL5 ~]# pvs | grep vg1
  /dev/sdf   vg1        lvm2 a-   816.00M      0 
  /dev/sdg   vg1        lvm2 a-   816.00M 816.00M
[root@RHEL5 ~]# pvmove /dev/sdf
  /dev/sdf: Moved: 70.1%
  /dev/sdf: Moved: 100.0%
[root@RHEL5 ~]# pvs | grep vg1
  /dev/sdf   vg1        lvm2 a-   816.00M 816.00M
  /dev/sdg   vg1        lvm2 a-   816.00M      0

Управление группами томов

Утилита vgcreate

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

[root@RHEL5 ~]# vgcreate vg42 /dev/sde /dev/sdf
  Volume group "vg42" successfully created
[root@RHEL5 ~]#

Утилита vgextend

Используйте утилиту vgextend для расширения существующей группы томов путем добавления в нее нового физического тома.

[root@RHEL5 ~]# vgextend vg42 /dev/sdg
  Volume group "vg42" successfully extended
[root@RHEL5 ~]#

Утилита vgremove

Используйте утилиту vgremove для удаления групп томов LVM. Удаляемые группы томов не должны использоваться.

[root@RHEL5 ~]# vgremove vg42
  Volume group "vg42" successfully removed
[root@RHEL5 ~]#

Утилита vgreduce

Используйте утилиту vgreduce для удаления физического тома из группы томов.

В следующем примере осуществляется добавление физического тома, представленного файлом устройства /dev/sdg, в группу томов с именем vg1 средствами утилиты vgextend. После этого данный логический том удалятся из группы томов с помощью утилиты vgreduce.

[root@RHEL5 ~]# pvs | grep sdg
  /dev/sdg              lvm2 --   819.20M 819.20M
[root@RHEL5 ~]# vgextend vg1 /dev/sdg
  Volume group "vg1" successfully extended
[root@RHEL5 ~]# pvs | grep sdg
  /dev/sdg   vg1        lvm2 a-   816.00M 816.00M
[root@RHEL5 ~]# vgreduce vg1 /dev/sdg
  Removed "/dev/sdg" from volume group "vg1"
[root@RHEL5 ~]# pvs | grep sdg
  /dev/sdg              lvm2 --   819.20M 819.20M

Утилита vgchange

Используйте утилиту vgchange для изменения значений параметров группы томов.

В данном примере показана методика предотвращения добавления или удаления физических томов из группы томов с именем vg1.

[root@RHEL5 ~]# vgchange -xn vg1
  Volume group "vg1" successfully changed
[root@RHEL5 ~]# vgextend vg1 /dev/sdg
  Volume group vg1 is not resizable.

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

[root@RHEL5 ~]# vgdisplay vg1 | grep -i max
  MAX LV                0
  Max PV                0
[root@RHEL5 ~]# vgchange -l16 vg1
  Volume group "vg1" successfully changed
[root@RHEL5 ~]# vgchange -p8 vg1
  Volume group "vg1" successfully changed
[root@RHEL5 ~]# vgdisplay vg1 | grep -i max
  MAX LV                16
  Max PV                8

Утилита vgmerge

Объединение двух групп томов в рамках одной группы может осуществляться с помощью утилиты vgmerge. В следующем примере происходит объединение группы томов с именем vg2 с группой томов с именем vg1 с сохранением всех значений параметров группы томов с именем vg1.

[root@RHEL5 ~]# vgmerge vg1 vg2
  Volume group "vg2" successfully merged into "vg1"
[root@RHEL5 ~]#

Управление логическими томами

Утилита lvcreate

Используйте утилиту lvcreate для создания логических томов в рамках группы томов. В данном примере в рамках группы томов с именем vg42 создается логический том размером в 8 Гб.

[root@RHEL5 ~]# lvcreate -L5G vg42
  Logical volume "lvol0" created
[root@RHEL5 ~]#

Как вы видите, LVM автоматически присваивает логическому разделу имя lvol0. В следующем примере в рамках группы томов с именем vg42 создается логический том с именем MyLV размером в 200 Мб.

[root@RHEL5 ~]# lvcreate -L200M -nMyLV vg42
  Logical volume "MyLV" created
[root@RHEL5 ~]#

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

[root@RHEL5 ~]# lvcreate --size 200M -n MyLV vg42
  Logical volume "MyLV" created
[root@RHEL5 ~]#

А в этом примере создается логический том, который будет занимать ровно 10 процентов дискового пространства группы томов.

[root@RHEL5 ~]# lvcreate -l 10%VG -n MyLV2 vg42
  Logical volume "MyLV2" created
[root@RHEL5 ~]#

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

[root@RHEL5 ~]# lvcreate -l 30%FREE -n MyLV3 vg42
  Logical volume "MyLV3" created
[root@RHEL5 ~]#

Утилита lvremove

Используйте утилиту lvremove для удаления логических томов из группы томов. Для удаления логического тома потребуется имя группы томов.

[root@RHEL5 ~]# lvremove vg42/MyLV
Do you really want to remove active logical volume "MyLV"? [y/n]: y
  Logical volume "MyLV" successfully removed
[root@RHEL5 ~]#

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

[root@RHEL5 ~]# lvremove vg42/MyLV vg42/MyLV2 vg42/MyLV3
Do you really want to remove active logical volume "MyLV"? [y/n]: y
  Logical volume "MyLV" successfully removed
Do you really want to remove active logical volume "MyLV2"? [y/n]: y
  Logical volume "MyLV2" successfully removed
Do you really want to remove active logical volume "MyLV3"? [y/n]: y
  Logical volume "MyLV3" successfully removed
[root@RHEL5 ~]#

Утилита lvextend

Расширение логического тома может осуществляться достаточно просто средствами утилиты lvextend. В следующем примере логический том размером в 200 Мб расширяется на 100 Мб.

[root@RHEL5 ~]# lvdisplay /dev/vg2/lvol0 | grep Size
  LV Size               200.00 MB
[root@RHEL5 ~]# lvextend -L +100 /dev/vg2/lvol0
  Extending logical volume lvol0 to 300.00 MB
  Logical volume lvol0 successfully resized
[root@RHEL5 ~]# lvdisplay /dev/vg2/lvol0 | grep Size
  LV Size               300.00 MB

В следующем примере создается логический том размером в 100 Мб, который впоследствии расширяется до 500 Мб.

[root@RHEL5 ~]# lvcreate --size 100M -n extLV vg42
  Logical volume "extLV" created
[root@RHEL5 ~]# lvextend -L 500M vg42/extLV
  Extending logical volume extLV to 500.00 MB
  Logical volume extLV successfully resized
[root@RHEL5 ~]#

А в данном примере размер логического тома удваивается.

[root@RHEL5 ~]# lvextend -l+100%LV vg42/extLV
  Extending logical volume extLV to 1000.00 MB
  Logical volume extLV successfully resized
[root@RHEL5 ~]#

Утилита lvrename

Переименование логического тома осуществляется с помощью утилиты lvrename. В данном примере осуществляется смена имени логического тома из группы томов vg42 с extLV на bigLV.

[root@RHEL5 ~]# lvrename vg42/extLV vg42/bigLV
  Renamed "extLV" to "bigLV" in volume group "vg42"
[root@RHEL5 ~]#

Практическое задание: LVM

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

2. Создайте два логических тома (малого и большего размера) в рамках данной группы томов. Создайте в них файловую систему ext3, смонтируйте их и скопируйте какие-либо файлы на них.

3. Попытайтесь получить информацию о заполнении созданных томов, воспользовавшись утилитами fdisk, mount, pvs, vgs, lvs, pvdisplay, vgdisplay, lvdispaly и df. Получили ли вы какую-либо информацию о томах LVM от утилиты fdisk?

4. Расширьте логический том малого размера на 50 процентов и проверьте корректность выполнения операции!

5. Рассмотрите другие утилиты, имена которых начинаются с символов vg*, pv* и lv*.

6. Создайте зеркальный логический том (mirrored) и логический том с чередованием (striped).

7. Преобразуйте линейный логический том (linear) в зеркальный (mirrored).

8. Преобразуйте зеркальный логический том (mirrored) в линейный (linear).

9. Создайте снимок логического тома, а также резервную копию этого снимка. После этого удалите некоторые файлы с логического тома и восстановите том из резервной копии его снимка.

10. Переместите вашу группу томов на другое дисковое устройство (оставьте логические тома смонтированными).

11. При наличии времени разделите группу томов с помощью утилиты vgsplit, после чего снова объедините результирующие группы с помощью утилиты vgmerge.

Корректная процедура выполнения практического задания: LVM

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

Шаг 1: выбор дисковых устройств

root@rhel65:~# fdisk -l | grep Disk
Disk /dev/sda: 8589 MB, 8589934592 bytes
Disk identifier: 0x00055ca0
Disk /dev/sdb: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 1073 MB, 1073741824 bytes
Disk identifier: 0x00000000
...

В данном случае я выбрал дисковые устройства, представленные файлами устройств /dev/sdb и /dev/sdc.

Шаг 2: создание разделов на устройстве, представленном файлом устройства /dev/sdc

root@rhel65:~# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disk\
label
Building a new DOS disklabel with disk identifier 0x94c0e5d5.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e extended
   p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): 

Using default value 130

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Шаг 3: Работа с утилитами pvcreate и vgcreate

root@rhel65:~# pvcreate /dev/sdb /dev/sdc1
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc1" successfully created
root@rhel65:~# vgcreate VG42 /dev/sdb /dev/sdc1
  Volume group "VG42" successfully created

2. Создайте два логических тома (малого и большего размера) в рамках данной группы томов. Создайте в них файловую систему ext3, смонтируйте их и скопируйте какие-либо файлы на них.

root@rhel65:~# lvcreate --size 200m --name LVsmall VG42
  Logical volume "LVsmall" created
root@rhel65:~# lvcreate --size 600m --name LVbig VG42
  Logical volume "LVbig" created
root@rhel65:~# ls -l /dev/mapper/VG42-LVsmall
lrwxrwxrwx. 1 root root 7 Апр 20 20:41 /dev/mapper/VG42-LVsmall -> ../dm-2
root@rhel65:~# ls -l /dev/VG42/LVsmall
lrwxrwxrwx. 1 root root 7 Апр 20 20:41 /dev/VG42/LVsmall -> ../dm-2
root@rhel65:~# ls -l /dev/dm-2
brw-rw----. 1 root disk 253, 2 Апр 20 20:41 /dev/dm-2

root@rhel65:~# mkfs.ext3 /dev/mapper/VG42-LVsmall
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
 8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

root@rhel65:~# mkfs.ext3 /dev/VG42/LVbig
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
38400 inodes, 153600 blocks
7680 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=159383552
5 block groups
32768 blocks per group, 32768 fragments per group
7680 inodes per group
Superblock backups stored on blocks: 
 32768, 98304

Writing inode tables: done 
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Монтирование файловых систем и копирование файлов:

root@rhel65:~# mkdir /srv/LVsmall
root@rhel65:~# mkdir /srv/LVbig
root@rhel65:~# mount /dev/mapper/VG42-LVsmall /srv/LVsmall
root@rhel65:~# mount /dev/VG42/LVbig /srv/LVbig
root@rhel65:~# cp -r /etc /srv/LVsmall/
root@rhel65:~# cp -r /var/log /srv/LVbig/

3. Попытайтесь получить информацию о заполнении созданных томов, воспользовавшись утилитами fdisk, mount, pvs, vgs, lvs, pvdisplay, vgdisplay, lvdispaly и df. Получили ли вы какую-либо информацию о томах LVM от утилиты fdisk? Используйте все упомянутые утилиты (ниже приведены примеры использования только двух из них), и ответьте "нет" на поставленный вопрос.

root@rhel65:~# df -h 
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      6.7G  1.4G  5.0G  21% /
tmpfs                 246M     0  246M   0% /dev/shm
/dev/sda1             485M   77M  383M  17% /boot
/dev/mapper/VG42-LVsmall
                      194M   30M  154M  17% /srv/LVsmall
/dev/mapper/VG42-LVbig
                      591M   20M  541M   4% /srv/LVbig
root@rhel65:~# mount | grep VG42
/dev/mapper/VG42-LVsmall on /srv/LVsmall type ext3 (rw)
/dev/mapper/VG42-LVbig on /srv/LVbig type ext3 (rw)

4. Расширьте логический том малого размера на 50 процентов и проверьте корректность выполнения операции!

root@rhel65:~# lvextend VG42/LVsmall -l+50%LV
  Extending logical volume LVsmall to 300.00 MiB
  Logical volume LVsmall successfully resized
root@rhel65:~# resize2fs /dev/mapper/VG42-LVsmall
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VG42-LVsmall is mounted on /srv/LVsmall; on-line res\
izing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/VG42-LVsmall to 307200 (1k) blocks.
The filesystem on /dev/mapper/VG42-LVsmall is now 307200 blocks long.

root@rhel65:~# df -h | grep small
/dev/mapper/VG42-LVsmall
                      291M   31M  246M  12% /srv/LVsmall
root@rhel65:~#

5. Рассмотрите другие утилиты, имена которых начинаются с символов vg*, pv* и lv*.

6. Создайте зеркальный логический том (mirrored) и логический том с чередованием (striped).

7. Преобразуйте линейный логический том (linear) в зеркальный (mirrored).

8. Преобразуйте зеркальный логический том (mirrored) в линейный (linear).

9. Создайте снимок логического тома, а также резервную копию этого снимка. После этого удалите некоторые файлы с логического тома и восстановите том из резервной копии его снимка.

10. Переместите вашу группу томов на другое дисковое устройство (оставьте логические тома смонтированными).

11. При наличии времени разделите группу томов с помощью утилиты vgsplit, после чего снова объедините результирующие группы с помощью утилиты vgmerge.