: :

ПнВтСрЧтПтСбВс

2018-06-13 12:34:07 2269 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 






Введите ответ:

+

=