В моем случае, добавить свободное место понадобилось на виртуальной машине с asterisk под hyper-v. Средствами hyper-v можно легко увеличить размер виртуального жесткого диска, но в lvm linux место само собой не добавится. Оставлю здесь простую инструкцию, как увеличить количество свободного места. Может кому еще пригодится.
Обстановка
Размер виртуального диска — 10 Гб. А linux видит только 4.
[root@asterisk ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 2.5G 2.3G 150M 98% / tmpfs 503M 0 503M 0% /dev/shm /dev/sda1 485M 46M 414M 10% /boot /dev/sdb1 20G 5.8G 13G 31% /var/spool/asterisk
Раздел /dev/sdb1 использует отдельный виртуальный диск и его не рассматриваем.
Что мы имеем
Командой fdisk -l смотрим информацию об устройствах и свободном месте.
[root@asterisk ~]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00063da9 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 653 4729856 8e Linux LVM Partition 2 does not end on cylinder boundary. Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xe4711a31 Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 83 Linux Disk /dev/mapper/VolGroup-lv_root: 2726 MB, 2726297600 bytes 255 heads, 63 sectors/track, 331 cylinders Units = cylinders 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 Disk /dev/mapper/VolGroup-lv_swap: 2113 MB, 2113929216 bytes 255 heads, 63 sectors/track, 257 cylinders Units = cylinders 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/sda.
Создаем новый раздел
[root@asterisk ~]# 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'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (653-1305, default 653): Using default value 653 Last cylinder, +cylinders or +size{K,M,G} (653-1305, default 1305): Using default value 1305 Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): 8e Changed system type of partition 3 to 8e (Linux LVM) Command (m for help): p Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00063da9 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 64 653 4729856 8e Linux LVM Partition 2 does not end on cylinder boundary. /dev/sda3 653 1305 5239532+ 8e Linux LVM 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. [root@asterisk ~]# reboot
Создаем том LVM
После перезагрузки, когда система увидела новый раздел /dev/sda3, преобразуем его в физический том.
[root@asterisk ~]# lvm lvm> pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created lvm> vgextend VolGroup /dev/sda3 Volume group "VolGroup" successfully extended lvm> vgdisplay --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 9.50 GiB PE Size 4.00 MiB Total PE 2432 Alloc PE / Size 1154 / 4.51 GiB Free PE / Size 1278 / 4.99 GiB VG UUID oGSitO-rR6e-Ykj5-UYi3-on0J-GoUA-PzHgBL lvm> lvextend -l +100%FREE /dev/VolGroup/lv_root Extending logical volume lv_root to 7.53 GiB Logical volume lv_root successfully resized lvm> vgdisplay --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 5 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 9.50 GiB PE Size 4.00 MiB Total PE 2432 Alloc PE / Size 2432 / 9.50 GiB Free PE / Size 0 / 0 VG UUID oGSitO-rR6e-Ykj5-UYi3-on0J-GoUA-PzHgBL lvm> quit
Список виртуальных томов и групп можно увидеть командой lvs .
[root@asterisk ~]# lvm lvm> lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao--- 2.54g lv_swap VolGroup -wi-ao--- 1.97g
Последний штрих
Осталось только изменить размер корневой файловой системы на величину нового тома.
[root@asterisk ~]# resize2fs -p /dev/mapper/VolGroup-lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 1974272 (4k) blocks. The filesystem on /dev/mapper/VolGroup-lv_root is now 1974272 blocks long.
Результат
В итоге у нас появилось дополнительных почти 5 Гб свободного места.
[root@asterisk ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 7.5G 2.3G 4.9G 32% / tmpfs 503M 0 503M 0% /dev/shm /dev/sda1 485M 46M 414M 10% /boot /dev/sdb1 20G 5.8G 13G 31% /var/spool/asterisk
Thank NIX to wrote simple steps!
If you get an error on last step like: resize2fs: Bad magic number
— you can try this command: lvresize -r -l+100%FREE VolGroup/root
It helped me on CentOS 7.
TNX! Also working on CentOS 6.
Я правильно понимаю, что в случае использования LVM мы не можем тупо расширить /dev/sda2 на свободное место, а обязательно должны создавать новую партицию сразу за второй и дальше уже с этим работать?
Было бы хорошо если бы добавляли команды
pvs vgs lvs до и после операций)