VMWare Player や ESXi などで仮想マシンを作成する際に、一からインストールするのは時間がかかるので、テンプレートを作成したり、OSインストール済みの仮想マシンの ova を作成して、使いまわすことはよくあります。その際に、用意していたテンプレートで割り当てていたディスク容量では足りない場合に、ディスク容量を増設したくなります。

ここでは、VMWare Player とCentOS 8 の組み合わせを例にして、VMWare仮想マシン上のLinux LVM で使うディスク容量の増設の仕方を説明します。

実行コマンドサマリ

実行する作業・コマンドを次の一覧にまとめます。太文字が実行するコマンドで、例:に書いてあるものが、今回実際に実行したコマンドです。

  • (前提)CentOS 8 がインストールされている仮想マシンを用意
  • VMWarePlayer の仮想マシン設定からディスク容量を拡張
  • 仮想マシンを起動し、CentOS 8 にログイン
  • fdisk -l でディスクデバイスを確認
  • fdisk <追加ディスクパーティション名> を実行
    • 例: fdisk /dev/sda3
  • fdisk の対話型コマンドラインで、増設ディスク容量のパーティション作成
    • p コマンドを入力し、現状確認
    • n コマンドを入力し、/dev/sda3 を作成(パラメータは全て既定値)
    • t コマンドを入力し、/dev/sda3 のタイプを変更。(タイプID は8e
    • w コマンドを入力し、変更を反映して終了
    • pvdisplay を実行し、PV(物理ボリューム)の現状を確認
  • pvcreate <追加ディスクパーティション名> で増設ディスク容量のPVを作成
    • 例: pvcreate /dev/sda3
  • vgdisplayVG Name を確認
  • vgextend <VG Name> <追加ディスクパーティション名>を実行
    • 例: vgextend cl /dev/sda3
  • lvdisplay で root のLV Path を確認
  • lvextend -l +100%FREE <rootのLV Path>でLV(論理ボリューム)を拡張
    • 例:lvextend -l +100%FREE /dev/cl/root
  • xfs_growfs / で root(/)のファイルシステムを拡張

詳細

ここでは、スナップショット付きで実行するコマンドの詳細を説明します。

仮想マシン設定でのディスク増設

まず、テンプレートやova から CentOS 8 がインストールされた仮想マシンを作成し、停止した状態にしておきます。そして、「仮想マシン設定の編集」をクリックして、仮想マシン設定のウィンドウを開きます。

仮想マシン設定の画面

上図の赤枠で囲った箇所にある「展開」をクリックします。

ディスク容量の拡張

「ディスク容量の拡張」というポップアップが表示されますので、ディスクサイズの数値を増やして、「展開(E)」をクリックします。ここでは、20.0GBから30.0GBへ10GB容量を増やします。

ディスク拡張成功

ディスク容量の拡張に成功すると上図のように、表示されます。「OK」をクリックしてポップアップを閉じ、仮想マシン設定のウィンドウも「OK」をクリックして閉じます。そして、「仮想マシンの再生」をクリックしてディスク容量を増やした仮想マシンを起動します。

起動後、仮想マシンで起動したCentOS 8 にログインし、su や sudo コマンドで、root になります。

fdisk でのラベル確認

fdisk コマンドでディスクデバイスのラベルを確認します。

fdisk -l の結果

fdisk -l で確認すると、/dev/sda のサイズは増設した30GiB になっています。一方、パーティションはまだ変更されていないので、/dev/sda1 がLinux で 1G、/dev/sda2 が 19G でLinux LVM として割り当てられています。

また、/dev/mapper/cl-root がLVMの論理ボリュームとして 17GiB で認識され、/dev/mapper/cl-swap がLVMのスワップ領域として 2GiBで認識されています。

増設ディスクへのラベル割り当て

fdisk コマンドで、増設分のディスクにラベル割り当てを行います。実行コマンドは下記になります。

fdisk /dev/sda
fdsik /dev/sda 実行時

fdisk /dev/sda を実行すると、上図のように対話形式で/dev/sda の編集が行えるようになります。「m」キーを入力すると、次のようにコマンド一覧が表示されます。

m コマンド実行時

「p」コマンドを実行すると、次のように現在のパーティション状態が表示されます。

pコマンド実行時

増設分のディスク領域に対してパーティションを新規作成します。「n」コマンドを実行します。

nコマンド実行時

「パーティションタイプ」の選択が表示されます。規定値の「p」でよいので、Enterキーを入力します。

パーティション 3の作成

そのあと、「パーティション番号」、「最初のセクタ」、「終了セクタ」の入力を求められますが、全て規定値でよいので、各選択ごとにEnterキーを入力します。すると、増設した10GBのディスクが タイプ Linux でパーティション 3 で作成されます。

pコマンドで新規パーティションを確認

「p」コマンドで確認すると、/dev/sda3 が追加されています。Linux LVMで利用するので、Idタイプを変更します。「l」コマンドを実行して、Linux LVMのIDを確認します。

lコマンド実行時

「l」コマンドを実行すると、タイプのIDが一覧表示されます。Linux LVM のIDは「8e」になります。「t」コマンドを実行して、パーティション3のラベルを変更します。

tコマンドでのラベル変更

「t」コマンドを実行すると、まず「パーティション番号」の指定になります。パーティション3の変更なので、規定値のままでよいため、Enterキーを押します。次に、16進数コードの入力になるので、先ほど確認した「8e」を入力します。

ラベル変更の確認とwコマンドで更新

ラベル変更を行った後、「p」コマンドを確認すると/dev/sda3 のタイプがLinux LVMに変更されています。変更が終わったので、「w」コマンドでラベルの書き込みをしてfdiskコマンドを終了します。

物理ボリューム(PV)の変更

次に、物理ボリューム(PV)の変更を行います。まず、 pvdisplay コマンドで、現在のPVの状態を確認します。実行コマンドは下記になります。

pvdisplay
pvdisplay 実行結果

/dev/sda2 のみ認識されているので、pvcreate コマンドで /dev/sda3 のPVを作成します。実行コマンドは下記になります。

pvcreate /dev/sda3
pvcreate コマンド実行結果

“successfully created” と表示されれば、新しいPVが作成されています。実際にpvdisplay で確認すると、次のように /dev/sda3 が 10.00 GiB で表示されます。

pvcreate後のpvdisplay実行結果

ボリュームグループ(VG)の拡張

次に、LVMのボリュームグループ(VG)を確認します。確認するコマンドは次になります。

vgdisplay

vgdisplay コマンドを実行すると、次のように表示されます。

vgdisplayコマンド実行結果

VG Nameは 「cl」であることがわかるので、この「cl」をvgextend コマンドで拡張します。実行するコマンドは下記になります。

vgextend cl /dev/sda3

“successfuly extended” と表示されれば、VGの拡張に成功しています。念のため、vgdisplay コマンドで拡張された結果を確認します。

vgextend実行後のvgdiplay実行結果

vgextendコマンド実行前と比べ、VG Size が28.99GiB に変わり、Free PE / Size に10.00 GiB が追加されていることが確認できます。

論理ボリューム(LV)の拡張

論理ボリューム(LV)の拡張を行います。まず、lvdisplay コマンドで、現在のLVの状態を確認します。実行コマンドは下記になります。

lvdisplay
lvdisplay実行結果

LV Path が “/dev/cl/root” の側を lvextend コマンドで拡張します。空き領域全てを割り当てる場合は、次のコマンドを実行します。

lvextend  -l +100%FREE /dev/cl/root

拡張に成功すると、次のように表示されます。

lvetend実行結果

lvextend実行後、確認のため、lvdisplay を実行します。

lvextend実行後のlvdisplay実行結果

/dev/cl/root のLV Size が <17.00 GiB から 26.99GiB に変更されています。

ファイルシステムでのサイズ変更

最後にファイルシステムでのサイズ変更を行います。まず、df コマンドで現在のファイルシステムの状態を確認します。実行するコマンドは下記になります。

df -h
df -h 実行結果

ルート「/」 のファイルシステムである /dev/mapper/cl-root のサイズは 17Gのままです。そのため、ファイルシステム側に増設したLVを認識させます。 CentOS 8 では xfs_growfs コマンドで変更します。実行するコマンドは下記になります。

xfs_growfs /

xfs_growfs の実行結果は下記になります。

xfs_growfs 実行結果

再度 df コマンドで、サイズ変更の確認を行います。

xfs_growfs実行後のdf -h 実行結果

/dev/mapper/cl-root のサイズが 27G に変更されています。これで、増設したディスク容量をCentOS 8 上で利用できるようになりました。