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
- vgdisplay で VG 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 で確認すると、/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
fdisk /dev/sda を実行すると、上図のように対話形式で/dev/sda の編集が行えるようになります。「m」キーを入力すると、次のようにコマンド一覧が表示されます。
「p」コマンドを実行すると、次のように現在のパーティション状態が表示されます。
増設分のディスク領域に対してパーティションを新規作成します。「n」コマンドを実行します。
「パーティションタイプ」の選択が表示されます。規定値の「p」でよいので、Enterキーを入力します。
そのあと、「パーティション番号」、「最初のセクタ」、「終了セクタ」の入力を求められますが、全て規定値でよいので、各選択ごとにEnterキーを入力します。すると、増設した10GBのディスクが タイプ Linux でパーティション 3 で作成されます。
「p」コマンドで確認すると、/dev/sda3 が追加されています。Linux LVMで利用するので、Idタイプを変更します。「l」コマンドを実行して、Linux LVMのIDを確認します。
「l」コマンドを実行すると、タイプのIDが一覧表示されます。Linux LVM のIDは「8e」になります。「t」コマンドを実行して、パーティション3のラベルを変更します。
「t」コマンドを実行すると、まず「パーティション番号」の指定になります。パーティション3の変更なので、規定値のままでよいため、Enterキーを押します。次に、16進数コードの入力になるので、先ほど確認した「8e」を入力します。
ラベル変更を行った後、「p」コマンドを確認すると/dev/sda3 のタイプがLinux LVMに変更されています。変更が終わったので、「w」コマンドでラベルの書き込みをしてfdiskコマンドを終了します。
物理ボリューム(PV)の変更
次に、物理ボリューム(PV)の変更を行います。まず、 pvdisplay コマンドで、現在のPVの状態を確認します。実行コマンドは下記になります。
pvdisplay
/dev/sda2 のみ認識されているので、pvcreate コマンドで /dev/sda3 のPVを作成します。実行コマンドは下記になります。
pvcreate /dev/sda3
“successfully created” と表示されれば、新しいPVが作成されています。実際にpvdisplay で確認すると、次のように /dev/sda3 が 10.00 GiB で表示されます。
ボリュームグループ(VG)の拡張
次に、LVMのボリュームグループ(VG)を確認します。確認するコマンドは次になります。
vgdisplay
vgdisplay コマンドを実行すると、次のように表示されます。
VG Nameは 「cl」であることがわかるので、この「cl」をvgextend コマンドで拡張します。実行するコマンドは下記になります。
vgextend cl /dev/sda3
“successfuly extended” と表示されれば、VGの拡張に成功しています。念のため、vgdisplay コマンドで拡張された結果を確認します。
vgextendコマンド実行前と比べ、VG Size が28.99GiB に変わり、Free PE / Size に10.00 GiB が追加されていることが確認できます。
論理ボリューム(LV)の拡張
論理ボリューム(LV)の拡張を行います。まず、lvdisplay コマンドで、現在のLVの状態を確認します。実行コマンドは下記になります。
lvdisplay
LV Path が “/dev/cl/root” の側を lvextend コマンドで拡張します。空き領域全てを割り当てる場合は、次のコマンドを実行します。
lvextend -l +100%FREE /dev/cl/root
拡張に成功すると、次のように表示されます。
lvextend実行後、確認のため、lvdisplay を実行します。
/dev/cl/root のLV Size が <17.00 GiB から 26.99GiB に変更されています。
ファイルシステムでのサイズ変更
最後にファイルシステムでのサイズ変更を行います。まず、df コマンドで現在のファイルシステムの状態を確認します。実行するコマンドは下記になります。
df -h
ルート「/」 のファイルシステムである /dev/mapper/cl-root のサイズは 17Gのままです。そのため、ファイルシステム側に増設したLVを認識させます。 CentOS 8 では xfs_growfs コマンドで変更します。実行するコマンドは下記になります。
xfs_growfs /
xfs_growfs の実行結果は下記になります。
再度 df コマンドで、サイズ変更の確認を行います。
/dev/mapper/cl-root のサイズが 27G に変更されています。これで、増設したディスク容量をCentOS 8 上で利用できるようになりました。