LVMとは・VMware ESXi環境のディスク拡張方法

1.LVM(Logical Volume Manager)とは

cooltext189383588478645

LVMとはUNIX系OSなどで利用できるディスク管理機能です。LVMを利用すると物理ディスクとは別に仮想ディスクを作成することができ、その仮想ディスクの上にext4,ext3などのファイルシステムを構築できます。

1-1.LVMのメリット

記憶領域の管理を柔軟に行うことができ、たとえば、各論理ボリューム(LVM を利用しない場合のパーティションに相当)のサイズを後から変更したり、ハードディスク(LVM ではPV呼ぶ)の容量を超えるサイズの論理ボリュームを作ったり、後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やしたりといったことが可能です。またLVMを利用すると複数の物理的なディスクを束ね、一本の大きなディスクとして使うことも可能でき(物理的な制約が軽減されます。)、ディスクを追加した際など、簡単にパーティションサイズの拡張ができます。

1-2.LVMの用語

用語 説明
PV(Physical Volume)
物理的なブロックデバイス。仮想ディスクを作成するためにはまず、この物理ディスクはLVMで使う物理ディスクだよ~と宣言する必要があります。
VG(Volume Group)
PVから切り出したブロックデバイス。仮想的なハードディスクのようなもの。
LV(Logical Volume)
VGから切り出した仮想的なパーティション領域。従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
PE(Physical Extent)
LVMによる領域管理の最小単位。
デフォルトでは、4MBとなる。PEが小さいほど、エクステント数は多くなりやすくなる。ただしエクステント数が多くなってもディスクパフォーマンスを悪化させる原因にはならない模様。また、エクステントサイズが多きすぎると、無駄に容量を消費しがちになります。結局のところデフォルト(4MB)を保持すべきとベンダーのページには記載が載っていました。なお、ひとつのVGには異なるサイズのエクステントは混在できないため注意が必要。

1-3.LVMのバージョンとエクステント制約

LVMはバージョン1と2があり、現在の主流はLVM2です。(LVM2には LVM1 との下位互換性があり。)VGはvgconvert コマンドを使用して LVM1 形式から LVM2 形式に変換することができます。また、LVMはPV/LVあたり65535ですが、LVM2では、PV/LV あたりの最大エクステント数に制限はありません

1-4.LVMのコマンド

LVMを操作するためのコマンドは以下のとおりです。LVMを使用して仮想ディスクを作成したり拡張する場合には、

1.PVの作成
2.PVをVGとしてグルーピング
3.LVにVGから容量を切り出す

イメージで作業を進めますが、フェーズによって以下のコマンドを使い分けます。

PV関連のコマンド
  • pvcreate
  • pvremove
  • pvmove
  • pvdisplay
VG関連のコマンド
  • vgcreate
  • vgremove
  • vgextend
  • vgreduce
  • vgdisplay
LV関連のコマンド
  • lvcreate
  • lvremove
  • lvextend
  • lvreduce

2.ESXi環境でのディスク拡張方法

2-1.作業前のディスクの確認・ESXiのディスク追加

今回はESXi上でLVMを使用した仮想マシンが稼働している環境で、ディスク拡張を行う手順を紹介していきます。想像してたよりもめんどくさい…。

はじめに対象となる仮想マシンを停止し、vSphere Clientでディスクの割り当て量を増やします。今回は16GBから20GBまで容量を増やす事にしました。
※スナップショットがあるとディスクサイズの変更ができないようです。ある場合は消しましょう。
参考:仮想マシンのディスクがオンラインでもオフラインでも容量を拡張出来ない。VMwareでディスクサイズがグレーアウト

esxi_disk

起動し、OSが認識している(まだ使える状態になってないけど)ディスク容量を確認します。

(ESXi側でディスクの割り当てを増やす前)

(ESXi側でディスクの割り当てを増やした後)

/dev/sdaの容量が増えました。ディスクを伸長させるとOSから見ると1本のディスクの使用していない領域が増えてます。この「使用していない領域」を区切って新たにパーティションを追加します。

2-2.パーティションの切り出し・パーティションへのLVMの適用

次は増やしたディスクをOSから利用できるようにするための作業です。増やした領域を新たにパーティションとして使えるようにします。windowsとかでもありますねハイ。
現在はsdaというディスクが一本見えていて、その中でsda1とsda2というパーティションがあるのがわかります。ESXi側から増やしたパーティション化されていない領域がsdaにありますのでこれをパーティショニングします。

パーティションを追加する場合は、fdiskコマンドを利用します。”n”を押してパーティション作成にはいり、さらにパーティション番号である”3″、そのあとどのくらいの容量(シリンダ指定)をパーティションに割り当てるかの質問には何も入力せずエンターを押します。これで勝手に使えるだけ割り当ててくれます。最後に”w”で変更適用を行います。なにやらアラートで、再起動後に新たなパーティションは認識されるよ~とわめいていますが、ウルセェ!進みます。

fdisk -lでディスク状態を参照すると先ほどまで見えなかったsda3が認識されています。ヤッタ

しかし、まだパーティションを新たにぶった切っただけです。次に作成したパーティションのファイルシステムを指定し、フォーマットします。フォーマットにはcfdiskというコマンドユーティリティを使用します。(fdiskでも似たようなことはできます。)今回は/dev/sda3を選択し、cfdiskで 8E すなわちLINUX LVMに指定の上、フォーマットを行いました。

※パーティションタイプとは、システム ID、OS インジケータとも呼ばれ、そのパーティションを使用している OS の種類やファイルシステム等を数値で表します。

TYPEがLinux LVMに変更されたことを確認し、[Write]を選択し、yesを実行する。
   Are you sure you want to write the partition table to disk? (yes or no): yes

無事に変更されました。

ディスク上のパーティションテーブルが変更されたことを OSに反映させるためサーバ再起動を実施します。※ただし、partedツールを利用すれば再起動をせず反映させることができます。

【partedツールで再起動をせずパーティション変更を反映させる方法】

【partedツールで再起動をせずパーティション変更を反映させる方法】

パーティションテーブルの一覧を表示します。

【partedツールで再起動をせずパーティション変更を反映させる方法】

対象のディスクを読み込み、すべてのパーティションをシステムに登録します。※すでに登録されているパーティションはエラーとして表示されます。

【partedツールで再起動をせずパーティション変更を反映させる方法】

パーティションを認識しました。


2-3.LVMによるLVの拡張

いよいよLVMのディスク操作にはいります。まずLVMに対してPVを新たに作認識させます。

新たに認識させた(作成した)PVの情報を取得する。現在使用しているデバイスが/dev/sda2で今回新たに作った/dev/sda3があるのがわかる

次にVGに作成したPVを追加します。vgextendコマンドのあとにはすでに存在するvgを指定します。上記コマンドのVG Nameを参照してください。そのあと、pvdisplayで新たに追加したsda3がvg_tagutagutestに追加されたことを確認しました。

次にVGをLVに追加します。まずは現在の論理ボリューム(LV)を確認します。当然増えてはいません。そしてこのLVにはVG vg_tagutagutestが使用されていることがわかります。

次にLVに対してVGの使用していない領域を全て割り当てます。”lvextend -l +100%FREE”で指定した論理グループで利用しているボリュームグループの残り容量すべてを、同一の論理グループに割り当てることができます。

これでLVMの仮想ディスクの容量が無事に増えました。lvdisplayとfdiskで期待どおりの容量となっていることを確認します。

あとはresize2fs コマンドで/dev/sdaの領域を増やしておしまいです。(ext4はマウントしたままresizeが可能です。)

 

以上です。

Bookmark this on Google Bookmarks
LINEで送る
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です