Debian.pro/

Про Debian


Debian, KVM, финальные статьи. Подготавливаем LVM storage для виртуальных машин. Debian, LVM, логические томы.

Для создания LVM нам нужен один или несколько не отформатированных не смонтированных в системе разделов.

Один из таких мы создали в статье Debian, KVM, финальные статьи. Подготавливаем дисковую подсистему. RAID1, mdadm.

Если вы делали всё как в предыдущей статье — то у вас получился раздел /dev/md2.
В принципе LVM мы можем создать и из нескольких разделов, например из /dev/md2 и /dev/md3. И добавить туда ещё третий раздел /dev/sdc1.
Что такое LVM… Если объяснять для людей которые не желают понимать что же это такое — то это raid0, в котором мы можем создавать несколько логическим томов (которые в итоге мы можем отформатировать и смонтировать в основной системе или использовать как устройство хранения для виртуальной машины). Ещё там есть куча вкусностей — снапшоты, изменяемые размеры разделов и так далее. В общем вот тут почитайте.
Для нас же важно то, что с LVM наш гипервизор будет работать шустрее, чем с обычными образами. Ощутимо шустрее.
Я настоятельно советую вам использовать RAID1. Или другие RAIDы со 100% избыточностью (то есть полным дублированием данных). Хранящиеся кеши нам мало помогут, если один из хардов вдруг шмякнется.

Пожалуй, начнем. Вы знаете куда задавать вопросы, если что.

Установим необходимые пакеты (скорее всего, они уже есть, но всё же):
debian-kvm-lvm:~# aptitude install lvm2 parted
Сообщим системе, что у нас изменилась таблица разделов:
debian-kvm-lvm:~# partprobe

Скажем нашей системе, какие разделы мы собираемся использовать для LVM. Если вы следовали мануалу по созданию raid1, то:
debian-kvm-lvm:~# pvcreate /dev/md2
Или укажем два raid стораджа:
debian-kvm-lvm:~# pvcreate /dev/md2 /dev/md3
Или даже так (но все же не советую вам так делать):
debian-kvm-lvm:~# pvcreate /dev/md2 /dev/md3 /dev/sdc1
Ну вы поняли. Пишем тут все разделы, которые мы будем использовать под lvm. Они должны быть неотформатированны.

Теперь создадим группу логических томов. Их может быть несколько, но в нашем случае будет удобно, если она будет одна. Следуя нашему мануалу:
debian-kvm-lvm:~# vgcreate vms /dev/md2
или объединим 2 raid стораджа в 1 группу томов:
debian-kvm-lvm:~# vgcreate vms /dev/md2 /dev/md3
или создадим пару разных групп (например, у нас 3 харда, 2 в raid1, а /dev/sdc — отдельный hdd, чтобы было куда складывать тестовые вдс):
debian-kvm-lvm:~# vgcreate vms /dev/md2 /dev/md3 && vgcreate vmstest /dev/sdc1

У меня получилось вот так:
root@debian:~# vgcreate vms /dev/md2
No physical volume label read from /dev/md2
Physical volume "/dev/md2" successfully created
Volume group "vms" successfully created

Теперь начнем создавать сами томы. Для начала создадим том, на котором мы будем хранить нужные хосту файлы (например, iso образы):
debian-kvm-lvm:~# lvcreate --name isos --size 20G vms
Logical volume "isos" created
Теперь создадим пару томов для наших виртуальных машин:
debian-kvm-lvm:~# lvcreate --name vds1 --size 60G vms && lvcreate --name vds2 --size 60G vms
Logical volume "vds1" created
Logical volume "vds2" created

Томы vds1 и vds2 нам форматировать не нужно — их мы укажем как устройства хранения данных для виртуальных машин. А вот том isos нам неплохо было бы отформатировать и смонтировать. Для начала немного подумаем о том, где искать созданные томы. А находятся они в /dev/группа_томов/том.
То есть мы только что создали:
/dev/vms/isos
/dev/vms/vds1
/dev/vms/vds2

Теперь мы знаем страшную тайну)
Заюзаем /dev/vms/isos в хост-системе. Для этого сперва отформатируем его:
root@debian:~# mkfs.ext4 /dev/vms/isos

Теперь её нужно смонтировать. Можно так:
root@debian:~# mkdir /media/isos && mount /dev/vms/isos /media/isos
Я же делаю обычно так:
root@debian:~# mkdir /home/isos && mount /dev/vms/isos /home/isos && adduser isos && chown -R isos:isos /home/isos
Потом я прописываю для пользователя isos sftp chroot и даю этот аккаунт тем, кому нужно поставить виртуалку с какого-либо странного isoшника =) Ну там винду, например. Чтобы они сами залили этот исошник и я не парился.

Не забываем в /etc/fstab дописать строку вида:
/dev/vms/isos /media/isos ext4 errors=remount-ro 0 1
Или в /etc/rc.local
mount /dev/vms/isos /home/isos

Теперь представим ситуацию, что у нас в сервере появилось 2 новых диска. И мы захотели выделить каждой виртуальной машине побольше места. No problems - сейчас мы заюзаем ещё 2 диска для тех же виртуалок (тем самым, увеличив скорость работы каждой отдельно взятой виртуалки, если сами виртуалки используются с умом). А что? Зачем нам LVM то тогда.
Пока я чихнул - вы уже создали устройство /dev/md4, являющееся raid1 из разделов с двух новых дисков. Неотформатированное, само собой.

Поясним системе, что это устройство - тоже для LVM:
debian-kvm-lvm:~# pvcreate /dev/md4
Скормим новое устройство нашей группе логических томов, тем самым, увеличим размер группы томов (группа томов, напоминаю, называется vms):
debian-kvm-lvm:~# vgextend vms /dev/md4
Ну и увеличим размеры самих томов:
lvextend -L +20G /dev/vms/vds1 && lvextend -L +20G /dev/vms/vds2
Можно и уменьшать, кстати, но сами понимаете, что это небезопасно.

Учтите, что размеры разделов в самих виртуалках от изменения размера LVM-тома магическим образом не изменится. Изменять размеры разделов в самих виртуальных машинах придется средствами ОС самой виртуалки. Чуть позже я напишу статью о том, как это сделать с ext3.

Пожалуй, всё. Переходим к настройке сети для kvm.

06.03.2011 byinkvizitor68sl|Без рубрики
Метки: ,

Комментарии (9):

  1. wonderfulll :

    Если не сложно отпишите в кратце как увеличить размер диска в виртуалке, после увеличения LVM-тома.

    Device Boot Start End Blocks Id System
    /dev/sda1 1 18562 149095392+ 83 Linux
    /dev/sda2 18562 19582 8190976 5 Extended
    /dev/sda5 18562 19582 8189952 82 Linux swap / Solaris

    Если не разбивать диск на патриции, то самое простое наверно, простое удалить swap и сделать resize sda1, а потом создать swap заново.

    При разбивке диска на разделы, всё становись сложнее.

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

    Интересует ваш опыт, что легче/лучше.

  2. swap = sda0
    / = sda1

    И потом тихо мирно ресайзим sda1, когда понадобится.

  3. wonderfulll :

    Ясно, впринципе делал также, над только swap вперёд передвинуть для удобства.

    Спасибо!

  4. BLiN :

    Ув. автор, если вы еще здесь, очень обеспокоила ваша фраза — «Я настоятельно советую вам использовать RAID1. Или другие RAIDы со 100% избыточностью (то есть полным дублированием данных). Хранящиеся кеши нам мало помогут, если один из хардов вдруг шмякнется.»
    Делаю свой первый сервер на хетзнере для KVM и хочется с первого раза сделать так чтоб больше не трогать. Что есть какая то реальная проблема при замене одного испорченного диска в масиве RAID 5 при использовании на нем LVM и виртуальных машин на KVM? Я думал массив перестроится заново да и все? Не хотелось бы попасть на эти грабли. Просто у меня в конфигурации 1 SSD диск и 3 SATA в массиве, я бы хотел сделать RAID 10 но в EX всего четыре слота :( а SSD диск мне нужен под кеш.

  5. Приветствую. Если raid отстрелит сразу 2 диска (а это может случиться из-за глюка контроллера, а не самих дисков) — то вероятность потерять raid намного выше.
    а raid5 — вообще сильно медлителен и использовать его не стоит.

  6. Если 2 диска отстрелить в raid1 — то ничего не случится. Если их 3 — то raid останется жив с одним диском и потом пересинкается. Если всего 2 — то массив сразу отвалится, потом его можно будет аккуратно собрать.

  7. BLiN :

    Спасибо большое за разъяснения! Ну на самом деле я понимаю что RAID это не панацея и бэкапы никто не отменял, но во всей моей практике вылетали всегда диски и всегда по одному. А RAID 5 хоть и медленный но быстрее RAID 1, а 10-й я не могу сделать. Спасибо вам большое за подробную инструкцию.

  8. Да не за что.

  9. Stas :

    основная проблема raid5 — долгий и опасный ребилд, во время которого возрастает нагрузка на все оставшиеся диски и есть шанс, что еще один диск накроется и заберет с собой весь массив

Написать комментарий