LVM ボリュームのボリューム・サイズの拡張

仮想マシンに接続されるブロック・ストレージ・ボリュームのうち、以前、論理ボリューム・マネージャー (LVM) にフォーマット設定されていたブロック・ストレージ・ボリュームを「デフォルト・ブロック・ディスク接続用」アドオンを使用して、2 TB 以上に拡張する場合、追加のステップを実行する必要があります。

このタスクについて

Red Hat Enterprise Linux® 6.x を使用しており、ブロック・ストレージ・ボリュームを 2 TB 以上に拡張する場合は、仮想マシンにマウントされている論理ボリュームを手動でサイズ変更する必要があります。 この手動拡張を行うときは、ボリュームを切り離すか、仮想インスタンスを再始動する必要があります。 したがって、このタスクはメンテナンス期間に実行することをお勧めします。

「リフレッシュ」 アクション中、またはアドオンを使用する新規デプロイメント中に、 Red Hat Enterprise Linux 6.xで論理ボリュームを 2 TB 以上に拡張すると、以下のエラー・メッセージが生成されます。The block storage device size expansion is not reflected in the mounted logical volume. Automatic logical volume size refresh is not supported on RHEL 6.x if the size is expanded to 2 TB or more. To refresh the logical volume size, manually rescan the device, create a new partition, restart or the detach volume, and then add the partition to a physical volume, volume group, logical volume and refresh the mount.

「カタログ」 > 「ボリューム」 ページから仮想マシンに接続およびマウントされているブロック・ストレージを拡張した後、SSH を使用して仮想マシンにログインし、以下の手順を実行します。

手順

  1. パターン・インスタンスのブロック・ストレージ表から、ブロック・ストレージに関連付けられているマウント・ポイントを識別します。
  2. df -Ph を実行して、マウント・ポイントに対応する論理ボリューム・ファイルシステム名を取得します。 ファイル・システム名の形式は、 /dev/mapper/<volume_group_name>-<logical_volume_name>です。
    例えば、マウント・ポイントが /mount1の場合、 df -Ph を実行すると、以下のような出力が表示されます。
    Filesystem                    Size  Used    Avail  Use%    Mounted on
    /dev/mapper/datavg0-LV21328  3.0G  1.6M  2.8G  1%    /mount1
  3. 前のステップで実行したコマンドの出力からボリューム・グループ名と論理ボリューム名を入手します。
    前のステップの例の場合、ボリューム・グループ名は datavg0 で、論理ボリューム名は LV21328 です。
  4. pvs コマンドを実行して、ボリューム・グループに関連付けられている物理デバイスを取得します。 pvs コマンドは、パーティション番号を持つ物理デバイスを返します。
    pvs コマンドを実行すると、以下の例のような出力が表示されます。
       PV         VG      Fmt   Attr   PSize       PFree 
       /dev/sda2  rhel    lvm2  a--    11.75g      0
       /dev/sdb1  datavg0 lvm2  a--    1020.00m    0      
       /dev/sdb2  datavg0 lvm2  a--    1020.00m    0

    ボリューム・グループが datavg0 である場合、物理デバイスは /dev/sdb です。

  5. 新しいサイズを取得するためにデバイスを再スキャンします: echo 1 > /sys/block/<PHYSICAL_DEVICE>/device/rescan
    例えば、echo 1 > /sys/block/sdb/device/rescan です。
  6. 以下のコマンドを実行して、アライメント・エラーを修正します。 parted /dev/sdb print エラーを修正するか無視するかを確認するプロンプトが出されたら、 Fixと入力します。
  7. 次のコマンドを実行して、拡張ディスク・セグメントの開始値と終了値を取得します: parted -s /dev/<PHYSICAL_DEVICE> u MB p free。 拡張されたディスク・セグメントは、出力の最後の項目です。
    前記のコマンドによって、以下の例のような出力が返されます。
    parted -s /dev/sdb u MB p free
    Model: IBM 2145 (scsi)
    Disk /dev/sdb: 3221MB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:
    Number  Start     End       Size      File system  Name          Flags          
            0.02MB    1.05MB    1.03MB                  Free Space 
    1       1.05MB   1073MB   1072MB                   P1            lvm      
    2       1073MB    2147MB    1075MB                  P2           lvm        
            2147MB   3221MB   1074MB                   Free Space           

    開始値は 2147 MB で、終了値は 3221 MB です。

  8. 次のコマンドを実行してパーティション化します: parted -s -a optimal /dev/<PHYSICAL_DEVICE> mkpart <Partition_Name> <start> <end>。 開始値と終了値は、前のステップで取得した値と (末尾の MB というストリングまで含めて) 一致していなければなりません。
    次の例では、前のステップで取得した開始値と終了値を使用して新しいパーティションが作成されます: parted -s -a optimal /dev/sdb mkpart P3 2147MB 3221MB
  9. 次のコマンドを実行して、新しい区画に lvm フラグを設定します: parted /dev/<PHYSICAL_DEVICE> set <partition_number> lvm on
    例えば、新しいパーティション番号を取得するには、parted /dev/sdb print を実行します。 出力は以下のとおりです:
    Number  Start     End       Size      File system  Name          Flags          
            0.02MB    1.05MB    1.03MB                  Free Space 
    1       1.05MB   1073MB   1072MB                   P1            lvm
    2       1073MB    2147MB    1075MB                  P2           lvm 
    3       2147MB    3221MB    1074MB                  P3      

    パーティション 3 を lvmに設定するには、 parted /dev/sdb set 3 lvm onを実行します。

  10. カーネルが新しいパーティションを識別できるように、パターン・インスタンス・ページからボリュームの切り離しと再接続を行うか、仮想マシンを再始動します。
  11. ボリュームが再接続または再始動された後、 ls /dev/sd*を実行します。 コマンド出力に新しいパーティションが表示されます。
    例えば、以下のコマンドによって新しいパーティションが表示されます。
    /dev/sdb3 ls /dev/sdb* 
    /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3
  12. 次のコマンドを実行して、新規パーティションから新規物理ボリュームを作成します。 pvcreate /dev/<PHYSICAL_DEVICE><PARTITION_NUMBER>
    例えば、 /dev/sdb3 を追加するには、 pvcreate /dev/sdb3を実行します。
  13. 次のコマンドを実行して、ブロック・ストレージに関連付けられているボリューム・グループに新規物理ボリュームを追加します: vgextend <volume_group_name> /dev/<PHYSICAL_DEVICE><PARTITION_NUMBER>。 ブロック・ストレージに関連付けられているボリューム・グループを取得する方法については、ステップ 2 とステップ 3 を参照してください。
    例えば、ブロック・ストレージがボリューム・グループ datavg0 に関連付けられている場合に、ボリューム・グループ datavg0/dev/sdb3 で拡張するには、vgextend datavg0 /dev/sdb3 を実行します。
  14. 次のコマンドを実行して、ブロック・ストレージに関連付けられている論理ボリュームを拡張します。 lvextend -l +100%FREE /dev/<volume_group_name>/<logical_volume_name> ブロック・ストレージに関連付けられている論理ボリュームを取得する方法については、ステップ 2 とステップ 3 を参照してください。
    例えば、ブロック・ストレージがボリューム・グループ datavg0 および論理ボリューム LV21328に関連付けられている場合、論理ボリュームを拡張するには、 lvextend -l +100%FREE /dev/datavg0/LV21328を実行します。
  15. 次のコマンドを実行して、ファイル・システムのサイズをリフレッシュします。 resize2fs /dev/<volume_group_name>/<logical_volume_name>
    例えば、ブロック・ストレージがボリューム・グループ datavg0 と論理ボリューム LV21328 に関連付けられている場合に、ファイル・システムをリフレッシュするには、resize2fs /dev/datavg0/LV21328 を実行します。
  16. ファイル・システムのサイズが変更されたことを確認するには、 df -Ph を実行します。新しいサイズが表示されます。