LVM (Logical Volume Management) — это система управления дисковым пространством, которая позволяет объединить все подключенные в системе жесткие диски в единый пул дискового пространства, а затем распределить дисковое пространство из этого пула между логическими разделами. Вот как это выглядит:
Представление логических разделов при использовании LVM:
На рисунке видно, что диски объединяются в один пул, из которого потом можно создать логический раздел размера большего, чем любой из дисков, установленных в системе. И это еще не всё. Любой логический раздел может быть при необходимости увеличен. Но давайте по порядку.
Создание пула дискового пространства LVM.
Самое первое, что необходимо сделать — подключить в систему несколько дисков, которые будут использоваться для создания дискового пула LVM. Они должны быть видны в системе как устройства. Например, у нас в системе есть 4 диска. Первый — тот, на котором установлена система, остальные три не используются. Все четыре должны быть видны в системе:
root@debian:~# ls /dev | grep sd sda sda1 sda2 sda5 sdb sdc sdd
Следующее, что необходимо сделать, — это установить в систему пакет lvm2, если он еще не установлен.
apt-get install lvm2
После установки пакета можно создавать пул дискового пространства и включать в него физические диски. По принятой терминологии дисковый пул называют «volume group», то есть группа томов. После установки проверяем, присутствуют ли в системе дисковые пулы:
root@debian:~# vgdisplay No volume groups found
Как мы видим, ни одного дискового пула нет, и нам надо создать один. Давайте создадим один дисков пул, назовем его vg_test
root@debian:~# vgcreate vg_test /dev/sdb No physical volume label read from /dev/sdb Writing physical volume data to disk "/dev/sdb" Physical volume "/dev/sdb" successfully created Volume group "vg_test" successfully created
И теперь проверим, есть ли у нас так называемые группы томов:
root@debian:~# vgdisplay --- Volume group --- VG Name vg_test System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 8.00 GiB PE Size 4.00 MiB Total PE 2047 Alloc PE / Size 0 / 0 Free PE / Size 2047 / 8.00 GiB VG UUID 5erC13-SIU1-Iy9J-qyiM-SHlm-Mv4S-GyB0Il
Пул создан, давайте добавим в него и остальные диски.
root@debian:~# vgextend vg_test /dev/sdc /dev/sdd No physical volume label read from /dev/sdc No physical volume label read from /dev/sdd Writing physical volume data to disk "/dev/sdc" Physical volume "/dev/sdc" successfully created Writing physical volume data to disk "/dev/sdd" Physical volume "/dev/sdd" successfully created Volume group "vg_test" successfully extended
Диски добавлены. Теперь можно создавать логические разделы. Для примера создадим директорию /data и примонтируем туда созданный нами логический раздел.
root@debian:~# mkdir /data root@debian:~# lvcreate --name lv_test1 --size 1G vg_test Logical volume "lv_test1" created root@debian:~# lvdisplay --- Logical volume --- LV Path /dev/vg_test/lv_test1 LV Name lv_test1 VG Name vg_test LV UUID 5vpTj1-m0bv-oRho-yXpg-vMtl-dCT8-A2BaqN LV Write Access read/write LV Creation host, time debian, 2014-04-06 20:59:09 +0400 LV Status available # open 0 LV Size 1.00 GiB Current LE 256 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0
Изменение размеров логического раздела
Как мы видим, у нас теперь есть логический раздел размером 1 гигабайт, размещенный по пути /dev/vg_test/lv_test1 размером 1 гигабайт. Теперь надо создать на нем файловую систему и примонтировать ее в основное дерево файловой системы в точку монтирования /data.
Создание файловой системы:
root@debian:~# mkfs.ext4 /dev/vg_test/lv_test1 mke2fs 1.42.5 (29-Jul-2012) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 65536 inodes, 262144 blocks 13107 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=268435456 8 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Монтируем:
root@debian:~# mount /dev/vg_test/lv_test1 /data -o rw,defaults
И теперь вы можете видеть файловую систему в выводе команды «df -h», например.
/dev/mapper/vg_test-lv_test1 1008M 34M 924M 4% /data
Теперь увеличим логический раздел.
root@debian:~# lvextend --size +1G /dev/vg_test/lv_test1 Extending logical volume lv_test1 to 2.00 GiB Logical volume lv_test1 successfully resized
Но в выводе команды «df -h» размер файловой системы мы видим прежний. Это потому, что сам логический раздел увеличился, а размер файловой системы не увеличился.
ВНИМАНИЕ! Изменение размеров без отмонтирования поддерживают не все файловые системы, и с этим надо быть аккуратным. Средства для изменения размеров обычно включаются в пакеты утилит, предназначенных для работы с определенной файловой системой. Например, xfsprogs.
root@debian:~# resize2fs /dev/vg_test/lv_test1 resize2fs 1.42.5 (29-Jul-2012) Filesystem at /dev/vg_test/lv_test1 is mounted on /data; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/vg_test/lv_test1 to 524288 (4k) blocks. The filesystem on /dev/vg_test/lv_test1 is now 524288 blocks long.
И теперь в выводе команды «df -h» мы видим правильный размер:
/dev/mapper/vg_test-lv_test1 2.0G 34M 1.9G 2% /data
Вот и всё, в общем. Надеюсь, принципы работы с LVM вам понятны. Более подробно информацию можно посмотреть в документации к тем командам, которые были использованы.
[wysija_form id=»2″]