
Как увеличить место на диске Linux, особенно на виртуальной машине. Порядок такой: увеличить диск в гипервизоре, показать системе новый размер, расширить раздел, затем LVM, если он есть, и в конце файловую систему.
Перед началом сделайте снимок виртуальной машины или резервную копию: ошибка в номере раздела может стоить данных.
1. Показать системе новый размер
После увеличения диска в гипервизоре система может не увидеть изменения без перезагрузки. Пересканировать уже подключённый диск:
echo 1 > /sys/block/sda/device/rescan
Если подключили новый диск, пересканируйте контроллеры. Список контроллеров и сканирование каждого:
ls /sys/class/scsi_host
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
Или всё сразу одной строкой:
for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; ls /dev/sd* ; done
Проверить размеры дисков и разделов:
lsblk
2. Расширить раздел
Проще всего утилитой growpart: она расширяет раздел до конца диска. Указывается диск и номер раздела через пробел:
sudo yum -y install cloud-utils-growpart # в Debian и Ubuntu: apt install cloud-guest-utils
growpart /dev/sda 2
То же можно сделать в parted. Запустите его и выведите таблицу разделов:
parted
p

Расширьте раздел командой resizepart с номером раздела. Здесь расширяется корневой раздел номер 2:
resizepart 2

Выйдите из parted командой quit.
3. Если используется LVM
Посмотрите группы и логические тома:
vgdisplay
lvdisplay
Расширьте физический том до нового размера раздела, затем логический том на всё свободное место. Ключ -r сразу увеличивает и файловую систему, отдельный шаг 4 тогда не нужен:
pvresize /dev/sda2
pvdisplay
lvextend -r -l +100%FREE /dev/mapper/vgroup1-root
Вместо /dev/sda2 укажите раздел или диск, который является физическим томом, вместо vgroup1-root — свой логический том. В CentOS 7 с разметкой по умолчанию это выглядит так:
lvextend -r centos/root /dev/vda2
4. Увеличить файловую систему
Если не использовали lvextend -r, расширьте файловую систему вручную. Для ext4 — resize2fs с указанием устройства, для XFS — xfs_growfs с указанием точки монтирования:
resize2fs /dev/mapper/cl-root # LVM, ext4
resize2fs /dev/sda2 # обычный раздел, ext4
xfs_growfs / # XFS
Проверить результат: df -Th.
Добавить новый диск в LVM
Пример: новый диск /dev/sdb становится отдельным томом под резервные копии с точкой монтирования /backup.
fdisk -l # найти новый диск
fdisk /dev/sdb # создать раздел: n, p, 1, Enter, Enter, w
vgcreate vl_backup /dev/sdb1 # группа томов
lvcreate --name vl_backup -l +100%FREE vl_backup # логический том на всё место
mkfs.xfs /dev/vl_backup/vl_backup # файловая система XFS
mkdir /backup # точка монтирования
echo "/dev/vl_backup/vl_backup /backup xfs rw,noatime,attr2,inode64,noquota 0 0" >> /etc/fstab
mount -a # смонтировать всё из fstab
df -Th # проверить
Увеличить существующий том LVM после увеличения диска
echo 1 > /sys/block/sdb/device/rescan
pvresize /dev/sdb
lvdisplay # путь к логическому тому
lvextend -r -l +100%FREE /dev/vg_db/vl_db