web-dev-qa-db-ja.com

LVMでボリュームグループのサイズを減らす方法は?

[root@localhost ~] vgdisplay
  --- Volume group ---
  VG Name               vg_root
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               297,59 GiB
  PE Size               4,00 MiB
  Total PE              76182
  Alloc PE / Size       59392 / 232,00 GiB
  Free  PE / Size       16790 / 65,59 GiB
  VG UUID               XXXXXXXXXX

PV:

[root@localhost ~] pvdisplay

  --- Physical volume ---
  PV Name               /dev/mapper/udisks-luks-uuid-ASDFASDF
  VG Name               vg_root
  PV Size               297,59 GiB / not usable 2,00 MiB
  Allocatable           yes 
  PE Size               4,00 MiB
  Total PE              76182
  Free PE               16790
  Allocated PE          59392
  PV UUID               YYYYYYYYYYY

そのため、VGには65 GBの空き容量があります。しかし、このボリュームグループを約50 GBまで縮小したい場合:

pvresize -tv --setphysicalvolumesize 247G /dev/mapper/udisks-luks-uuid-ASDFASDF
  Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
    Using physical volume(s) on command line
    Test mode: Skipping archiving of volume group.
    /dev/mapper/udisks-luks-uuid-ASDFASDF: Pretending size is 517996544 not 624087040 sectors.
    Resizing volume "/dev/mapper/udisks-luks-uuid-ASDFASDF" to 624087040 sectors.
    Resizing physical volume /dev/mapper/udisks-luks-uuid-ASDFASDF from 0 to 63231 extents.
  /dev/mapper/udisks-luks-uuid-ASDFASDF: cannot resize to 63231 extents as later ones are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized
    Test mode: Wiping internal cache
    Wiping internal VG cache

したがって、エラーメッセージは次のとおりです。

cannot resize to 63231 extents as later ones are allocated.

Q: vg_rootをデフラグして、不要な部分を削除するにはどうすればよいですか?

ps:VGのサイズを変更するためにPVのサイズを変更するだけでよいことはすでにわかりました、またはVGのサイズ変更を実行するためのより良いコマンドがあります(例:PVに複数のVGがある場合、どうすればよいですか?... )?

36
gasko peter

pvmoveを使用して、これらのエクステントをデバイスまたは別のデバイスの先頭に移動できます。

Sudo pvmove --alloc anywhere /dev/device:60000-76182

次に、pvmoveがエクステントの移動先を選択するか、エクステントの移動先を指定できます。

見る pvs -v --segments /dev/device現在割り当てられているエクステントを確認します。

36

LVMまたはLVM2パーティションのサイズを変更するために必要な手順は次のとおりです。

Sudo lvresize --verbose --resizefs -L -150G /dev/ubuntu/root

Sudo pvresize --setphysicalvolumesize {any size here} /dev/sda5

最後のコマンドpvresizeはエラーになるかもしれません

/dev/sda5: cannot resize to xxxxx extents as later ones are allocated.

LVMの最後にある未割り当てスペースを再配置する必要があります。これは、ルートとswap_1パーティションの後を意味します。このコマンドで現在のスペースの配置を確認できます

pvs -v --segments /dev/sda5

pvsはこのような出力を表示します

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii 0 free
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy jjj swap 0 linear /dev/sda5:yyyy-end

ここでpvmoveを使用して、外部の断片化を削除します。

Sudo pvmove --alloc anywhere /dev/sda5:yyyy-end

次に、スワップボリュームの移動が成功したかどうかを確認します。

pvs -v --segments /dev/sda5

ボリュームの新しい順序が表示されます。

/dev/sda5 ubuntu lvm2 a-- 698.04g 150g 0 xxx+1 root 0 linear /dev/sda:0-xxx
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g xxx+1 iii swap 0 linear /dev/sda5:xxx+1-yyyy
/dev/sda5 ubuntu lvm2 a-- 698.04g 150g yyyy+1 end 0 free

その後、GPartedを使用してLVMのサイズを最大使用領域に変更します。残りは未割り当てスペースになります。

35
Ujjal Roy

この古い投稿では、この種の縮小について説明しているため、新しいスペースを他の何かに使用できます。ただし、以前はデータに合わせてサイズを変更する必要があります。これは、あなたが得るその他のエラーもカバーするはずです。古いので、最初に読んでください:

1
DigitalTidBits

以前の回答はこの問題を解決するのに役立ちましたが、自動化する必要があったので pvshrink と書きました

# ./pvshrink /dev/vda2 
Moving 50 blocks from 714 to 664
  /dev/vda2: Moved: 4.00%
  /dev/vda2: Moved: 100.00%
50 of 50 (100.00%) done
Defragmentation complete.
Metadata size: 1048576 b
PE size: 4.0 MiB
Total size 1048576 b + 714 x 4194304 b = 2995781632 b (2.8 GiB)
    Wiping internal VG cache
    Wiping cache of LVM-capable devices
    Archiving volume group "Fedora" metadata (seqno 15).
    /dev/vda2: Pretending size is 5851136 not 6287360 sectors.
    Resizing volume "/dev/vda2" to 5851136 sectors.
    Resizing physical volume /dev/vda2 from 0 to 714 extents.
    Updating physical volume "/dev/vda2"
    Creating volume group backup "/etc/lvm/backup/Fedora" (seqno 16).
  Physical volume "/dev/vda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

これにより、PVを最適化するために必要な回数だけpvmoveが呼び出され、可能な最小サイズ(メタデータのために使用されるサイズよりわずかに大きいサイズ)にサイズが変更されます。

0
pdw

私はこの方法を使用していますが、それが最善であるかどうかはわかりませんが、私にとってはうまくいきます

注意して使用してくださいnot SysAdmin

問題の原因となる違いを計算する

324%4 = 0問題なし

だが

324%32 = 10.125

それが問題なので、収まりません

「実数をゲット」っていうと思う

lvmdiskscan

関連するパーティションを一覧表示する

その後

pvresize /dev/*** --setphysicalvolumesize ***M

作業に4Mを追加する必要があります。古いPEサイズに関連していると思います

最終的に

vgchange -s 32M **
0