Расширение диска на Linux (LVM, классическая разметка)

Необходимые условия для расширения диска по этой инструкции:

1. Убедиться что разметка диска сделана "классически", с расширенным разделом, пример:

    root@ubuntu:~# fdisk -l | grep /sda
    Disk /dev/sda: 5 GiB, 5368709120 bytes, 10485760 sectors
    /dev/sda1  *       2048   999423  997376  487M 83 Linux
    /dev/sda2       1001470 10483711 9482242  4.5G  5 Extended
    /dev/sda5       1001472 10483711 9482240  4.5G 8e Linux LVM

    Раздел sda2 помечен как Extended, что и соответствует расширенному разделу.

2. Убедиться что используется LVM для системного тома и свап партиции:
    root@ubuntu:~# lvs
      LV     VG        Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      root   ubuntu-vg -wi-ao---- 3.52g
      swap_1 ubuntu-vg -wi-ao---- 1.00g

    root@ubuntu:~# cat /etc/fstab
    /dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
    /dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0


Порядок действий:

Получить локальную консоль (SSH/VIClient)

Получить рут шел:
    sudo bash

Установить пакет sg3-utils:
    apt-get -y install sg3-utils
    yum -y install sg3_utils
    
Сохранить текущий листинг разделов на случай нештатной ситуации:
    fdisk -l > ~/fdisk-pre.txt

Создать снапшот ВМ для отката.

Добавить дополнительный диск необходимого объёма для временной миграции.

Убедиться, что диск виден системой (/dev/sdb):
    root@ubuntu:~# ls -l /dev/sd*
    brw-rw---- 1 root disk 8,  0 Dec 15 01:32 /dev/sda
    brw-rw---- 1 root disk 8,  1 Dec 15 01:32 /dev/sda1
    brw-rw---- 1 root disk 8,  2 Dec 15 01:32 /dev/sda2
    brw-rw---- 1 root disk 8,  5 Dec 15 01:32 /dev/sda5
    brw-rw---- 1 root disk 8, 16 Dec 15 01:43 /dev/sdb

Создать PV на sdb:
    root@ubuntu:~# pvcreate /dev/sdb
      Physical volume "/dev/sdb" successfully created

Расширить VG на sdb:
    root@ubuntu:~# vgextend ubuntu-vg /dev/sdb
      Volume group "ubuntu-vg" successfully extended
 
    Проверка:
    root@ubuntu:~# pvs
      PV         VG        Fmt  Attr PSize PFree
      /dev/sda5  ubuntu-vg lvm2 a--  4.52g    0
      /dev/sdb   ubuntu-vg lvm2 a--  8.00g 8.00g

Выполнить перемещение содержимого sda5 на sdb:
    root@ubuntu:~# pvmove /dev/sda5 /dev/sdb
      /dev/sda5: Moved: 0.0%
      /dev/sda5: Moved: 67.6%
      /dev/sda5: Moved: 100.0%

Удалить sda5 из VG:
    root@ubuntu:~# vgreduce ubuntu-vg /dev/sda5
      Removed "/dev/sda5" from volume group "ubuntu-vg"
 
    Проверка:
    root@ubuntu:~# pvs
      PV         VG        Fmt  Attr PSize PFree
      /dev/sda5            lvm2 ---  4.52g 4.52g
      /dev/sdb   ubuntu-vg lvm2 a--  8.00g 3.48g

Удалить заголовки LVM с sda5:
    root@ubuntu:~# pvremove /dev/sda5
      Labels on physical volume "/dev/sda5" successfully wiped

Запустить fdisk на том /dev/sda (без подразделов!), получить список разделов (p):
    root@ubuntu:~# fdisk /dev/sda
    Command (m for help): p

    Disk /dev/sda: 5 GiB, 5368709120 bytes, 10485760 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x606c6da3

    Device     Boot   Start      End Sectors  Size Id Type
    /dev/sda1  *       2048   999423  997376  487M 83 Linux
    /dev/sda2       1001470 10483711 9482242  4.5G  5 Extended
    /dev/sda5       1001472 10483711 9482240  4.5G 8e Linux LVM

Удалить расширенные разделы (d, номер раздела):
    Command (m for help): d
    Partition number (1,2,5, default 5): 5

    Partition 5 has been deleted.

    Command (m for help): d
    Partition number (1,2, default 2): 2

    Partition 2 has been deleted.

Удалить основной раздел (d):
    Command (m for help): d
    Selected partition 1
    Partition 1 has been deleted.
    
Создать новый основной раздел нужного размера (n, p, ENTER, +1G):
    Command (m for help): n
    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-10485759, default 2048):
    Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): +1G

    Created a new partition 1 of type 'Linux' and of size 1 GiB.

Проверка (p):
    Device     Boot Start     End Sectors Size Id Type
    /dev/sda1        2048 2099199 2097152   1G 83 Linux
    
Создать новый основной раздел на весь оставшийся объём (n, 2, ENTER, ENTER):

Проверка (p):
    Command (m for help): p
    Device     Boot   Start      End Sectors Size Id Type
    /dev/sda1          2048  2099199 2097152   1G 83 Linux
    /dev/sda2       2099200 10485759 8386560   4G 83 Linux
    
Записать таблицу разделов и выйти (w):
    Command (m for help): w
    The partition table has been altered.
    Calling ioctl() to re-read partition table.
    Re-reading the partition table failed.: Device or resource busy

    The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

Выполнить обновление таблицы разделов через partprobe либо выполнить перезагрузку:
    root@ubuntu:~# partprobe

Создать заголовки LVM на sda2:
    root@ubuntu:~# pvcreate /dev/sda2
      Physical volume "/dev/sda2" successfully created

Расширить VG на sda2:
    root@ubuntu:~# vgextend ubuntu-vg /dev/sda2
      Volume group "ubuntu-vg" successfully extended    

Выполнить перемещение содержимого с sdb на sda2:
    root@ubuntu:~# pvmove /dev/sdb /dev/sda2
      /dev/sdb: Moved: 0.0%
      /dev/sdb: Moved: 63.6%
      /dev/sdb: Moved: 100.0%

#######
Если будет сообщение о недостатке экстентов, то на целевом диске недостаточно места под новый раздел:
  Insufficient free space: 1157 extents needed, but only 1023 available
  Unable to allocate mirror extents for pvmove0.
  Failed to convert pvmove LV to mirrored

В этом случае нужно удалить текущий снапшот, добавить необходимое место на основной диск, выполнить обновление SCSI устройств:
    root@ubuntu:~# rescan-scsi-bus.sh -s
    Scanning SCSI subsystem for new devices
    Searching for resized LUNs
    RESIZED: Host: scsi2 Channel: 00 Id: 00 Lun: 00
      Vendor: VMware   Model: Virtual disk     Rev: 1.0
      Type:   Direct-Access                    ANSI SCSI revision: 02
    0 new or changed device(s) found.
    1 remapped or resized device(s) found.
            [2:0:0:0]
    0 device(s) removed.

    Проверка:
    root@ubuntu:~# fdisk -l | grep sda
    Disk /dev/sda: 6 GiB, 6442450944 bytes, 12582912 sectors
    /dev/sda1          2048  2099199 2097152   1G 83 Linux
    /dev/sda2       2099200 10485759 8386560   4G 83 Linux

Пересоздать том в таблице разделов (d, 2, n, p, 2, ENTER, ENTER, w):
    root@ubuntu:~# fdisk /dev/sda
    Command (m for help): p
    Device     Boot   Start      End Sectors Size Id Type
    /dev/sda1          2048  2099199 2097152   1G 83 Linux
    /dev/sda2       2099200 10485759 8386560   4G 83 Linux

    Command (m for help): d
    Partition number (1,2, default 2): 2

    Partition 2 has been deleted.

    Command (m for help): n
    Partition type
       p   primary (1 primary, 0 extended, 3 free)
       e   extended (container for logical partitions)
    Select (default p): p
    Partition number (2-4, default 2): 2
    First sector (2099200-12582911, default 2099200):
    Last sector, +sectors or +size{K,M,G,T,P} (2099200-12582911, default 12582911):

    Created a new partition 2 of type 'Linux' and of size 5 GiB.

    Command (m for help): w

Выполнить обновление таблицы разделов через partprobe либо выполнить перезагрузку:
    root@ubuntu:~# partprobe

Расширить PV:     
    root@ubuntu:~# pvresize /dev/sda2
      Physical volume "/dev/sda2" changed
      1 physical volume(s) resized / 0 physical volume(s) not resized

    Проверка:
    root@ubuntu:~# pvs
      PV         VG        Fmt  Attr PSize PFree
      /dev/sda2  ubuntu-vg lvm2 a--  5.00g 5.00g
      /dev/sdb   ubuntu-vg lvm2 a--  8.00g 3.48g

Повторить миграцию экстента:
    root@ubuntu:~# pvmove /dev/sdb /dev/sda2
      /dev/sdb: Moved: 0.0%
      /dev/sdb: Moved: 63.6%
      /dev/sdb: Moved: 100.0%
####
        
Удалить sdb из VG:        
    root@ubuntu:~# vgreduce ubuntu-vg /dev/sdb
      Removed "/dev/sdb" from volume group "ubuntu-vg"

    Проверка:
    root@ubuntu:~# pvs
      PV         VG        Fmt  Attr PSize PFree
      /dev/sda2  ubuntu-vg lvm2 a--  5.00g 488.00m
      /dev/sdb             lvm2 ---  8.00g   8.00g

Удалить заголовки LVM с sdb:
    root@ubuntu:~# pvremove /dev/sdb
      Labels on physical volume "/dev/sdb" successfully wiped

При возможности - провести перезагрузку, чтобы убедиться в работоспособности системы.

Удалить снапшот, удалить дополнительный том.

  • 66 Користувачі, які знайшли це корисним
Ця відповідь Вам допомогла?

Схожі статті

Развертывание виртуальной машины из шаблона и ее запуск.

Что бы развернуть виртуальную машину из шаблона, требуется зайти на терминальный сервер под...

Вход на терминальный сервер

Запустите RDP клиент (Пуск\Стандартные\Подключение к удаленному рабочему столу), введите...

Настройка параметров виртуальной машины

Запустим vSphere Client и подсоединимся к ESXi-серверу как это сделать написанно здесь. На...

Расширение жесткого диска на ОС Windows

Зачастую свободное место на сервере заканчивается и возникает необходимость расширения его...

Powered by WHMCompleteSolution