EBS ボリュームで作成されたパーティションに LVM 論理ボリュームを作成する方法を教えてください。

最終更新日: 2020 年 6 月 25 日

Logical Volume Manager (LVM) を使用して、Amazon Elastic Block Store (Amazon EBS) ボリュームで作成されたパーティションに論理ボリューム (LV) を作成する方法を教えてください。

簡単な説明

LVM では、ディスク容量の割り当て、論理ボリュームのストリップ、再ミラーリング、およびサイズ変更を行うことができます。LVM を使用して、1 つの EBS ボリュームまたは EBS ボリュームのセットを 1 つ以上の物理ボリュームに割り当てることができます。

EBS ボリュームで LVM を使用し、パーティションを拡張する方法:

  1. EBS ボリュームから物理ボリューム (PV) を作成します。
  2. ボリュームグループ (VG) を作成し、物理ボリュームをボリュームグループに追加します。
  3. 論理ボリューム (LV) を作成し、LVM にディレクトリをマウントします。
  4. ファイルシステムを作成してマウントします。
  5. 論理ボリュームのサイズを変更します。

注意: Nitro ベースのインスタンスでの LVM 使用の詳細については、第 11 章をご参照ください。Red Hat カスタマーポータルウェブサイトの LVM (Logical Volume Manager)

解決方法

注意: すでにボリュームに LVM を作成し、使用目的でマウントしている場合は、[論理ボリュームを拡張する] で始まる手順通りに進めます。

EBS ボリュームのパーティションに物理ボリュームを作成する

LVM 論理ボリュームの基盤となる物理ストレージユニットは、EBS ボリュームのパーティションや EBS ボリューム全体などのブロックデバイスです。

注意: Nitro ベースのインスタンスは、ボリュームを NVMe デバイスとして公開します。ブロックデバイス名は、/dev/nvme1n1/dev/nvme2n1/dev/nvme3n1 などのパターンに従います。Nitro ベースのインスタンスを使用している場合は、次のステップのデバイス名を適切なデバイス名に置き換えます。デバイス命名の詳細については、デバイス名の考慮事項を参照してください。

1.    Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。

2.    EBS ボリュームを作成し、ボリュームをインスタンスにアタッチします。

3.    gdisk コマンドを使用して、パーティションを作成します。変数 16 進コードまたは GUID に、[8e00] と入力します。次の例では、/dev/xvdh にパーティション /dev/xvdh1 を作成します。

$ sudo gdisk /dev/xvdh
Command (? for help): n
Partition number (1-1218, default 1): 1
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00              
Changed type of partition to 'Linux LVM'
...
OK; writing new GUID partition table (GPT) to /dev/xvdh.
The operation has completed successfully.

lsblk コマンドを使用して、パーティションの作成を確認します。

$ lsblk 
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk 
└─xvda1 202:1    0   8G  0 part /
xvdh    202:80   0  10G  0 disk 
└─xvdh1 202:81   0  10G  0 part

4.    pvcreate コマンドを使用して、パーティションから物理ボリュームを作成します。次の例では、/dev/xvdh1 から物理ボリュームを作成します。

$ sudo pvcreate /dev/xvdh1
  Physical volume "/dev/xvdh1" successfully created.

ボリュームグループを作成し、物理ボリュームをボリュームグループに追加する

vgcreate コマンドを使用して、新しい物理ボリュームを結合するボリュームグループを作成します。次の例では、1 つの物理ボリュームを使用して、ボリュームグループ examplegroup1 を作成します。

$ sudo vgcreate examplegroup1 /dev/xvdh1          
  Volume group "examplegroup1" successfully created

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

$ sudo vgs
  VG             #PV #LV #SN Attr   VSize  VFree 
  examplegroup1   1   0   0 wz--n- <10.00g <10.00g

論理ボリューム (LV) とマウントディレクトリを作成する

1.    lvcreate コマンドを使用して、ボリュームグループから論理ボリューム (パーティション) を作成します。次の例では、examplegroup1 ボリュームグループから 9 GB の論理ボリューム lvexample1 を 1 つ作成します。

$ sudo lvcreate -n lvexample1 -L 9G examplegroup1
  Logical volume "lvexample1" created

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

$ sudo lvs
  LV          VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                                       
  lvexample1 examplegroup1 -wi-a----- 9.00g 

2.    mkdir コマンドを使用して、マウントディレクトリを作成します。次の例では、ディレクトリ /mnt1 を作成します。

$ sudo mkdir /mnt1

ファイルシステムを作成してマウントする

1.    ファイルシステムを作成し、使用するパーティションをマウントするには、次のコマンドを使用します。

mkfs -t コマンドを実行して、ファイルシステムを作成します。注意: 異なる場合は、xfs をファイルシステムタイプに置き換えます。たとえば、ext2、ext3、または ext4 などです。

$ sudo mkfs -t xfs /dev/examplegroup1/lvexample1

lsblk -f コマンドを実行して、新しいファイルシステムの作成を確認します。注意: 前のステップで作成したファイルシステムのタイプは、FSTYPE の下に表示されます。

$ lsblk -f
NAME                         FSTYPE      LABEL UUID                                   MOUNTPOINT
xvda                                                                                  
├─xvda1                                                                               
└─xvda2                      xfs               66e5e079-770e-4359-a9da-5205c3d8d5af   /                                          
xvdh                                                                                  
└─xvdh1                      LVM2_member       0UnOic-e2ng-XxH5-z0UW-7aTh-RxQK-KMrDqo 
  └─examplegroup1-lvexample1 xfs              5db36052-81d5-4762-8502-6986ff3964e7   

mount コマンドを実行して、前のステップで作成したマウントディレクトリにファイルシステムをマウントします。

$ sudo mount /dev/examplegroup1/lvexample1 /mnt1

2.    再起動後に新しいマウントが保持されるように、/etc/fstab ファイルのマウントオプションを編集します。

注意: 異なる場合は、xfs/etc/fstab エントリのファイルシステムタイプに置き換えます。

/dev/examplegroup1/lvexample1 /mnt1   xfs     defaults,nofail   0   0

論理ボリュームの拡張

論理ボリュームの拡張には 2 つのオプションがあります。

  • オプション 1: 既存の EBS ボリュームのサイズを増やします。
  • オプション 2: ボリュームグループに EBS ボリュームを追加します。

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

注意: 既存のボリュームサイズを増やす場合、サイズの変更は通常、ボリュームが最適化状態になってから、数秒以内に有効になります。ボリュームのパフォーマンスは、最適化状態の間は影響を受けますが、ソース設定の仕様を下回ることはありません。ボリュームタイプによっては、パフォーマンスの変更に数分から数時間かかることがあります。詳細については、ボリューム変更の進行状況のモニタリングを参照してください。

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

2.    growpart ユーティリティをインストールします。

$ sudo yum install cloud-utils-growpart

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

$ sudo apt install -y cloud-guest-utils

3.    growpart コマンドを実行してパーティションを拡張し、pvresize コマンドを実行して PV のサイズを変更します。次の例では、パーティション /dev/xvdh1 が拡張されています。

$ sudo growpart /dev/xvdh 1                            
CHANGED: disk=/dev/xvdh partition=1: start=2048 old: size=20971519,end=16777182 new: size=41940958,end=41943006

$ 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

4.    lvextend コマンドを実行して、論理ボリュームを拡張します。

$ sudo lvextend -L 19G /dev/examplegroup1/lvexample1

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

$ sudo lvs
  LV        VG            Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lvexample1 examplegroup1 -wi-a----- 19.00g   

5.    ファイルシステムを展開します。

注意: /etc/fstab エントリに正しいファイルシステムタイプを入力してください。

Ext2、Ext3、および Ext4 ファイルシステム:

$ sudo resize2fs /dev/examplegroup1/lvexample1

XFS ファイルシステム:

$ sudo yum install xfsprogs
$ sudo xfs_growfs /dev/examplegroup1/lvexample1

オプション 2: ボリュームグループに EBS ボリュームを追加する

1.    10 GB の別の EBS ボリュームを作成し、ボリュームをインスタンスにアタッチします。EBS ボリュームのパーティションに物理ボリュームを作成するのステップ 3 に続くデバイス /dev/xvdi にパーティションを作成し、pvcreate コマンドを実行します。次の例では、ボリュームのブロックデバイス名は /dev/xvdi1 です。

$ sudo pvcreate /dev/xvdi1
Physical volume "/dev/xvdi1" successfully created.

2.    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

3.    lvextend コマンドを実行して、論理ボリュームを拡張します。

$ sudo lvextend -L 29G /dev/examplegroup1/lvexample1

4.    ファイルシステムのサイズを変更します。

注意: ユースケースに応じて、XFS または Ext2、Ext3、および Ext4 ファイルシステムの手順通りに進めます。

Ext2、Ext3、および Ext4 ファイルシステム:

$ sudo resize2fs /dev/examplegroup1/lvexample1

XFS ファイルシステム:

$ sudo xfs_growfs /dev/examplegroup1/lvexample1