Недавно понадобилось увеличить размер тома LVM на виртуальном сервере с Debian 7 (VMWare), поэтому решил написать небольшую инструкцию.
Он должен определиться в системе как /dev/sdX ( X - буква диска, может быть разной), например sdb. Посмотреть можно командой
fdisk -l
Так как я добавил новый HDD через клиент VMWare vSphere-client, и сервер не перезагружал, то диск у меня в системе никак не определился.
Даем контроллеру команду «перечитать» список устройств, подключенных к тому или иному порту. Если там найдутся новые устройства, ядро их увидит:
echo "- - -" >/sys/class/scsi_host/hostX/scan
X — номер шины, совпадает с номером SATA порта на материнской плате. Если не знаете, можете смело делать для всех хостов по очереди (host0, host1, host2) ничего страшного, кроме небольшого лага в дисковых операциях, незаметного для софта и файловой системы, не произойдет.
Обратите внимание, host'ы нумеруются с 0, а не с 1. (в dmesg ata устройства нумеруются с 1).
после этого еще раз выполняем
fdisk -l
и видим новый HDD.
В случае, если вы хотите присоединить в LVM-пространству не весь диск целиком, и только его раздел, то делаем следующее:
Выполняем команду fdisk /dev/sdX, затем жмем n (создать новый раздел), по умолчанию будет предложено создать раздел на все доступное пространство винта, что нам и нужно. Жмем w - записать изменения и выйти. Таким образом у нас будет создан раздел /dev/sdX1.
Если же весь диск целиком, то вышеуказанные манипуляции делать необязательно.
О теории и технологии LVM я уже писал в статье Перенос LVM - раздела на новый жесткий диск, поэтому повторяться не буду.
Перед использованием диска или раздела (в нашем случае только что созданный /dev/sdX2) в качестве физического тома для LVM его нужно инициализировать:
pvcreate /dev/sdX2
Либо можно сразу инициализировать целый диск команда:
pvcreate /dev/sdb
Эта команда создает в начале указанного диска или раздела описание физического тома, включающее дескриптор группы томов.
На сервере уже создана группа томов LVM, смотрим её название командой:
vgdisplay
Примерный вывод будет такой:
--- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 20 VG Access read/write VG Status resizable
Нам нужно имя - vg0
vgextend vg0 /dev/sdX2
Смотрим какие логические тома (LVM) у нас есть:
lvdisplay
Сокращенный вывод:
--- Logical volume --- LV Path /dev/debian7/root LV Name root VG Name debian7 LV UUID jhHPG1-36ZH-azBd-a3Nr-WTDu-W1Cu-MuSF04 LV Write Access read/write LV Creation host, time debian7, 2013-07-11 20:31:51 +0600 LV Status available # open 1 LV Size 10.04 GiB --- Logical volume --- LV Path /dev/debian7/home LV Name home VG Name debian7 LV UUID Ud0k3v-EEaB-i2W5-dJWx-Nzr6-16py-vACXO5 LV Write Access read/write LV Creation host, time debian7, 2013-07-11 20:31:52 +0600 LV Status available # open 1 LV Size 350.00 GiB
Проверяем раздел home на ошибки (не обязательный шаг, проверить получится только отмонтированный раздел):
e2fsck -f /dev/debian7/home
Увеличиваем размер логического тома
lvextend -l +100%FREE /dev/debian7/home
Для файловых систем Ext*:
resize2fs /dev/debian7/home
Для файловых систем XFS (в основном используются в CentOS):
xfs_growfs /dev/debian7/home
UPDATE
В новых версиях LVM для команды xfs_growfs необходимо указать точку монтирования, а не преобразователь LVM.
Вот и все, на обоих типах ФС это можно сделать без перезагрузки.