Как увеличить размер диска LVM в ОС Linux на примере CentOS
Бывают различные ситуации, когда необходимо увеличить размер диска с операционной системой или данными. В моем случае – необходимо расширить дисковое пространство виртуальной машины Azure.
# fdisk -l Диск /dev/sda: 21.5 ГБ, 21474836480 байт ... Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 653 4729856 8e Linux LVM /dev/sda3 653 1305 5239532+ 8e Linux LVM
Но место в системе не увеличилось, как и должно быть
# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/mapper/vg_projects-lv_root 7,5G 2,5G 4,7G 35% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 49M 412M 11% /boot
Кстати, отсюда сразу берем имя группы томов vg_projects и имя тома lv_root, и запоминаем эти имена (у вас они будут другие).
Т.к. у нас теперь имеется неразмеченная область, то создадим новый раздел sda4 с типом раздела Linux LVM (код типа 8e) на этой области. Для этого начинаем работу с устройством sda:
# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').
Справка: команды оболочки fdisk
a переключение флага загрузки
b редактирование метки диска bsd
c переключение флага dos-совместимости
d удаление раздела
l список известных типов файловых систем
m вывод этого меню
n добавление нового раздела
o создание новой пустой таблицы разделов DOS
p вывод таблицы разделов
q выход без сохранения изменений
s создание новой чистой метки диска Sun
t изменение id системы раздела
u изменение единиц измерения экрана/содержимого
v проверка таблицы разделов
w запись таблицы разделов на диск и выход
x дополнительная функциональность (только для экспертов)
Далее используем следующие команды: n — создаём новый раздел;
p — обозначаем его как primary;
так как у нас было 3 логических раздела, то на вопрос Partition number (1-4) отвечаем 4;
t — укажем тип раздела;
опять тот же вопрос Partition number (1-4), отвечаем 4;
вводим 8e — это код типа раздела, соответствующий Linux LVM;
убедимся, что всё сделано верно, вводим p — показать таблицу разделов:
Команда (m для справки): n Действие команды e расширенный p основной раздел (1-4) p Выбранный раздел 4 Первый цилиндр (1306-2610, по умолчанию 1306): Используется значение по умолчанию 1306 Last цилиндр, +цилиндры or +size{K,M,G} (1306-2610, по умолчанию 2610): Используется значение по умолчанию 2610 Команда (m для справки): t Номер раздела (1-4): 4 Шестнадцатеричный код (введите L для получения списка кодов): 8e Системный тип раздела 4 изменен на 8e (Linux LVM) Команда (m для справки): p ... ... ... Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 653 4729856 8e Linux LVM /dev/sda3 653 1305 5239532+ 8e Linux LVM /dev/sda4 1306 2610 10482412+ 8e Linux LVM
Отлично. Раздел sda4 создан. Вводим w для сохранения изменения на диске.
Теперь ОБЯЗАТЕЛЬНО перезагружаем виртуальную машину!!!
Надеюсь у вас всё удачно перезагрузилось. Теперь необходимо создать физический том sda4:
# pvcreate /dev/sda4 Physical volume "/dev/sda4" successfully created
Далее расширяем группу томов, на новое пространство. Используем наше имя группы томов vg_projects, которое мы подсмотрели ранее, командой df:
# vgextend /dev/vg_projects /dev/sda4 Volume group "vg_projects" successfully extended
Теперь расширим логический том. Вспоминаем, что говорил нам df.
# lvextend -l+100%FREE /dev/vg_projects/lv_root Extending logical volume lv_root to 17,52 GiB Logical volume lv_root successfully resized
Еще пару волшебных действий для активации
# vgscan Reading all physical volumes. This may take a while... Found volume group "vg_projects" using metadata type lvm2 # vgchange -ay 2 logical volume(s) in volume group "vg_projects" now active
И последнее, что мы делаем – расширяем файловую систему:
# resize2fs /dev/vg_projects/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vg_projects/lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 2 Performing an on-line resize of /dev/vg_projects/lv_root to 4593664 (4k) blocks. The filesystem on /dev/vg_projects/lv_root is now 4593664 blocks long.
Для CentOS 7 с файловой системой xfs используйте xfs_growfs вместо resize2fs. Данный процесс может занять некоторе время. После завершения операции проверим чего мы натворили:
# df -h Файловая система Разм Исп Дост Исп% смонтирована на /dev/mapper/vg_projects-lv_root 18G 2,5G 14G 15% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 485M 49M 412M 11% /boot
Готово! Увеличение на 5см размера диска LVM в ОС Linux CentOS выполнено.
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 2621439999 1309670400 8e Linux LVM
/dev/sda3 2621440000 4294967294 836763647+ 83 Linux
/dev/sda4 4294967295 7245660159 1475346432+ 83 Linux
а что делать в такой ситуации (MBR+CentOS)
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 5,2T 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 1,2T 0 part
│ ├─centos_mail-root 253:0 0 90G 0 lvm /
│ ├─centos_mail-swap 253:1 0 3,9G 0 lvm [SWAP]
│ └─centos_mail-data 253:2 0 2,9T 0 lvm /data
├─sda3 8:3 0 798G 0 part
│ └─centos_mail-data 253:2 0 2,9T 0 lvm /data
└─sda4 8:4 0 1,4T 0 part
└─centos_mail-data 253:2 0 2,9T 0 lvm /data
sr0 11:0 1 1024M 0 rom
Операции с LVM аналогичны.
Вы дважды пишите о том что надо перезагружать машину, вы в своем уме вообще? Как можно писать что “алгоритм един”, а если у вас прод в банковской системы и вы его два раза будете ребтать что бы диск расширить?
Прод банковской системы на единственном сервере? Смешно.
Насчет перезагрузки после создания раздела диска, перезагружаться необязательно.
Можно просто перечитать заново разделы заново:
partx -a /dev/sdX
где sdX ваш диск
Спасибо за отличное дополнение, обязательно внесу в статью!