Nová verze CentOS (8.1) byla nainstalována jako VM s následujícím rozložením na disku:
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home cl -wi-a—– 441.10g
root cl -wi-ao—- 50.00g
swap cl -wi-ao—- 7.89g
# pvdisplay /dev/sda2 -m
— Physical volume —
PV Name /dev/sda2
VG Name cl
PV Size <499.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 127743
Free PE 110362
Allocated PE 17381
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
— Physical Segments —
Physical extent 0 to 2020:
Logical volume /dev/cl/swap
Logical extents 0 to 2020
Physical extent 2021 to 114942:
Logical volume /dev/cl/home
Logical extents 0 to 112921
Physical extent 114943 to 127742:
Logical volume /dev/cl/root
Logical extents 0 to 12799
Adresář /home má 440GB. OS má jenom jednoho uživatele a jeho domovský adresář je prázdný. XPS filesystem nelze zmenšit a proto musíme udělat následující kroky.
# ll /home
total 0
drwx——. 2 xpadm xpadm 6 Jun 16 09:40 xpadm
# umount /home
Odstranime adresář /home a znovu jej vytvoříme s menší velikostí.
# lvremove /dev/cl/home
Do you really want to remove active logical volume cl/home? [y/n]: y
Logical volume “home” successfully removed
Nová velikost bude 10GB:
# lvcreate -L 10G -n home cl
WARNING: xfs signature detected on /dev/cl/home at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/cl/home.
Logical volume “home” created.
OS si stěžuje na existující XFS na disku, ale to je v pořádku chceme jej smazat.
# vgchange -a y
3 logical volume(s) in volume group “cl” now active
Vytvoříme nový XFS a obnovíme na něm /home
# mkfs.xfs /dev/cl/home
meta-data=/dev/cl/home isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# mount /home
# ll /home
total 0
# mkdir /home/xpadm
# ll /home
total 0
drwxr-xr-x. 2 root root 6 Jun 16 09:40 xpadm
# chmod 700 /home/xpadm/
# chown xpadm:xpadm /home/xpadm/
# ll /home
total 0
drwx——. 2 xpadm xpadm 6 Jun 16 09:40 xpadm
Připravíme vg cl na zmenšení:
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 3 0 wz–n- <499.00g 431.10g
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a– <499.00g 431.10g
Podívejme se na alokaci fyzických segmentů ve vg cl
# pvdisplay /dev/sda2 -m
— Physical volume —
PV Name /dev/sda2
VG Name cl
PV Size <499.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 127743
Free PE 110362
Allocated PE 17381
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
— Physical Segments —
Physical extent 0 to 2020:
Logical volume /dev/cl/swap
Logical extents 0 to 2020
Physical extent 2021 to 4580:
Logical volume /dev/cl/home
Logical extents 0 to 2559
Physical extent 4581 to 114942:
FREE
Physical extent 114943 to 127742:
Logical volume /dev/cl/root
Logical extents 0 to 12799
Volné místo je mezi novým /home a starým /. Pokud zmenšíme vg teď, tak se uvolní místo na konci vg a přijdeme o svazek /. Musíme přesunout volné místo na konec disku. Použijeme další disk o velikosti (aspoň) současného /. Přidáme disk /dev/sdb1 do vg a pak přesuneme fyzické extenty na novy disk ve vg cl. Tento přesun se dá provést online a uvolní se disk na původním disku /dev/sda2. Pak přesuneme celý / zpět a OS použije diskový prostor hned za zmenšeným /home.
# pvcreate /dev/sdb1
Physical volume “/dev/sdb1” successfully created.
# vgextend cl /dev/sdb1
Volume group “cl” successfully extended
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 2 3 0 wz–n- 648.99g <581.10g
# pvs -o+pv_used
PV VG Fmt Attr PSize PFree Used
/dev/sda2 cl lvm2 a– <499.00g 431.10g 67.89g
/dev/sdb1 cl lvm2 a– <150.00g <150.00g 0
# pvmove -n /dev/cl/root /dev/sda2 /dev/sdb1
/dev/sda2: Moved: 0.02%
/dev/sda2: Moved: 3.41%
…
/dev/sda2: Moved: 96.80%
/dev/sda2: Moved: 100.00%
# pvmove -n /dev/cl/root /dev/sdb1 /dev/sda2
/dev/sdb1: Moved: 0.00%
/dev/sdb1: Moved: 3.09%
…
/dev/sdb1: Moved: 98.88%
/dev/sdb1: Moved: 100.00%
Po této operaci máme volné místo na konci disku a všechny datové oddíly končí na extentu 17831.
# pvdisplay /dev/sda2 -m
— Physical volume —
PV Name /dev/sda2
VG Name cl
PV Size <499.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 127743
Free PE 110362
Allocated PE 17381
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
— Physical Segments —
Physical extent 0 to 2020:
Logical volume /dev/cl/swap
Logical extents 0 to 2020
Physical extent 2021 to 4580:
Logical volume /dev/cl/home
Logical extents 0 to 2559
Physical extent 4581 to 17380:
Logical volume /dev/cl/root
Logical extents 0 to 12799
Physical extent 17381 to 127742:
FREE
Protože máme volné místo na konci disku /dev/sda2 můžeme zmenšit PV na 80GB. Velikost 80GB je dostatečná pro data uložená v současných oddílech pro swap, /home a /.
# fdisk -l /dev/sda
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 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: 0x845c40d9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 1048575999 1046476800 499G 8e Linux LVM
# pvresize –setphysicalvolumesize 80G /dev/sda2
/dev/sda2: Requested size 80.00 GiB is less than real size <499.00 GiB. Proceed? [y/n]: y
WARNING: /dev/sda2: Pretending size is 167772160 not 1046476800 sectors.
Physical volume “/dev/sda2” changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
Příkaz pvresize si stěžuje na velikost, protože je menší než současná velikost /dev/sda2 (499GB). Přesto příkaz proběhl, volný prostor se zmenšil a je tam pořád volné místo pro budoucí použití.
# pvdisplay /dev/sda2 -m
— Physical volume —
PV Name /dev/sda2
VG Name cl
PV Size <80.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 20479
Free PE 3098
Allocated PE 17381
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
— Physical Segments —
Physical extent 0 to 2020:
Logical volume /dev/cl/swap
Logical extents 0 to 2020
Physical extent 2021 to 4580:
Logical volume /dev/cl/home
Logical extents 0 to 2559
Physical extent 4581 to 17380:
Logical volume /dev/cl/root
Logical extents 0 to 12799
Physical extent 17381 to 20478:
FREE
Ted už nepotřebujeme disk /dev/sdb1 ve vg cl, proto ho odstraníme:
# vgreduce cl /dev/sdb1
Removed “/dev/sdb1” from volume group “cl”
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 3 0 wz–n- <80.00g 12.10g
# vgdisplay
— Volume group —
VG Name cl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 15
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size <80.00 GiB
PE Size 4.00 MiB
Total PE 20479
Alloc PE / Size 17381 / 67.89 GiB
Free PE / Size 3098 / 12.10 GiB
VG UUID 0XLSu8-aOeE-Mdg1-5ViQ-2zaQ-9hPv-X9T4h1
Nové rozložení vg cl má jenom 80 GB.
# vgdisplay -v
— Volume group —
VG Name cl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 15
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size <80.00 GiB
PE Size 4.00 MiB
Total PE 20479
Alloc PE / Size 17381 / 67.89 GiB
Free PE / Size 3098 / 12.10 GiB
VG UUID 0XLSu8-aOeE-Mdg1-5ViQ-2zaQ-9hPv-X9T4h1
— Logical volume —
LV Path /dev/cl/swap
LV Name swap
VG Name cl
LV UUID 3yJjj2-cLdt-uaiT-C3er-i2Zx-u0JY-Ip0xG4
LV Write Access read/write
LV Creation host, time localhost, 2020-03-12 09:23:04 +0100
LV Status available
# open 2
LV Size 7.89 GiB
Current LE 2021
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 8192
Block device 253:1
— Logical volume —
LV Path /dev/cl/root
LV Name root
VG Name cl
LV UUID LAmWX2-3DSS-VD7d-9rWs-SFzc-hTni-akto3r
LV Write Access read/write
LV Creation host, time localhost, 2020-03-12 09:23:06 +0100
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 8192
Block device 253:0
— Logical volume —
LV Path /dev/cl/home
LV Name home
VG Name cl
LV UUID 3NCUe4-JZVY-FdkD-h8mC-Xuuz-LL6M-uslaFo
LV Write Access read/write
LV Creation host, time host.example.net, 2020-06-16 09:39:03 +0200
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 8192
Block device 253:2
— Physical volumes —
PV Name /dev/sda2
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
PV Status allocatable
Total PE / Free PE 20479 / 3098
Tímto je hotová LVM část a můžeme zmenšit fyzický volume /dev/sda, který má 2 oddíly. První je bootovací a druhá je LVM volume pro swap, /home a /.
Zapíšeme rozložení disku /dev/sda pomocí sfdisk do souboru
# sfdisk -d /dev/sda sda_part
label: dos
label-id: 0x845c40d9
device: /dev/sda
unit: sectors
/dev/sda1 : start= 2048, size= 2097152, type=83, bootable
/dev/sda2 : start= 2099200, size= 1046476800, type=8e
# sfdisk -d /dev/sda >sda_part
Editací souboru múžeme zmenšit druhý oddíl disku /dev/sda na novou velikost. Zvolili jsme 20 000 extentů a každý má 4MB. Máme sektory o velikosti 512 B takže potřebujeme 20000 * 8192 = 163840000 sektorů. Tady jsem udělal chybu a použil jsem vypočítaný počet sektorů pro /dev/sda2 pro celý disk 🙂
# vi sda_part
# cat sda_part
label: dos
label-id: 0x845c40d9
device: /dev/sda
unit: sectors
/dev/sda1 : start= 2048, size= 2097152, type=83, bootable
/dev/sda2 : start= 2099200, size= 163840000, type=8e
Změněný soubor použijeme pomocí příkazu sfdisk s přepínačem –no-reread, protože nemůžeme udělat změnu v běžícím kernelu. OS hlásí chybu Device or resource busy.
# sfdisk /dev/sda <sda_part –no-reread
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 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: 0x845c40d9
Old situation:
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 1048575999 1046476800 499G 8e Linux LVM
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disk label with disk identifier 0x845c40d9.
/dev/sda1: Created a new partition 1 of type ‘Linux’ and of size 1 GiB.
Partition #1 contains a ext4 signature.
/dev/sda2: Created a new partition 2 of type ‘Linux LVM’ and of size 78.1 GiB.
Partition #2 contains a LVM2_member signature.
/dev/sda3: Done.
New situation:
Disklabel type: dos
Disk identifier: 0x845c40d9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 165939199 163840000 78.1G 8e Linux LVM
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).
Syncing disks.
Příkaz partprobe vyřeší náš problém a pro jistotu rebootujeme.
# partprobe
# fdisk -l /dev/sda
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 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: 0x845c40d9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 165939199 163840000 78.1G 8e Linux LVM
# reboot
Po rebootu si příkaz pvs stěžuje že /dev/sda2 je menší než PV, který je na něm vytvořený. Máme 2 možnosti jak to opravit:
- Zmenšit PV
- Rozšířit /dev/sda2
Druhá možnost vyžaduje opět přepsáni oddílů na disku a zmenšení PV je jednodušší”
# pvs
WARNING: Device /dev/sda2 has size of 163840000 sectors which is smaller than corresponding PV size of 167770112 sectors. Was device resized?
WARNING: One or more devices used as PVs in VG cl have changed sizes.
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a– <80.00g 12.10g
# fdisk -l /dev/sda
Disk /dev/sda: 78.1 GiB, 83886080000 bytes, 163840000 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: 0x845c40d9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 165939199 163840000 78.1G 8e Linux LVM
Zkontrolujeme skutečnou velikost disku /dev/sda2 a můžeme udělat pvresize:
# pvresize –setphysicalvolumesize 161740800s /dev/sda2
WARNING: Device /dev/sda2 has size of 161740800 sectors which is smaller than corresponding PV size of 167770112 sectors. Was device resized?
WARNING: One or more devices used as PVs in VG cl have changed sizes.
Physical volume “/dev/sda2” changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a– 77.12g <9.23g
/dev/sdb1 lvm2 — <150.00g <150.00g
# reboot
Po rebootu je velikost PV stejná jako velikost /dev/sda2.
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 3 0 wz–n- 77.12g <9.23g
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a– 77.12g <9.23g
/dev/sdb1 lvm2 — <150.00g <150.00g
# fdisk -l /dev/sda
Disk /dev/sda: 78.1 GiB, 83886080000 bytes, 163840000 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: 0x845c40d9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 165939199 163840000 78.1G 8e Linux LVM
To ještě není pravda. Linux běží na VMware a musíme zmenšit velikost virtualního disku. Otevřeme GUI a zmenšíme disk.
To ovšem nelze:-(

VMware GUI neumožňuje zmenšit, ale jenom zvětšit disk. Naštěsti se pomoc dá najít na
internetu
Článek je napsaný pro Windows, ale v Linuxu je to jednodušší:-) Tady je postup:
-
- Shutdown VM
- Přihlášení do esxi serveru jako root
- Výpočet (80GB = 80 * 1024 * 1024 * 1024 / 512) nebo převezmeme číslo přímo z fstab 163840000 sectors
- Přejdeme do adresáře /vmfs/volumes/<DS-dir>/<VM-dir>
- Editace VM.vmdk file
- Změna počtu sektorů:
Z:
# Extent description
RW 1048576000 VMFS “vm-flat.vmdk”
Na:
# Extent description
RW 163840000 VMFS “vm-flat.vmdk”
- Migrace VM na jiný DS
- Start VM a velikost disku je změněná
# fdisk -l /dev/sda
Disk /dev/sda: 78.1 GiB, 83886080000 bytes, 163840000 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: 0x845c40d9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 165939199 163840000 78.1G 8e Linux LVM
# vgdisplay -v
— Volume group —
VG Name cl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 16
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 77.12 GiB
PE Size 4.00 MiB
Total PE 19743
Alloc PE / Size 17381 / 67.89 GiB
Free PE / Size 2362 / <9.23 GiB
VG UUID 0XLSu8-aOeE-Mdg1-5ViQ-2zaQ-9hPv-X9T4h1
— Logical volume —
LV Path /dev/cl/swap
LV Name swap
VG Name cl
LV UUID 3yJjj2-cLdt-uaiT-C3er-i2Zx-u0JY-Ip0xG4
LV Write Access read/write
LV Creation host, time localhost, 2020-03-12 09:23:04 +0100
LV Status available
# open 2
LV Size 7.89 GiB
Current LE 2021
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 8192
Block device 253:1
— Logical volume —
LV Path /dev/cl/root
LV Name root
VG Name cl
LV UUID LAmWX2-3DSS-VD7d-9rWs-SFzc-hTni-akto3r
LV Write Access read/write
LV Creation host, time localhost, 2020-03-12 09:23:06 +0100
LV Status available
# open 1
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 8192
Block device 253:0
— Logical volume —
LV Path /dev/cl/home
LV Name home
VG Name cl
LV UUID 3NCUe4-JZVY-FdkD-h8mC-Xuuz-LL6M-uslaFo
LV Write Access read/write
LV Creation host, time host.example.net, 2020-06-16 09:39:03 +0200
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 8192
Block device 253:2
— Physical volumes —
PV Name /dev/sda2
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
PV Status allocatable
Total PE / Free PE 19743 / 2362
# pvdisplay /dev/sda2 -m
— Physical volume —
PV Name /dev/sda2
VG Name cl
PV Size 77.12 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 19743
Free PE 2362
Allocated PE 17381
PV UUID fB3mro-9lDl-lMBg-0jNh-qqzx-PReV-iHUu8T
— Physical Segments —
Physical extent 0 to 2020:
Logical volume /dev/cl/swap
Logical extents 0 to 2020
Physical extent 2021 to 4580:
Logical volume /dev/cl/home
Logical extents 0 to 2559
Physical extent 4581 to 17380:
Logical volume /dev/cl/root
Logical extents 0 to 12799
Physical extent 17381 to 19742:
FREE