Показаны сообщения с ярлыком LVM. Показать все сообщения
Показаны сообщения с ярлыком LVM. Показать все сообщения

среда, 22 августа 2012 г.

selectel: увеличиваем диск

Для паркинга уже была инструкция, теперь для selectel, уже вкратце.

Имеем: отдельный диск под /var/www, расположенный на диске /dev/xvdb, целиком отданным под lvm, с именем vg--www-www (группа vg-www, имя www), путь /dev/vg-www/www

Вариант с выключением для изменения размера -- вменяемых описаний, как это делать без перезагрузки, пока не найдено. Есть дока, но по ней не получилось.

Размер в панели уже увеличен.

Для начала, надо будет отмонтировать раздел. (umount)

Смотрим где наш том
pvdisplay

Растянем на весь новый диск.
pvresize /dev/xvdb

pvdisplay
Alloc PE / Size 8191 / 32.00 GiB
Free PE / Size 8192 / 32.00 GiB
Было 32, стало 64. Нормально.

Теперь надо увеличить наш том
# lvextend -l +100%FREE /dev/vg-www/www
Extending logical volume www to 64.00 GiB
Logical volume www successfully resized

И файловую систему.
# resize2fs /dev/vg-www/www
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/vg-www/www' first.

# e2fsck -f /dev/vg-www/www
...

# resize2fs /dev/vg-www/www
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg-www/www to 16776192 (4k) blocks.

С первого запуска не прошло - надо сначала проверить раздел.
Всё, можно монтировать и работать.

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

вторник, 5 июня 2012 г.

LVM: основные операции

небольшое отступление: после zfs - lvm кажется дико кривым и неудобным, поэтому и возникла необходимость в памятке об основных операциях.

Плюс, поскольку оно не умеет и уровни рейда кроме jbod (объединение пачки дисков в единое пространство), необходимо сначала создать нужные рейды средствами системы/контроллера, и работать уже с этими дисками.

шаг 0: в дебиане надо поставить пакет lvm2 (apt-get install lvm2), а то ничего не получится.

На 2 уровне из реальных дисков (PV, physical volume) собираем "диски" VG (volume group), с которыми уже работает lvm. Можно собрать 1 диск из нескольких реальных, но это опасно: отказ любого из реальных дисков приведет к недоступности всей группы, поэтому лучше собрать рейд нужного уровня, создать на нём pv, и чисто из него сделать vg.

"Загрузка с LVM возможна, но не рекомендуется. Так что у Вас есть отдельный раздел для этого." (линк)

Также есть заблуждение, что расширить том lvm легко, но это не совсем так: если у нас есть куда расширять, делается lvextend, для ext2 расширяемый раздел перемонтируется в режим чтения и потом (xfs_grow|resize2fs).
Другое дело, если мы в облаке (selectel, parking...) и увеличили жесткий диск. Тут нужен будет бубен, потому что скорее всего придется поплясать. Пример запущенного случая: 3 раздела (boot, своп, и extended, на котором еще 1 раздел уже с lvm). Описание ниже.

Устройство по слоям
> pv > vg > lv
PV, Physical volume, физический том. Обычно это раздел на диске или весь диск. В том числе, устройства программного и аппаратного RAID (которые уже могут включать в себя несколько физических дисков). Физические тома входят в состав группы томов.
VG, Volume group, группа томов. Это самый верхний уровень абстрактной модели, используемой системой LVM. С одной стороны группа томов состоит из физических томов, с другой -- из логических и представляет собой единую административную единицу.
LV, Logical volume, логический том. Раздел группы томов, эквивалентен разделу диска в не-LVM системе. Представляет собой блочное устройство и, как следствие, может содержать файловую систему.
PE, Physical extent, физический экстент. Каждый физический том делится на порции данных, называющиеся физическими экстентами. Их размеры те же, что и у логических экстентов.
LE, Logical extent, логический экстент. Каждый логический том делится на порции данных, называющиеся логическими экстентами. Размер логических экстентов не меняется в пределах группы томов.
http://xgu.ru/wiki/LVM

Создание раздела
Последовательность pvcreate /dev/sda -> vgcreate vg0 /dev/sda -> lvcreate -l +10%FREE -n lv-name

Сначала надо разметить раздел или весь диск как lvm. Лучше отдать под лвм весь диск, но это накладывает некоторые ограничения, в частности не получится поставить потом в зеркало диск такого же размера "на бумаге", но меньший по секторам, зато обслуживать такой диск куда проще. Если же создать хоть 1 раздел и уже его добавлять, то не будут зеркалироваться такие вещи как загрузочные сектора.
pvcreate /dev/sda

Потом из этих pv собираем "диски" VG (volume group), с которыми уже работает lvm. Можно собрать 1 диск из нескольких реальных, но это опасно: отказ любого из реальных дисков приведет к недоступности всей группы, поэтому лучше собрать рейд нужного уровня, создать на нём pv, и чисто из него сделать vg.
Получили vg-диск, который уже можно нарезать на разделы, это уровень lv (logical volumes). так что lvcreate в помощь.
Можно изменять размеры в байтах (-L +10G), в блоках по 4М (-l +100), в процентах (-l +10%FREE)

Изменение размеров
Если просто использовать свободное место из резерва, то это делается в 2 команды - lvresize и resize2fs.
Если же изменился жесткий диск (облако или dd на новый бОльшего размера) и надо расширять vg - придётся повозиться.
Тут 2 пути:
1) увеличиваем размер базового тома (возможно не всегда, например если следом уже есть раздел)
2) создаём ещё том и подключаем его в текущую структуру

1 сводит на нет и без того скудные возможности lvm, поэтому правильнее использовать 2.

Итак, 3 раздела (boot, своп, и extended, на котором еще 1 раздел уже с lvm). Чтобы изменить размер в таком случае, действия:
1) расширить физический диск. К слову, на паркинге изменение с 20 до 40 гиг - даунтайм 1.5 часа.
2) растянуть extended, в помощь parted, cfdisk, sfdisk. Есть ещё fdisk, но в дебиане он неюзабелен абсолютно, в других операционках работает как надо. Впрочем, в дебиане вообще с разметкой диска очень грустно, но это система для гуру и извращенцев. parted тоже отличается особым "умом" в любом линуксе (хинт: есть опция print free, цифры оттуда используем для mkpart). А cfdisk хорош, но любит ругаться на выравнивание разделов, причём считает любое отклонение критической ошибкой.
3) Создать на пустом месте в extended новый раздел
4) сделать на этот раздел pvcreate
5) добавить его в группу vgextend
6) увеличиваем lv: lvextend -l +100%FREE /dev/vg0/root
7) А теперь увеличим фс.. для ext* в помощь resize2fs(e2fsprogs), только для ext2 сначала перемонтировать систему в RO, иначе можно всё сломать.. если вообще даст что-то сделать. Или вообще отмонтировать. Про ext2 подробнее

Всего 7 шагов, на которые без опыта спокойно уходит неделя и есть реальные шансы всё убить.

Отдельно стоит уменьшение, но это нужно редко..

четверг, 10 февраля 2011 г.

LVM+raid

Хотя lvm -- это менеджер томов, может встать вопрос, умеет ли он такие вещи как mirroring - зеркалирование. Практика показывает, что не умеет, поэтому будет связка mdadm+LVM+ext4 например. В этом плане с серьезными вещами типа ZFS даже сравнивать глупо.
Была более серьезная замена EVMS, почти мертвая на данный момент.

Достаточно информации тут:
http://xgu.ru/wiki/LVM
еще полезно
http://unthought.net/Software-RAID.HOWTO/Software-RAID.HOWTO-11.html
немного про multipath-tools
http://www.novell.com/coolsolutions/tip/19568.html
обслуживание
http://www.opennet.ru/base/sys/linux_lvm2.txt.html

четверг, 11 ноября 2010 г.

Создаем новый LVM

создание раздела
fdisk /dev/hda
u
p
n


w
<перечитать диски>

~]# pvcreate /dev/hda4
Physical volume "/dev/hda4" successfully created

~]# pvdisplay
"/dev/hda4" is a new physical volume of "45.00 GB"
--- NEW Physical volume ---
PV Name /dev/hda4
VG Name
PV Size 45.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID sY9uM2-qwt0-mR2w-0rMw-pRuh-bp4s-1fG1Ro

~]# vgcreate vg0 /dev/hda4
Volume group "vg0" successfully created

~]# lvcreate -v -L +20G vg0
Setting logging type to disk
Finding volume group "vg0"
Archiving volume group "vg0" metadata (seqno 1).
Creating logical volume lvol0
Creating volume group backup "/etc/lvm/backup/vg0" (seqno 2).
Found volume group "vg0"
visited lvol0
visited lvol0
Creating vg0-lvol0
Loading vg0-lvol0 table
Resuming vg0-lvol0 (253:0)
Clearing start of logical volume "lvol0"
Creating volume group backup "/etc/lvm/backup/vg0" (seqno 2).
Logical volume "lvol0" created

или mkfs
[root@centos ~]# mkfs.ext3 /dev/mapper/vg0-lvol0
mke2fs 1.39 (29-May-2006)

]# mount /dev/mapper/vg0-lvol0 /var1

LVM

Пришлось переходить полностью на линукс, надо виртуализировать все хозяйство, а на файлосервер денег зажали и будет 1 нода с пачкой дисков.
Изучаю lvm.
Недостатки: это решение явно не дотягивает до ZFS, да и рейдом не назвать как таковым. Потому что если во фре мы сделаем gmirror create gm0 ad4 ad6, то на итоговое зеркало можно спокойно ставить систему, не заморачиваясь с грубом (на lvm надо потом каждому диску ткнуть, что он загрузочный). Плюс нет такого удобного управления, как в ZFS (zpool status и видно, кто выпал, кто жив).. Да и создание зеркала там тоже элементарное.. А сжатие, а дедупликация, ээххх..