суббота, 26 марта 2011 г.

debian и lvm

С начала ещё раз о разделах.
В чем их основной минус? В том, что размер раздела больше емкости одной хардянки сделать не получится. Помогает только райд или ... lvm.

Есть второй косяк за разделами, не возможность online(на лету) расширения раздела, если нет свободного места перед следующим разделом. Ну к примеру.
sda1 - 10 Гигов
свободно 20 Гигов
sda2 - 40 гигов
sda3 - 60 гигов
свободно 50 Гигов

В данном случае, по быстрому sda1 увеличить можно только на 20 Гигов, sda3 на 50 Гигов, а sda2 в обломе. Т.е. если понадобится больше место для sda2, то придется двигать разделы. Эта операция явно не на 10 минут и сервер будет в простое. Т.е. приятных тебе выходных. А ты как думаешь, в рабочее время что ли?

Вот по этому-то с разделами такая давняя вражда у многих. И со вторым косяком тебе ни какой райд не поможет.


Вот тут и выходит на сцену LVM, вот его кратко описание из вики:

Менеджер логических томов (англ. Logical Volume Manager) — менеджер логических томов операционных систем Linux и OS/2. LVM — это метод распределения пространства жёсткого диска по логическим томам, размер которых можно легко менять, в отличие от разделов.

Размер которых можно легко менять - вот самая важная фраза. К этому делу появляется несколько плюшек. Самая пожалуй приятная плюшка,на мой взгляд, - именованные разделы.
Т.е. не надо думать, что это за раздел и куда я его пихал. Минус есть, и он в том, что этот уровень абстракции немного уменьшает производительность. По моим прошлым замерам, чуть больше жрет проц на 2-5%, и скорость хардов падает на 1-5%. В общем удобств будет много, а жертва не такая уж и сильная.

Теперь о том как с ним работать.
Для начала его надо установить:
apt-get install lvm2

После установки с ним можно без проблем работать.

Для начала надо добавить разделы или диск целиком (а можно и несколько дисков) к менеджеру томов, который из него сделает один physical volume (pv)
pvcreate /dev/sda2 /dev/sdb /dev/sdc
pvs # посмотреть информацию о физических томах

Все диски или разделы он добавит в общую копилку. И LVM'у будет всё равно, ssd это или "хардянка обычна развесная" или ramdisk.

Дальше нам надо сгруппировать несколько физических в сгруппированный том.
vgcreate sata-vol /dev/sda2 /dev/sdb # раздел для саташных хардянок
vgcreate sas-vol /dev/sdc # раздел для sas-хардов. Ну если /dev/sdc - sas-хард.
vgs # посмотреть информацию о сгруппированных томах

Можно сделать и один сгруппированный том. Тут на ваше усмотрение.

Теперь у каждого тома объем будет суммироваться по физическим томам. В этом и прелесть. Два харда по 2ТБ, а на выходе 4 ТБ том. И ни каких спец. железок.

А дальше будем создавать блочные устройства которые будут выполнять роль накопителей в системе. Тут они называются логическими томами(logical volume).
lvcreate -L 10G -n log sata-vol # собственно раздел для логов на 10Гиг, который на sata хардах
lvcreate -L 20G -n databases sas-vol # под БД 20 гиг, будет лежать на sas хардах
lvcreate -L 20G -n www sata-vol /dev/sda2 # под веб, 20 гигов на саташном харде и именно sda2

lvs #посмотреть информацию.

# Создадим разделы
mkfs.ext4 /dev/sata-vol/log
mkfs.xfs /dev/sas-vol/databases
mkfs.reiserfs /dev/sata-vol/www

Разделы в системе будут такими

/dev/sata-vol/log -> /dev/mapper/sata-vol-log
/dev/sas-vol/databases -> /dev/mapper/sas-vol-databases
/dev/sata-vol/www -> /dev/mapper/sata-vol-www

А теперь о самом главном. Расширении на лету.
Самая востребованная комманда
lvextend -L +40G /dev/sata-vol/www # Расширили место на 40 Гиг, и взяли его из пространства sata-vol
lvextend -L +20G /dev/sas-vol/db # Расширили на 20Гиг, взяли из пространства sas-vol

Расширение происходит почти мгновенно, т.е. секунду.
vgextend # расширение сгруппированных томов.

А дальше, это главное, что бы файловая система умела расширятся на лету во время работы.
Например ext4 или xfs, reiserfs. Эти точно могут.
resize2fs /dev/sata-vol/www # Соответственно увеличим ext4
xfs_growfs /dev/sas-vol/databases # Увеличим xfs

Т.е. получается, что бы добавить пару сот лишних гигов мы потратим 5-30 минут, в зависимости от файловой системы и скорости хардов :) При этом система будет работать всё это время.

Вообще можно схему сделать такую. Создать raidХY и по верху накатить LVM. Особенно хорошо при аппаратных райдах. Тогда подсистема накопителей может быть быстрой, надежной и гибкой.
P.S.: надеюсь, что теперь не будет вопросов по поводу как быстро и удобно работать с разделами.

Комментариев нет: