Расширение диска VM (Linux) на Proxmox VE 8

🕒 4 мин.

В этой статье я опишу, как выполнить расширение диска и файловой системы виртуальной машины Linux на Proxmox VE 8. Разберу 2 кейса: простое расширение файловой системы Ext4, и расширение LVM с разделом XFS.

Описание задачи

Допустим нам не хватает места для хранения файлов в виртуальной машине. Proxmox VE 8 и 9 легко даёт расширить диск виртуальной машины, особенно если в качестве хранилища используется ZFS. Но просто расширить диск виртуальной машины мало, нужно ещё внутри расширить файловую систему. О том как это делается читайте в этой статье.

Расширение Ext4

В первом случае у нас система установлена на 1 раздел и использует файловую систему ext4. Это самый простой случай для расширения дискового пространства.

Предварительно увеличиваем диск в web-интерфейсе Proxmox VE, я увеличил его до 500G. Затем проверяем в виртуальной машине, что диск действительно расширился:

$ lsblk | grep sdb
sdb      8:16   0  500G  0 disk /share

А если диск не расширился, то нужно выполнить:

$ echo 1 > /sys/class/block/sdX/device/rescan
  • Но на старых системах нет интерфейса rescan, в этом случае придётся перезагружать виртуалку.

Затем нужно расширить саму файловую систему. С помощью команды df -h убедимся что она ещё не расширена (пока 393G):

$ df -h /dev/sdb
Файловая система  Размер  Использовано   Дост   Использовано%    Cмонтировано в
/dev/sdb          393G    338G           36G    91%              /share

Расширяем с помощью команды resize2fs, которой требуются root права:

$ sudo resize2fs /dev/sdb
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/sdb is mounted on /share; on-line resizing required
old_desc_blocks = 50, new_desc_blocks = 63
The filesystem on /dev/sdb is now 131072000 (4k) blocks long.

Проверяем:

$ df -h /dev/sdb
Файловая система  Размер  Использовано   Дост   Использовано%   Cмонтировано в
/dev/sdb          492G    338G           130G   73%             /share
  • Как видите, файловая система была успешно расширена.

Расширение LVM c XFS

Это уже более сложный случай. Обычно LVM с XFS устанавливается, по умолчанию, в старых версиях Centos. В моём случае это Centos 8.

Посмотрим на структуру дисков и разделов:

# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0   12G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0    9G  0 part 
  ├─cl-root 253:0    0    8G  0 lvm  /
  └─cl-swap 253:1    0    1G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom

Здесь у нас на разделе sda2 настроен LVM с двумя разделами:

  • cl-root — для корневой файловой системы;
  • cl-swap — для раздела подкачки.

Если размер диска (в нашем примере sda) не изменился, то выполняем:

# echo 1 > /sys/class/block/sdX/device/rescan
  • Или перезагружаем виртуальную машину, если нет интерфейса rescan.

После перезагрузки размер sda увеличился до 100G:

# lsblk 
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0    9G  0 part 
  ├─cl-root 253:0    0    8G  0 lvm  /
  └─cl-swap 253:1    0    1G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom

Но размер раздела sda2 не был увеличен. Поскольку это последний раздел на диске, его можно безопасно расширить вручную с помощью fdisk, просто удалив и создав раздел заново. Это не удалит данные, потому что LVM хранит метаданные, и мы сохраним тот же начальный сектор.

# fdisk /dev/sda
  • Нажимаем p — смотрим таблицу разделов. Запоминаем Start для sda2.
  • Нажимаем d — выбираем 2 (удаляем sda2).
  • Нажимаем n — создаём новый раздел:
    • Partition type: primary
    • Partition number: 2
    • First sector: вводим тот же Start, что был у старого sda2
    • Last sector: Enter (по умолчанию, до конца диска)
    • Нажимаем t — выбираем тип 8e (Linux LVM)
  • Нажимаем w — записываем изменения.

Внимание! Если будет запрос о пересоздании данных раздела, откажись — так как данные мы должны оставить. У меня такой запрос появился, но точный момент я не запомнил, скорее всего при создании раздела (когда нажали n).

Проверим, что получилось:

# partprobe /dev/sda

# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   99G  0 part 
  ├─cl-root 253:0    0    8G  0 lvm  /
  └─cl-swap 253:1    0    1G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom  
  • раздел sda2 увеличили, но lvm разделы всё ещё маленькие.

Расширим lvm:

# pvresize /dev/sda2

# pvs
  PV         VG Fmt  Attr PSize   PFree 
  /dev/sda2  cl lvm2 a--  <99.00g 90.00g
  
# lvextend -l +100%FREE /dev/cl/root

Проверим:

# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
└─sda2        8:2    0   99G  0 part 
  ├─cl-root 253:0    0   98G  0 lvm  /
  └─cl-swap 253:1    0    1G  0 lvm  [SWAP]
sr0          11:0    1 1024M  0 rom
  • Готово! Теперь cl-root = 98G.

В этом примере у меня тип файловой системы xfs. Узнать это можно с помощью команды:

# mount | grep " / "
/dev/mapper/cl-root on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)

Файловая система xfs расширяется с помощью следующей команды:

# xfs_growfs /
meta-data=/dev/mapper/cl-root    isize=512    agcount=4, agsize=524032 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2096128, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096128 to 25689088

Проверяем:

# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             892M     0  892M   0% /dev
tmpfs                909M     0  909M   0% /dev/shm
tmpfs                909M  8.5M  900M   1% /run
tmpfs                909M     0  909M   0% /sys/fs/cgroup
/dev/mapper/cl-root   98G  3.4G   95G   4% /
/dev/sda1            974M  187M  720M  21% /boot
tmpfs                182M     0  182M   0% /run/user/0

Вот и всё! Корневая файловая система xfs на lvm расширилась.


Если интересуетесь платформой виртуализации Proxmox VE, вам могут быть полезны другие статьи:

Если понравилась статья, подпишись на мой канал в VK или Telegram.

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Отказаться
Политика конфиденциальности