Відмінності між версіями «Lvm»

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

Версія за 12:52, 9 вересня 2011

| Работа с 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 

На этом все, удачи.