Увеличение размера диска VMware(VMDK) в Linux LVM

Увеличение размера диска в виртуальной машине под управлением VMware.

Для увеличения размера диска в виртуальной машине под управлением VMware, необходимо выполнить несколько важных шагов. Во-первых, необходимо увеличить размер диска в vSphere Client. Эта операция увеличит размер жесткого диска на уровне оборудования. Затем необходимо увеличить размер раздела.

Небольшая заметка, если сервер поддерживает “hot swap“, можно легко добавить новый жесткий диск к виртуальной машине. В противном случае, будет означать, что мы не можем увеличить размер LVM без перезагрузки. Если увеличим размер присоединенного диска (как в примере ниже), необходимо перезагрузить сервер или, по крайней мере, перечитать таблицу разделов.

В Linux можно повторно сканировать жесткие диски без перезагрузки гостевой виртуальной машины.

Довольно важный пункт, поскольку диск, который уже был разделен на 4 основных раздела не может быть увеличен. Чтобы проверить это, запустим fdisk -l

# fdisk -l
Диск /dev/sda: 21.5 ГБ, 21474836480 байт
255 heads, 63 sectors/track, 2610 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028975
 
Устр-во Загр     Начало   Конец       Блоки   Id  Система
/dev/sda1   *           1          64      512000   83  Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2              64        2611    20458496   8e  Linux LVM
 
Диск /dev/mapper/vg_specialfeeling-lv_root: 18.8 ГБ, 18798870528 байт
255 heads, 63 sectors/track, 2285 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
Диск /dev/mapper/vg_specialfeeling-lv_swap: 2147 МБ, 2147483648 байт
255 heads, 63 sectors/track, 261 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Насколько видно из вывода команды, то у нас только два раздел, поэтому увеличение диска в данном случае возможно.

Увеличиваем диск виртуальной машины через vSphere клиент

Если «Provisioned Size» недоступно, необходимо выключить виртуальную машину (так как не поддерживается «горячее» добавление дисков), и проверить, если есть какие-то снепшоты, сделанные в этой виртуальной машине. Невозможно изменить размер диска пока доступны снепшоты.

Альтернатива, если уже есть четыре раздела, можно выбрать «Add…» и добавить новое оборудование «Virtual Disk» в виртуальную машину, чтобы увеличить размер диска.

После того как мы изменили размер диска, необходимо включить виртуальную машину еще раз, или перезагрузить, если она работала. Системе необходимо загрузиться с нового диска, для того чтобы он мог обнаружить добавленное (незанятое) дисковое пространство. После загрузки можно проверить, есть ли дополнительное пространство на диске.

Проверяем:
# fdisk -l
Диск /dev/sda: 42.9 ГБ, 42949672960 байт
255 heads, 63 sectors/track, 5221 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028975
 
Устр-во Загр     Начало   Конец       Блоки   Id  Система
/dev/sda1   *           1          64      512000   83  Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2              64        2611    20458496   8e  Linux LVM
 
Диск /dev/mapper/vg_specialfeeling-lv_root: 18.8 ГБ, 18798870528 байт
255 heads, 63 sectors/track, 2285 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
Диск /dev/mapper/vg_specialfeeling-lv_swap: 2147 МБ, 2147483648 байт
255 heads, 63 sectors/track, 261 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Как видим - объем диска изменился, теперь создадим раздел, используя утилиту fdisk для устройства /dev/sda. Пожалуйста, обратите внимание, что система может иметь только 4 основных разделов на диске! Если уже достигнут предел, необходимо создать расширенный раздел.

# fdisk /dev/sda
 
WARNING: DOS-compatible mode is deprecated. Its strongly recommended to
   switch off the mode (command 'c') and change display units to
         sectors (command 'u').
 
Команда (m для справки): n
Действие команды
   e   расширенный
   p   основной раздел (1-4)
p
Номер раздела (1-4): 3
Первый цилиндр (2611-5221, по умолчанию 2611):
Используется значение по умолчанию 2611
Last цилиндр, +цилиндры or +size{K,M,G} (2611-5221, по умолчанию 5221):
Используется значение по умолчанию 5221

Значение цилиндров могут отличатся в системе. FDISK даст значение по умолчанию для первого и последнего цилиндра (как раз будет использоваться добавленное дисковое пространство).

Теперь изменим тип раздела. Вводим номер раздела, берем из предыдущего шага. Когда необходимо будет вводить «Hex code», вводим 8e, и подтверждаем.

Команда (m для справки): t
Номер раздела (1-4): 3
Шестнадцатеричный код (введите L для получения списка кодов): 8e
Системный тип раздела 3 изменен на 8e (Linux LVM)
 
Команда (m для справки):

Возвращаемся в главное меню и нажимаем w для записи раздела на диск. Получим сообщение, что ядро все еще использует старую таблицу раздела, необходимо перезагрузить машину для применения новой таблицы.

После перезагрузки, можно увидеть новый раздел, используя команду fdisk.

# fdisk -l
 
Диск /dev/sda: 42.9 ГБ, 42949672960 байт
255 heads, 63 sectors/track, 5221 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028975
 
Устр-во Загр     Начало   Конец       Блоки   Id  Система
/dev/sda1   *           1          64      512000   83  Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2              64        2611    20458496   8e  Linux LVM
/dev/sda3            2611        5221    20966162+  8e  Linux LVM
 
Диск /dev/mapper/vg_specialfeeling-lv_root: 18.8 ГБ, 18798870528 байт
255 heads, 63 sectors/track, 2285 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
 
Диск /dev/mapper/vg_specialfeeling-lv_swap: 2147 МБ, 2147483648 байт
255 heads, 63 sectors/track, 261 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Теперь создаем физический том как основной для LVM командой pvcreate /dev/sda3

# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created

Узнаем Volume Group

# vgdisplay
  --- Volume group ---
  VG Name   vg_specialfeeling
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19,51 GiB
  PE Size               4,00 MiB
  Total PE              4994
  Alloc PE / Size       4994 / 19,51 GiB
  Free  PE / Size       0 / 0
  VG UUID               NUd3j0-54xM-f9WZ-iVXR-Tm09-YL2C-FpQYHj

И расширяем Volume Group только что добавленным томом, выполнив команду vgextend VolumeGroupName /dev/sda3

# vgextend vg_specialfeeling /dev/sda3
  Volume group "vg_specialfeeling" successfully extended

Используя команду pvscan, можно обнаружить новый том и дисковое пространство (20Гб в нашем случае).

# pvscan
  PV /dev/sda2   VG vg_specialfeeling   lvm2 [19,51 GiB / 0    free]
  PV /dev/sda3   VG vg_specialfeeling   lvm2 [19,99 GiB / 19,99 GiB free]
  Total: 2 [39,50 GiB] / in use: 2 [39,50 GiB] / in no VG: 0 [0   ]

Следующим действием, расширяем Logical Volume командой lvextend /dev/VolGroup00/LogVol00 /dev/sda3. (Для поиска LogVol00 значения используем команду lvdisplay -v)

Using logical volume(s) on command line.
  Finding all volume groups.
--- Logical volume ---
LV Path   /dev/vg_specialfeeling/lv_root
LV Name                lv_root
VG Name                vg_specialfeeling
LV UUID                Z5c3hO-xmeP-EPKb-qMmA-d3Uv-wutX-YS4W30
LV Write Access        read/write
LV Creation host, time special-feeling, 2015-10-01 21:55:58 +0300
LV Status              available
# open                 1
LV Size                17,51 GiB
Current LE             4482
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:0
 
--- Logical volume ---
LV Path                /dev/vg_specialfeeling/lv_swap
LV Name                lv_swap
VG Name                vg_specialfeeling
LV UUID                gYbe2C-kkni-Aumv-wiDC-beq6-qsus-idyCk0
LV Write Access        read/write
LV Creation host, time special-feeling, 2015-10-01 21:56:05 +0300
LV Status              available
# open                 1
LV Size                2,00 GiB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:1
# lvextend /dev/vg_specialfeeling/lv_root /dev/sda3
  Size of logical volume vg_specialfeeling/lv_root changed from 17,51 GiB (4482 extents) to 37,50 GiB (9600 extents).
  Logical volume lv_root successfully resized

Если испольузется убунтоподобная система, то выполняем команду lvextend /dev/mapper/vg-name /dev/sda3

Чтобы использовать новое дисковое пространство, необходимо только изменить размер файловой системы в группе томов.

Запускаем ресайз командой:

# resize2fs /dev/vg_specialfeeling/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_specialfeeling/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vg_specialfeeling/lv_root to 9830400 (4k) blocks.
The filesystem on /dev/vg_specialfeeling/lv_root is now 9830400 blocks long.

Увеличение диска завершено - проверяем!

# df -h
Filesystem   Size  Used Avail Use% Mounted on
/dev/mapper/vg_specialfeeling-lv_root
                       37G  809M   35G   3% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             477M   57M  395M  13% /boot

Если используется файловая система XFS, как правило на CentOS 7 она идет по умолчанию, то при запуске команды resize2fs появится ошибка:

# resize2fs /dev/sda3
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Устройство или ресурс занято while trying to open /dev/sda3
Couldn't find valid filesystem superblock.

Вместо resize2fs используйте команду xfs_growfs:

# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=1799936 blks
   =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=7199744, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=3515, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 7199744 to 9820160