Изменение размера логического тома в Linux не является слишком сложной задачей и может быть выполнено достаточно прямолинейным способом. Вот обычные шаги:
- Создать новый раздел на жёстком диске.
- Добавить созданный раздел как физический том.
- Добавить новый физический том в группу томов.
- Выделить место из группы томов в логический том.
- Изменить размер файловой системы.
Однако в данном сценарии ваша корневая файловая система (как раздел LVM) смонтирована внутри расширенного раздела, а не основного. У вас есть только один основной раздел, который смонтирован на /boot, а всё остальное пространство является частью этого расширенного раздела.
Звучит сложно? Позвольте показать, как изменить размер раздела LVM внутри расширенного раздела.
Изменение размера раздела LVM внутри расширенного раздела
В этом руководстве я использую Linux, установленный на виртуальной машине.
Пожалуйста, помните: следует быть очень осторожным при работе с разделами диска.
Шаг 1: Выключите ВМ и увеличьте размер диска
Сначала выключите виртуальную машину и увеличьте размер её виртуального диска. Здесь я увеличил размер диска /dev/sda на 20 ГБ, доведя его примерно до 40 ГБ. Затем запустите ВМ и откройте консоль.
Взгляните на разделы нашего диска.
root@Ubuntu14:~# fdisk -l
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
Disk identifier: 0x000a975f
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 41940991 20719617 5 Extended
/dev/sda5 501760 41940991 20719616 8e Linux LVM
Если проанализировать дисковое пространство с помощью команды df, вот что она показывает:
root@Ubuntu14:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 989M 4.0K 989M 1% /dev
tmpfs tmpfs 201M 716K 200M 1% /run
/dev/dm-0 ext4 19G 1.5G 16G 9% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 1001M 0 1001M 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
/dev/sda1 ext2 236M 40M 184M 18% /boot
Цель — увеличить размер раздела /dev/dm-0, который смонтирован на /dev/sda5.
Покажу также текущее состояние физических томов, групп томов и логических томов:
root@Ubuntu14:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
root ubuntu14-vg -wi-ao--- 18.74g
swap_1 ubuntu14-vg -wi-ao--- 1020.00m
root@Ubuntu14:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu14-vg lvm2 a-- 19.76g 20.00m
root@Ubuntu14:~# vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu14-vg 1 2 0 wz--n- 19.76g 20.00m
Всем им выделено около 20 ГБ дискового пространства.
Шаг 2: Начните процесс изменения размера LVM
Вот шаги для изменения размера раздела LVM:
Откройте утилиту fdisk и посмотрите разделы:
root@Ubuntu14:~# fdisk /dev/sda
Command (m for help): p
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
Disk identifier: 0x000a975f
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 501758 41940991 20719617 5 Extended
/dev/sda5 501760 41940991 20719616 8e Linux LVM
Удалите расширенный раздел (/dev/sda2) с помощью команды d, что автоматически удалит находящийся под ним раздел LVM /dev/sda5.
Command (m for help): d
Partition number (1-5): 2
Снова создайте новый раздел как расширенный с помощью команды n, используя значения начального и конечного цилиндров по умолчанию.
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (1-4, default 2):
Using default value 2
First sector (499712-83886079, default 499712):
Using default value 499712
Last sector, +sectors or +size{K,M,G} (499712-83886079, default 83886079):
Using default value 83886079
Command (m for help): p
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
Disk identifier: 0x000a975f
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 499712 83886079 41693184 5 Extended
Создайте логический раздел (/dev/sda5), используя значения начального и конечного цилиндров по умолчанию.
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (501760-83886079, default 501760):
Using default value 501760
Last sector, +sectors or +size{K,M,G} (501760-83886079, default 83886079):
Using default value 83886079
Переключитесь в экспертный режим, нажав x.
Command (m for help): x
Выполните команду экспертного режима b, чтобы настроить начало раздела (это меняет размер раздела, а не его конечную точку). Введите значение начала, которое было до удаления разделов. Здесь это 501760.
Expert command (m for help): b
Partition number (1-5): 5
New beginning of data (499713-83886079, default 501760): 501760
Затем выполните r, чтобы вернуться в главное меню.
Expert command (m for help): r
Проверьте номера разделов, чтобы убедиться.
Command (m for help): p
Disk /dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 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
Disk identifier: 0x000a975f
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 499711 248832 83 Linux
/dev/sda2 499712 83886079 41693184 5 Extended
/dev/sda5 501760 83886079 41692160 83 Linux
Теперь измените тип раздела на LVM, нажав команду t и выбрав тип 8e.
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 8e
Changed system type of partition 5 to 8e (Linux LVM)
Нажмите w, чтобы записать все изменения на диск.
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 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)
Syncing disks.
Шаг 3: Внесите изменения в физический и логический тома вручную
Выполните команду partprobe, чтобы сообщить ОС об изменениях таблицы разделов:
root@Ubuntu14:~# partprobe /dev/sda
Выполните команду lsblk, чтобы увидеть, что /dev/sda5 теперь имеет размер около 40 ГБ (в моём случае).
root@Ubuntu14:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 39.8G 0 part
├─ubuntu14--vg-root (dm-0) 252:0 0 18.8G 0 lvm /
└─ubuntu14--vg-swap_1 (dm-1) 252:1 0 1020M 0 lvm [SWAP]
sr0 11:0 1 1024M 0 rom
Выполните команду df и вы заметите, что /dev/dm-0 всё ещё показывает старый размер:
root@Ubuntu14:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 989M 4.0K 989M 1% /dev
tmpfs tmpfs 201M 716K 200M 1% /run
/dev/dm-0 ext4 19G 1.5G 16G 9% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 1001M 0 1001M 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
/dev/sda1 ext2 236M 40M 184M 18% /boot
То же самое и с физическими томами, группами томов и логическими томами:
root@Ubuntu14:~# lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
root ubuntu14-vg -wi-ao--- 18.74g
swap_1 ubuntu14-vg -wi-ao--- 1020.00m
root@Ubuntu14:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu14-vg lvm2 a-- 19.76g 20.00m
root@Ubuntu14:~# vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu14-vg 1 2 0 wz--n- 19.76g 20.00m
Здесь потребуется приложить некоторые ручные усилия.
Измените размер физического тома:
root@Ubuntu14:~# pvresize /dev/sda5
Physical volume "/dev/sda5" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
Теперь проверьте состояние физического тома и группы томов и убедитесь, что они правильно отображают новый размер:
root@Ubuntu14:~# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 ubuntu14-vg lvm2 a-- 39.76g 20.02g
root@Ubuntu14:~# vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu14-vg 1 2 0 wz--n- 39.76g 20.02g
Аналогичным образом измените размер логического тома:
root@Ubuntu14:~# lvextend -l +100%FREE /dev/ubuntu14-vg/root
Extending logical volume root to 38.76 GiB
Logical volume root successfully resized
Наконец, измените размер файловой системы:
root@Ubuntu14:~# resize2fs /dev/ubuntu14-vg/root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/ubuntu14-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/ubuntu14-vg/root is now 10161152 blocks long.
Проверьте состояние диска и убедитесь, что LVM теперь правильно изменён:
root@Ubuntu14:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 989M 4.0K 989M 1% /dev
tmpfs tmpfs 201M 716K 200M 1% /run
/dev/dm-0 ext4 39G 1.5G 35G 4% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 1001M 0 1001M 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
/dev/sda1 ext2 236M 40M 184M 18% /boot
Вот и всё! Вы успешно изменили размер раздела LVM внутри расширенного раздела.