Работа с LVM

Материал из darklurker wiki
Перейти к: навигация, поиск

Введение

LVM — это дополнительный слой абстракции от железа, позволяющий собрать кучи разнородных дисков в один, и затем снова разбить этот один именно так как нам хочется.

Существует 3 уровня абстракции:

  • PV (Physical Volume) — физические тома (это могут быть разделы или целые «неразбитые» диски)
  • VG (Volume Group) — группа томов (объединяем физические тома (PV) в группу, создаём единый диск, который будем дальше разбивать так, как нам хочется)
  • LV (Logical Volume) — логические разделы, собственно раздел нашего нового «единого диска» ака Группы Томов, который мы потом форматируем и используем как обычный раздел, обычного жёсткого диска.

Установка и работа с LVM

Для работы нужны пакеты lvm2 и возможность работать с привелегиями root поэтому:

sudo yum install lvm2

Создаем физический том:

pvcreate /dev/sdb

Создаем группу томов:

vgcreate hostname /dev/sdb

Такие папки как /usr /var /tmp /home желательно вынести с корневого раздела, создаем:

lvcreate -n usr -L10G hostname     //здесь мы создаём раздел с именем «usr», размером 10Gb 

По аналогии делаем то же для /var, /tmp , /home :

lvcreate -n var -L10G hostname
lvcreate -n tmp -L2G hostname
lvcreate -n home -L500G hostname

Посмотреть сколько именно можно командой:

vgdisplay

Информацию по созданным логическим томам

lvdisplay

Информацию по физическим томам

pvdisplay

Разделы что мы создали появятся в папке /dev/[имя_vg]/ , точнее там будут ссылки на файлы:

lrwxrwxrwx 1 root root 22 2009-08-10 18:35 swap -> /dev/mapper/hostname-swap
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 tmp -> /dev/mapper/hostname-tmp
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 usr -> /dev/mapper/hostname-usr
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 var -> /dev/mapper/hostname-var

Форматируем разделы в файловые системы:

mkfs.ext2 -L tmp /dev/ws/tmp
mkfs.ext4 -L usr /dev/ws/usr
mkfs.ext4 -L var /dev/ws/var
mkfs.ext4 -L home /dev/ws/home

Также, желательно сделать раздел подкачки:

lvcreate -n swap -L2G ws
mkswap -L swap /dev/ws/swap
swapon /dev/ws/swap


Перенос содержимого текущего диска, на свеже-созданный

Создаём папку и подключая по очереди новообразовавшиеся тома, копируем в них нужное содержимое:

mkdir /mnt/target 
mount /dev/ws/home /mnt/target

Копируем туда всё из папки /home:

cp -a /home/* /mnt/target/
umount /mnt/target/

Для папки temp необходимо только поправить права, копировать туда что-либо необязательно:

mount /dev/hostname/tmp /mnt/target && chmod -R a+rwx /mnt/target && umount /mnt/target/

Добавляем нужные строчки в /etc/fstab, например такие:

/dev/mapper/hostname-home /home ext4 relatime 0 2
/dev/mapper/hostname-tmp /tmp ext2 noatime 0 2
/dev/mapper/hostname-swap none swap sw 0 0

и перезагружаемся

Перемещение системы на другой диск/раздел

Добавление/удаление жёстких дисков с помощью LVM в режиме реального времени

Представим, что dev/sda1 - наш сбойный диск.

pvcreate /dev/sdb1                       //монтируем спасательный диск
vgcreate vg0 /dev/sda1                   //создаю группу томов vg0
lvcreate -n test -L10G vg0               //Создадим раздел для «важной» инфы
mkfs.ext2 /dev/vg0/test                  //создадим файловую систему на разделе
mount /dev/mapper/vg0-test /mnt/tmp/     //монтируем раздел 
vgextend vg0 /dev/sdb1                   //расширяем нашу групу томов на «спасательный» диск
pvmove /dev/sda1 /dev/sdb1               //передвигаем содержимое с «умирающего» диска на «спасательный»
vgreduce vg0 /dev/sda1                   //убираем «умирающий» диск из группы томов.


Очень подробно про LVM можно почитать здесь


ПРИМЕЧАНИЕ!

 LVM не читается grub'ом.
 Раздел /boot должен находиться вне LVM на отдельном разделе жёсткого диска, иначе система не загрузится.

Материал для статьи взят с хабра, переделан под более читаемый вид.