LVM パーティションで EBS ボリュームを拡張する方法を教えてください。

所要時間3分
0

LVM パーティションを持つ Amazon Elastic Block Store (Amazon EBS) ボリュームを拡張したいと考えています。

簡単な説明

論理ボリュームを拡張する方法は 2 つあります。

  1. 既存の EBS ボリュームのサイズを増やします。
  2. ボリュームグループに EBS ボリュームを追加し、VG-LV を拡張します。

解決方法

オプション 1: 既存の EBS ボリュームのサイズを増やす

**注:**既存のボリュームへのサイズ変更は、通常、ボリュームが最適化状態になってから数秒以内に反映されます。最適化状態ではボリュームのパフォーマンスが影響を受けますが、ソース構成の仕様を下回ることはありません。ボリュームの種類によっては、変更に数分から数時間かかる場合があります。詳細については、「ボリューム変更の進行状況を監視する」を参照してください。

  1. 既存の EBS ボリュームのサイズを変更します。

  2. 次のコマンドを実行して、growpart ユーティリティをインストールします。

$ sudo yum install cloud-utils-growpart

**注:**Debian または Ubuntu ベースのシステムに growpart ユーティリティをインストールするには、次のコマンドを使用します。

$ sudo apt install -y cloud-guest-utils
  1. growpart コマンドを実行してパーティションを拡張します。
$ sudo growpart /dev/xvdh 1
 CHANGED: disk=/dev/xvdh partition=1: start=2048 old: size=20971519,end=16777182 new: size=41940958,end=41943006
  1. pvresize コマンドを実行して、PV のサイズを変更します。次の例では、パーティション /dev/xvdh1 が拡張されています。
$ sudo pvresize /dev/xvdh1
Physical volume "/dev/xvdh1" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

pvs または pvdisplay を使用して、物理ボリュームの詳細を表示します。

$ sudo pvs
PV         VG            Fmt  Attr PSize   PFree
 /dev/xvdh1 examplegroup1 lvm2 a--  <20.00g <13.00g

vgs または vgdisplay を使用して、ボリュームグループの詳細を表示します。

$ sudo vgs
 VG            #PV #LV #SN Attr   VSize   VFree
examplegroup1   1   1   0 wz--n- <20.00g <13.00g
  1. lvextend コマンドを実行して論理ボリュームを拡張します。
$ sudo lvextend -L 19G /dev/examplegroup1/lvexample1

**注:**前述の例では、19G が LV の新しい拡大したサイズです。19G は LV を上げる必要があるサイズではありません。

lvs コマンドまたは lvdisplay コマンドを使用して、論理ボリュームの詳細を表示します。

$ sudo lvs  LV        VG            Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lvexample1 examplegroup1 -wi-a----- 19.00g
  1. 以下のコマンドを実行してファイルシステムを拡張します。

Ext2、Ext3、Ext4 のファイルシステム:

$ sudo resize2fs /dev/examplegroup1/lvexample1

XFS ファイルシステム:

$ sudo xfs_growfs /dev/examplegroup1/lvexample1

オプション 2: ボリュームグループに EBS ボリュームを追加し、VG-LV を拡張する

  1. 10 GB の EBS ボリュームをもう 1 つ作成し、インスタンスにボリュームをアタッチします。[EBS ボリュームのパーティションに物理ボリュームを作成する] のステップ 3 に従って、デバイス /dev/xvdi にパーティションを作成します。次に、pvcreate コマンドを実行します。次の例では、ボリュームのブロックデバイス名は [/dev/xvdi1] です。
$ sudo pvcreate /dev/xvdi1
Physical volume "/dev/xvdi1" successfully created
  1. vgextend コマンドを使用してボリュームグループを拡張し、新しいボリュームを追加します。次の例では、ボリュームグループ [examplegroup1] を拡張してボリューム [/dev/xvdi1] を含めています。
$ sudo vgextend examplegroup1 /dev/xvdi1
Volume group "examplegroup2" successfully extended

拡張子を確認するには、vgs コマンドまたは vgdisplay コマンドを実行します。次の例は、[examplegroup1] ボリュームグループに 2 つの PV があることを示しています。

$ sudo vgs
  VG                       #PV #LV #SN Attr   VSize   VFree
examplegroup1            2   1   0 wz--n-  29.99g   20.99g
  1. lvextend コマンドを実行して論理ボリュームを拡張します。
$ sudo lvextend -L 29G /dev/examplegroup1/lvexample1

**注:**前述の例では、29G が LV の新しい拡大したサイズです。29G は LV を上げる必要があるサイズではありません。

  1. ファイルシステムのサイズ変更:

Ext2、Ext3、Ext4 のファイルシステム:

$ sudo resize2fs /dev/examplegroup1/lvexample1

XFS ファイルシステム:

$ sudo xfs_growfs /dev/examplegroup1/lvexample1

ストライプされたボリュームを拡張

ストライピングは、データを複数のディスクに分散させる手法です。論理ボリュームを拡張するときに、次のようなメッセージが表示される場合があります。

$ pvcreate /dev/xvdd
Physical volume "/dev/xvdd" successfully created.

$ vgextend vg01 /dev/xvdd
Volume group "vg01" successfully extended

$ vgs
VG   #PV #LV #SN Attr   VSize   VFree
vg01   3   1   0 wz--n- <23.99g <13.99g

$ lvextend /dev/vg01/lv01 -L +10G
Using stripesize of last segment 128.00 KiB
Insufficient suitable allocatable extents for logical volume lv01: 1026 more required

上記のエラーまたは同様のエラーは、データをストライピングするのに十分な数のデバイスを追加せずに「ストライプされた」論理ボリュームを拡張した場合に発生します。

ストライプされたボリュームを拡張するときにこれらのエラーを回避するには、次の手順を実行してください。

  1. 次のコマンドを実行して、LV がデータをストライピングするデバイスの数を特定します。
$ lvs -o+lv_layout,stripes
LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Layout     #Str
lv01 vg01 -wi-a----- 10.00g                                                     striped       2
  1. #Str 列、またはストライプ列は、データがストライピングされているデバイスの数を表します。前の例では、データは 2 つのデバイスにまたがってストライピングされています。そのため、LV を拡張するには、少なくとも 2 つのデバイス (または 2 の倍数のデバイス) を vg に追加する必要があります。前の手順で 1 つのデバイスを追加したので、2 つ目のデバイスを追加して、もう一度拡張を試みます。
$ pvcreate /dev/xvde
Physical volume "/dev/xvde" successfully created.

$ vgextend vg01 /dev/xvde
Volume group "vg01" successfully extended

$ vgs
VG   #PV #LV #SN Attr   VSize  VFree
  vg01   4   1   0 wz--n- 31.98g 21.98g

$ lvextend /dev/vg01/lv01 -L +10G
Using stripesize of last segment 128.00 KiB
Size of logical volume vg01/lv01 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
Logical volume vg01/lv01 successfully resized.

$ lvs -o+lv_layout,stripes
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert Layout     #Str
lv01 vg01 -wi-a----- 20.00g                                                     striped       2
lv01 vg01 -wi-a----- 20.00g                                                     striped       2

前述の出力例は、2 つ目のデバイスが追加されたときに lvextend コマンドが正常に完了したことを示します。

  1. 以下のコマンドを実行してファイルシステムのサイズを変更します。

Ext2、Ext3、Ext4 のファイルシステム:

$ sudo resize2fs /dev/vg01/lv01

XFS ファイルシステム:

$ sudo xfs_growfs /dev/vg01/lv01
AWS公式
AWS公式更新しました 10ヶ月前