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

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

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

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

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

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

В Linux можно повторно сканировать жесткие диски без перезагрузки гостевой виртуальной машины. Прочтите статью об этом, если вы не хотите, перезагружать VM после добавления нового жесткого диска или увеличения текущего размера диска: Обновление дисков виртуальных машин на Linux без перезагрузки в инфраструктуре VMware

Шаг 1. Проверка необходимости добавления нового диска, либо добавления нового

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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

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

Шаг 2. “Физическое” добавление диска на виртуальную машину

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

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

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

Шаг 3. Создание разделов на нераспределенном пространстве

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

Проверяем:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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 основных разделов на диске! Если уже достигнут предел, необходимо создать расширенный раздел.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 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').

Команда (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, и подтверждаем.

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

Команда (m для справки):

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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

Расширяем Logical Volume

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

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

Узнаем Volume Group

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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

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

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

1
2
3
4
# 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)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 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
1
2
3
# 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/VolGroup00/LogVol00

1
2
3
4
5
6
# 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.

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

1
2
3
4
5
6
# 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 появится ошибка:

1
2
3
4
# 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:

1
2
3
4
5
6
7
8
9
10
11
# 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