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:

  1. Zmenšit PV
  2. 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:

    1. Shutdown VM
    2. Přihlášení do esxi serveru jako root
    3. Výpočet (80GB = 80 * 1024 * 1024 * 1024 / 512) nebo převezmeme číslo přímo z fstab 163840000 sectors
    4. Přejdeme do adresáře /vmfs/volumes/<DS-dir>/<VM-dir>
    5. Editace  VM.vmdk file
    6. Změna počtu sektorů:

Z:

# Extent description

RW 1048576000 VMFS “vm-flat.vmdk”

Na:

# Extent description

RW 163840000 VMFS “vm-flat.vmdk”

  1. Migrace VM na jiný DS
  2. 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

 

Leave a Reply

Your email address will not be published. Required fields are marked *