: | : |
‹ | › | |||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
2018-06-13 12:34:07 6224 0
Использование LVM в Линукс
LVM - Менеджер логических томов. Подход к абстрагированию логических томов от физических носителей, который увеличивает гибкость использование этих носителей. LVM позволяет изменять логические тома прозрачно для приложений, которые используют эти тома.
LVM включает в себя три уровня абстракции:
- PV(физический том) - это могут быть разделы на диске или целый жесткий диск, физические состовляющие структуры LVM. Если физические разделы или диски настроенны на работу с LVM, то к ним нужно обращаться только через LVM, иначе можно получить ошибки при работе;
- VG(группы томов) - логический уровень абстракции, который можно сравнить с виртуальными расширяемыми дисками, они могут содержать в себе один или несколько физический томов, на их базе уже создаются логические тома, с которыми можно работать как с обычными разделами;
- LV(логические тома) - являются частью VG, соответствуют разделу на жестком диске, они представлены как блочные устройства в директории /dev и с ними можно работать как с разделами.
Важно помнить, что разбиение VG на LV не зафисит от PV. На одном физическом томе могут быть расположены множество логических томов и наоборот на нескольких физических томах, может быть расположен один логический том.
настройка LVM
Скорее всего пакет для управления LVM уже установлен в сисетме, если нет то его можно установть
sudo apt-get install lvm2
переходим к настройке LVM
Посмотрим имеются ли в системе физические тома:
sudo pvdisplay
------------------
Физических томов у нас пока нету.
Для создания физических томов, давайте сначала посмотрим, какие физические диски или разделы есть в нашей системе
sudo fdisk -l
Диск /dev/sdb: 10 GiB, 10737418240 байтов, 20971520 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes Диск /dev/sdc: 20 GiB, 21474836480 байтов, 41943040 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes Диск /dev/sdd: 30 GiB, 32212254720 байтов, 62914560 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes
Видим три неразмеченных диска, давай те поработаем с ними и создадим физические тома:
sudo pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
По-аналогии создаем другие:
sudo pvcreate /dev/sdc
sudo pvcreate /dev/sdd
Проверяем создание физических томов:
sudo pvdisplay
"/dev/sdd" is a new physical volume of "30,00 GiB" --- NEW Physical volume --- PV Name /dev/sdd VG Name PV Size 30,00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 15EHhd-Km1N-sIll-dun6-vVbd-vhYM-TvJd3P "/dev/sdb" is a new physical volume of "10,00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 10,00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID OvwTAe-hRnG-WKZh-WFKf-0D9H-68Mo-6cmO7W "/dev/sdc" is a new physical volume of "20,00 GiB" --- NEW Physical volume --- PV Name /dev/sdc VG Name PV Size 20,00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 7oY48u-jXZq-RSVE-GaPh-kcJN-WHbw-f0WiBq
Далее переходим к созданию группы томов VG (создадим одну группу, которая включает два физических тома и одну группу, которая включает один физический том)
sudo vgcreate vg1 /dev/sdb /dev/sdc
Volume group "vg1" successfully created
sudo vgcreate vg2 /dev/sdd
Смотрим что получилось:
sudo vgdisplay
--- Volume group --- VG Name vg2 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 30,00 GiB PE Size 4,00 MiB Total PE 7679 Alloc PE / Size 0 / 0 Free PE / Size 7679 / 30,00 GiB VG UUID ZVsFmf-xUbt-69pZ-pqW3-xjWc-JgOU-AtTCfo --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 2 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 2 Act PV 2 VG Size 29,99 GiB PE Size 4,00 MiB Total PE 7678 Alloc PE / Size 0 / 0 Free PE / Size 7678 / 29,99 GiB VG UUID i5fLJ8-q2wk-s35g-cCZ3-bpkS-Mw1e-Qcksj
переходим к самому интересному, создадим наши логические разделы, которые уже потом мы сможем отформатировать и использовать.
sudo lvcreate -n lv-test1 -L 5G vg2
Мы создали логический том с именем lv-test1 размером 5 Гигабайт на группе томов vg2
sudo lvdisplay
--- Logical volume --- LV Path /dev/vg2/lv-test1 LV Name lv-test1 VG Name vg2 LV UUID eib22I-c1mE-duBt-A5bf-RYSM-dILH-MRuE2F LV Write Access read/write LV Creation host, time lvm-test, 2018-06-07 16:36:20 +0300 LV Status available # open 0 LV Size 5,00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 252:0
Как видим в секции "LV Path" указано где расположен файл блочного устройства.
Давай те теперь создадим логический том, который будет полностью покрывать два физических тома /dev/sdb и /dev/sdc.
sudo lvcreate -n lv-big -l 100%FREE vg1
Был создан логический том с именем lv-big, который зайдет 100% свободного места на группе томов vg1
При создании логических томов, можно использовать множество опций, доступных в утилите lvcreate, обращайтесь к документации, что бы ознакомиться с ними.
Теперь давай те сделаем из них используемые разделы, отформатируем их и смонтируем куда нибудь.
Форматируем тома:
sudo mkfs.ext4 /dev/vg1/lv-big
sudo mkfs.ext4
Смонтируем их в директории и создадим там файлы:
sudo mkdir /lv-big
sudo mkdir /lv-test1
sudo mount /dev/vg1/lv-big /lv-big
Смотрим, что получилось:
df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в udev 478M 0 478M 0% /dev tmpfs 100M 4,6M 95M 5% /run /dev/sda1 15G 1,4G 13G 10% / tmpfs 497M 0 497M 0% /dev/shm tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs 497M 0 497M 0% /sys/fs/cgroup tmpfs 100K 0 100K 0% /run/lxcfs/controllers tmpfs 100M 0 100M 0% /run/user/0 /dev/mapper/vg1-lv--big 30G 44M 28G 1% /lv-big /dev/mapper/vg2-lv--test1 4,8G 10M 4,6G 1% /lv-test1
touch /lv-big/big-test
touch /lv-test1/test1
А теперь займемся самым интересным, поработаем с этими раздлелами, посмотрим как можно на лету увеличивать размер тома
sudo lvresize -L 8G /dev/vg2/lv-test1
Size of logical volume vg2/lv-test1 changed from 5,00 GiB (1280 extents) to 8,00 GiB (2048 extents). Logical volume lv-test1 successfully resized.
Мы увеличили размер тома с 5 Гб до 8 Гб
Теперь расширим файловую систему на томе
sudo resize2fs /dev/vg2/lv-test1
resize2fs 1.42.13 (17-May-2015) Filesystem at /dev/vg2/lv-test1 is mounted on /lv-test1; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/vg2/lv-test1 is now 2097152 (4k) blocks long.
df -h
/dev/mapper/vg1-lv--big 30G 44M 28G 1% /lv-big /dev/mapper/vg2-lv--test1 7,8G 12M 7,4G 1% /lv-test1
Как видим, размер тома увеличился.
Утилита lvresize имеет много других опций, для ознакомления с ними обращайтесь к справочному руководству.
Теперь давайте добавим в систему еще один жесткий диск и посмотрим, как можно увеличить группу томов VG.
sudo fdisk -l
........ Диск /dev/sde: 5 GiB, 5368709120 байтов, 10485760 секторов Единицы измерения: секторов из 1 * 512 = 512 байтов Размер сектора (логический/физический): 512 байт / 512 байт I/O size (minimum/optimal): 512 bytes / 512 bytes .......
Созадем физический том на новом диске
sudo pvcreate /dev/sde
И теперь расширим наш vg2 и добавим в него новый физический том
sudo vgextend vg2 /dev/sde
pvdisplay
--- Physical volume --- PV Name /dev/sde VG Name vg2 PV Size 5,00 GiB / not usable 4,00 MiB Allocatable yes PE Size 4,00 MiB Total PE 1279 Free PE 1279 Allocated PE 0 PV UUID H6wOgU-33TO-sj2D-R3dJ-b62s-H5av-YaIjPe
Видим, что физический том входит в состав vg2.
Для удаления физического тома из группы томов, можно использовать утилиту vgreduce (убираем физический том /dev/sde из группы томов vg2)
sudo vgreduce vg2 /dev/sde
Рассмотрим перемещение физической составляющей с одного тома на другой (это можно использовать когда вам нужно заменить диск в группе томов и сохранить данные)
Допустим у нас есть физический том /dev/sdb, который входит в группу томов vg0, на нем хранятся какие то файлы. Потом мы добавляем диск /dev/sdc
Создаем из него физический том
sudo pvcreate /dev/sdc
добавляем его в vg0
sudo vgextend vg0 /dev/sdc
Переносим все данные с физического тома /dev/sdb на том /dev/sdc
sudo pvmove /dev/sdb /dev/sdc
Это займет некоторое время
/dev/sdb: Moved: 0,0% /dev/sdb: Moved: 51,0% /dev/sdb: Moved: 100,0%
Убираем физический том /dev/sdb из группы томов vg0
sudo vgreduce vg0 /dev/sdb
Все все данные перенесены на новый диск
Создание снимков lVM
Создание снимков файловой системы, одно из преимуществ LVM, их можно использовать для бэкапов или для резервной копии на случай, если вы хотите сделать какие гнибудь изменения в файловой системе, но при этом боитесь потерять данные. Рассмотрим создание снимка и восстановление с него.
Создадим файл на нашем логическом томе.
dd if=/dev/zero of=/lv-test1/primer1 bs=1M count=100
Теперь давайте сделаем снимок этого тома
sudo lvcreate -L 500M -s -n test-move-snap /dev/vg0/test-move
Мы создали снимок тома test-move размер которого ограничен 500Мб, имя снимка test-move-snap
Теперь давай те посмотрим что у нас получилось
sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert test-move vg0 owi-aos--- 2,00g test-move-snap vg0 swi-a-s--- 500,00m test-move 0,00
- LV - имя логического тома;
- VG - группа томов, к которому относится логический том;
- Attr - аттрибуты тома;
- LSize - размеры тома;
- Origin - если том является снимком, то тут указан снимком какого тома он является;
- Data% - процент использованного объема от выделенного.
Так наш снимок создан, теперь давай те удалим файл с основного тома, что бы потом его восстановить из снимка
rm -rf /lv-test1/primer1
теперь, для того что бы восстановиться, необходимо сничала отмонтировать том
sudo umount /dev/vg0/test-move
Теперь выполним восстановление тома из снимка
sudo lvconvert --merge /dev/vg0/test-move-snap
Merging of volume test-move-snap started. test-move: Merged: 100,0%
Теперь провверяем, что у нас получилось
sudo mount /dev/vg0/test-move /lv-test1/
ls -l /lv-test1
drwx------ 2 root root 16384 июн 7 17:51 lost+found -rw-r--r-- 1 root root 104857600 июн 8 10:05 primer1
После восстановления снимок тома автоматически был удален
sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert test-move vg0 -wi-ao---- 2,00g
Введите ответ:
+
=