Lvm
1. Зачем это нужно 2. Немного теории 3. Практика 4. Расширение корневого раздела без перезагрузки 5. Использовать все доступное свободное место 6. Доступ к LVM с другой системы или после сбоя 7. Дополнительно
Зміст
1. Зачем это нужно:
Вам нужен раздел размером около 160GB но у вас есть 2 HDD по 80GB вам поможет LVM. У вас уже есть LVM и все это на HDD 6GB но вы хотите увеличить размер раздела /home под который выделено 1GB до 5GB и у вас под рукой оказался HDD на 4GB, это можно сделать с помощью LVM. И тому подобное :)
2. Немного теории.
LVM (Logical Volume Manager) — менеджер логических томов. увеличивает гибкость файловой системы, являясь промежуточным слоем. Volume Group — Группа томов - самый высокий уровень абстракции в LVM, объединяющий набор логических и физических дисков в один объект. Physical Volume — Физический том - устройство, представляющееся системе как один диск (жесткий диск или его раздел, RAID-массив). Logical Volume - Логический том — аналогичен разделу (hda1, sdb3, etc) на не-LVM системах. Так же, как и на них, представляется как блочное устройство и может нести файловую систему. Упрощенно логика работы следующая несколько реальных разделов и дисков обозначаются как отдельные "Physical Volume" затем их суммарный размер собирается в одну большую "Volume Group" или несколько. Затем уже этот большой "Volume Group" выглядит как большой HDD и мы с ним поступаем по потребностям, можем создать один большой "Logical Volume" или несколько маленьких например отдельно под /home, отдельно под /var и /usr. Тесть много реальных дисков превратилось в одни большой логический диск. И самый главный плюс в том что позднее мы сможем произвести любые изменения. Если нам потребуется увеличить размер логических разделов или же нам потребуется один из HDD мы сможем его забрать без вреда для системы лишь уменьшением размера логических разделов.
3. Практика
Практика проводилась на Linux CentOS 5.2
Определим как система определила новый HDD: [[email protected] ~]# /sbin/fdisk -l Disk /dev/hda: 2147 MB, 2147483648 bytes 16 heads, 63 sectors/track, 4161 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Disk /dev/hda doesn't contain a valid partition table Disk /dev/sda: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 652 5132767+ 8e Linux LVM Итак у нас есть: /dev/hda Так как мы будем использовать весь диск как "physical volume" у диска не должно быть таблицы разделов, это мы делаем следующей командой. [[email protected] ~]# dd if=/dev/zero of=/dev/hda bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.00360691 seconds, 142 kB/s
Теперь мы можем инициализировать наш диск как "physical volume": [[email protected] ~]# /usr/sbin/pvcreate /dev/hda Physical volume "/dev/hda" successfully created Проверим что действительно правильно добавилось: [[email protected] ~]# /usr/sbin/pvscan PV /dev/sda2 VG VolGroup00 lvm2 [4.88 GB / 0 free] PV /dev/hda lvm2 [2.00 GB] Total: 2 [6.88 GB] / in use: 1 [4.88 GB] / in no VG: 1 [2.00 GB] Добавим наш "physical volume" в уже существующую "Volume Group" в нашем случае система назвала ее "VolGroup00", давайте посмотрим каково состояние нашего "VolGroup00": [[email protected] ~]# /usr/sbin/vgdisplay --- Volume group --- VG Name VolGroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 18 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 4.88 GB PE Size 32.00 MB Total PE 156 Alloc PE / Size 156 / 4.88 GB Free PE / Size 0 / 0 VG UUID YXZGrd-0qq2-jEkd-hvjU-3ZEt-2Agx-0Fsx8b Добавляем наш "physical volume" в нашу "Volume Group": [[email protected] ~]# /usr/sbin/vgextend VolGroup00 /dev/hda Volume group "VolGroup00" successfully extended Проверим изменения в "Volume Group": [[email protected] ~]# /usr/sbin/vgdisplay --- Volume group --- VG Name VolGroup00 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 19 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 6.84 GB PE Size 32.00 MB Total PE 219 Alloc PE / Size 156 / 4.88 GB Free PE / Size 63 / 1.97 GB VG UUID YXZGrd-0qq2-jEkd-hvjU-3ZEt-2Agx-0Fsx8b Наш "Volume Group" вырос с 4.88GB до 6.84GB. Теперь мы можем использовать полученное место под наши нужды. Создадим дополнительный раздел на 1GB: [[email protected] ~]# /usr/sbin/lvcreate -L 1G -n phn1 VolGroup00 Logical volume "phn1" created Проверим: [[email protected] ~]# /usr/sbin/lvscan ACTIVE '/dev/VolGroup00/LogVol00' [4.38 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [512.00 MB] inherit ACTIVE '/dev/VolGroup00/phn1' [1.00 GB] inherit Но пользоваться этим разделом мы не можем, необходимо создать на нем файловую систему: [[email protected] ~]# /sbin/mkfs.ext3 /dev/VolGroup00/phn1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 131072 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 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (8192 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. Теперь мы можем ее примонтировать: [[email protected] ~]# mount /dev/VolGroup00/phn1 /mnt А теперь уменьшим размер файловой системы до 400М помним что раздел пока останется 1GB (если данных на разделе не больше 400М то все пройдет без проблем и данные останутся не тронутыми): [[email protected] ~]# umount /mnt А теперь уменьшим размер файловой системы до 400М помним что раздел пока останется 1GB: [[email protected] ~]# /sbin/resize2fs -p /dev/VolGroup00/phn1 400M И проверим: [[email protected] ~]# /sbin/e2fsck /dev/VolGroup00/phn1 Можно уменьшить размер нашего раздела до 900М (размеры берутся произвольно только для примера): [[email protected] ~]# /usr/sbin/lvresize -L 900M /dev/VolGroup00/phn1 Rounding up size to full physical extent 928.00 MB WARNING: Reducing active and open logical volume to 928.00 MB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce phn1? [y/n]: y Reducing logical volume phn1 to 928.00 MB Logical volume phn1 successfully resized Так как у нас есть еще свободное место на "Volume Group" создадим еще один раздел: [[email protected] ~]# /usr/sbin/lvcreate -L 1G -n phn2 VolGroup00 Logical volume "phn2" created Проверим: [[email protected] ~]# /usr/sbin/lvscan ACTIVE '/dev/VolGroup00/LogVol00' [4.38 GB] inherit ACTIVE '/dev/VolGroup00/LogVol01' [512.00 MB] inherit ACTIVE '/dev/VolGroup00/phn1' [928.00 MB] inherit ACTIVE '/dev/VolGroup00/phn2' [1.00 GB] inherit Еже ли мы хотим вернуться к исходному состоянию мы отмонтируем наши новые файловые системы и удаляем наши новые разделы: [[email protected] ~]# /usr/sbin/lvremove /dev/VolGroup00/phn1 Do you really want to remove active logical volume "phn1"? [y/n]: y Logical volume "phn1" successfully removed [[email protected] ~]# /usr/sbin/lvremove /dev/VolGroup00/phn2 Logical volume "phn2" successfully removed У выводим наш диск из "Volume Group": [[email protected] ~]# /usr/sbin/vgreduce VolGroup00 /dev/hda Removed "/dev/hda" from volume group "VolGroup00" И убираем LVM lable на наше устройство:
[[email protected] ~]# /usr/sbin/pvremove /dev/hda Labels on physical volume "/dev/hda" successfully wiped И проверяем: [[email protected] ~]# /usr/sbin/pvscan PV /dev/sda2 VG VolGroup00 lvm2 [4.88 GB / 0 free] Total: 1 [4.88 GB] / in use: 1 [4.88 GB] / in no VG: 0 [0 ]
4. Расширение корневого раздела без перезагрузки
Допустим /dev/rootvg/rootlv = 4 GB а /dev/rootvg = 10 GB и добавим к /dev/rootvg/rootlv ещо 4 GB: [[email protected] ~]# lvresize /dev/rootvg/rootlv -L+4G Extending logical volume rootlv to 8.00 GB Logical volume rootlv successfully resized [[email protected] ~]# resize2fs -p /dev/mapper/rootvg-rootlv 8G resize2fs 1.39 (29-May-2006) Filesystem at /dev/mapper/rootvg-rootlv is mounted on /; on-line resizing required Performing an on-line resize of /dev/mapper/rootvg-rootlv to 2097152 (4k) blocks. The filesystem on /dev/mapper/rootvg-rootlv is now 2097152 blocks long. Теперь у нас корневой раздел 8 GB. Но для такого расширения ext2, ext3 на ходу есть специальная утилита ext2online: [[email protected] ~]# lvresize /dev/VolGroup00/LogVol00 -L+10G Extending logical volume LogVol00 to 15.00 GB Logical volume LogVol00 successfully resized [[email protected] ~]# ext2online /zxc Где /zxc точка монтирования.
5. Использовать все доступное свободное место
Как размер логического волума можно указать все доступное свободное место:
- lvcreate -l 100%FREE -n backup_lv backup_vg
6. Доступ к LVM с другой системы или после сбоя
Если что то случилось с системой и она не грузить а требуется получить доступ к файлам в LVM. Загружаемся с установочного диска в режиме восстановления: boot: linux rescue И для активации логических групп нужно выполнить следующие команды:
- lvm vgscan
- lvm vgchange -ay
- lvm lvs
7. Дополнительно
- Переименование логического тома:
lvrename vg_name old_lv new_lv
- Создание логического тома используя все доступное место:
lvcreate -l 100%FREE -n phn_lv phn_vg
- Расширение логического тома используя все доступное место:
lvextend -l +100%FREE /dev/phn_vg/phn_lv
- Расширение файловой системы в RedHat 4:
ext2online /dev/mapper/phn_vg-phn_lv
- Другой пример:
fdisk /dev/sdb partprobe pvcreate /dev/sdb1 vgextend rootvg /dev/sdb1 lvextend -L+15G /dev/mapper/rootvg-opt_lv lvextend -L+5G /dev/mapper/rootvg-rafw_lv lvextend -l +100%FREE /dev/mapper/rootvg-media_lv resize2fs -p /dev/mapper/rootvg-opt_lv resize2fs -p /dev/mapper/rootvg-rafw_lv resize2fs -p /dev/mapper/rootvg-media_lv