Comments 17
Надеюсь на продолжение статьи — как это место убрать из системы.
Делается все в обратном порядке:
lvreduce (Тут главное не забыть сделать resize2fs, чтобы файловая система поняла, что она занимает теперь меньше места).
pvmove (переместить данные с pv, который хотим освободить. Для этого в Volume group должно быть достаточно места для высвобождения требуемого pv)
vgreduce (уменьшаем группу)
pvremove
Даже удобной программы с CLI интерфейсом нет для управления LVM. Пользуйся отдельными командами для этого, как и приводится в статье.
Не понимаю зачем в новых дистрибутивах навязывают LVM, если для него нет удобных программа по управлению.
Поэтому делать так ресайз rootfs очень плохая идея.
Какие могут возникнуть проблемы, если в момент ресайза диск ненагружен?
2 перезагрузки для увеличения размера диска на виртуальном сервере будоражат мое сознание. Azure не может наживую увеличить место виртуального диска?
Одна из задач LVM — как раз, работа с диском без простоя.
Вы связываете себе руки, отдавая в LVM партиции вместо целых устройств.
Мы расширявшемся так (мы работаем с VMWare):
- Увеличение виртуального диска через настройки VM
- blockdev --rereadpt /dev/sda #Даем системе понять новый размер диска. Если blockdev нет, то echo 1 > /sys/bus/scsi/drivers/sd/2\:0\:0\:2/rescan
- pvresize /dev/sda #Даем LVM понять что размер диска изменился
- lvextend -l+100%FREE /dev/mapper/vg_data-lv_data
- resize2fs /dev/mapper/vg_data-lv_data или xfs_growfs /dev/mapper/vg_data-lv_data
В вашем случае, т.к. партишены уже нарезаны, я бы добавлял 2й диск и отдавал его LVMу опять же целиком
- pvcreate /dev/sdb
- vgextend vg_data /dev/sdb
- А далее по первой инструкции
Как результат: ни каких перезагрузок, ни каких головняков с переразметкой диска.
Судя по адресу устройства в rescan, вы меняете раздел для дополнительного диска.
blockdev работает не для ФС, а для устройства. Если на разделе есть примотированный раздел, то вы сможете заставить ОС определить новый размер устройства. Но партишены на нем без перезагрузки не переразметите.
У нас на 190 виртуальных машинах это работает:
- sda1 — /boot
- sda2 — vg_system
- vg_system содержит lv_root и lv_swap
- sdb — vg_data с LV согласно необходимости под конкретное приложение
Если требуется расширять место для vg_system, добавляется - sdс — vg_system
И мы получаем возможность расширять размеры любого раздела без перезагрузок и размонтирования.
Расширение root раздела для нас ситуация крайне редкая. Но если она происходит, мы не заставляем бизнес простаивать и не очень хотим это делать в нерабочее время.
Та же тема кстати и с multipass устройствами на физических серверах, просто перед blockdev добавляем multipath -r
Добавляем места на диске для Linux–сервера в облаке Azure Pack Infrastructure, а заодно и разбираемся с LVM