OS

【解説】LVMとは?|論理ボリュームを拡張してみよう!

2020年12月23日

LVMとは?

Wikipediaには、以下のように記載されています。

論理ボリュームマネージャ(Logical Volume Manager、LVM)は、「物理ボリューム」を提供するハードディスクなどのストレージメディア・デバイス(補助記憶装置)に、直接ファイルシステムをマップするのではなく、粗粒度(典型的には、メビバイト単位程度)のブロックにより一旦「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステムである。

簡単にまとめると、複数のハードディスクやパーティションをひとつのボリュームグループ(VG)にまとめ、単一の論理ボリューム(LV)として扱うことのできるディスク管理機能です。LinuxをはじめとするUnix系のOSで利用できる機能です。

 

LVMの構成例

理解を深めるため、図を用いて構成例を説明します。

LVM概要

LVM構成例

Physical Devices(物理デバイス) / Partitions(パーティション)

上図の最下部「/dev/sda」「/dev/sdb」が、物理的な2台のHDDに該当します。
それぞれ、パーティションを2つ切られており、「/dev/sda1/dev/sda2」「/dev/sdb1/dev/sdb2」として見えています。

SANACHAN
SANACHAN
SSDや他のデバイスでも問題ありませんが、ここではHDDとします。

 

Volume Groups (VG)「ボリュームグループ」

これら4つのパーティションを1つのボリュームグループ「cl」にまとめています。
これで、2台のHDDを1台のHDDとして扱うことができるようになります。

 

Logical Volume (LV)「論理ボリューム」

ボリュームグループを分割し、物理ドライブ上のPartition に相当する「論理ボリューム」を用意します。
ここでは、「/dev/cl/root」と「/dev/cl/data」です。

SANACHAN
SANACHAN
分かりやすいように2分割していますが、好きなサイズで分割できます。
分割しなくても問題ありません。

 

File System (FS)「ファイルシステム」

論理ボリュームにファイルシステムをマッピングして、実際に使用します。
分割した論理ボリュームごとにファイルシステムを割り当てることができます。

SANACHAN
SANACHAN
ファイルシステムは異なっていても問題ありません。

 

「LVM」まとめ

ポイント

  • 複数パーティションがあり、その上にボリュームグループ(VG)を作成できる
  • VGの上に複数の論理ボリューム(LV)を作成し、ファイルシステム(FS)を構築して使用

注意ポイント

論理ボリューム(LV)は、物理ボリュームの総容量を越えることはできません。(当然ですが・・・)

 

LVM操作(拡張手順)

手順は物理デバイスに近い層から順に変更していきます。

  1. 現状の構成確認
  2. パーティション(Partition)の変更
  3. 物理ボリューム(Physical Volume)の変更
  4. 論理ボリューム(Logical Volume)の変更
  5. ファイルシステム(File System)の変更
SANACHAN
SANACHAN
システムの変更になりますので、管理者権限(スーパーユーザ、または sudo コマンド使用)で作業を行います。

 

手順①:df で現状の構成確認

df (Dump Filesystem) は、ファイルシステムに関する情報を表示してくれるコマンドです。
このコマンドを実行して、現在の構成を確認することができます。

SANACHAN
SANACHAN
-h」のオプションを付けると、サイズに応じて適切な単位で表示してくれます。

 

手順②:fdisk でパーティション拡張

パーティションを拡張するには、以下の条件を満たしている必要があります。

拡張できる条件

拡張したいパーティションの直後に未割当領域があること

パーティションを拡張するには、元の領域を含めた一連の領域が必要になります。
領域に空きがあれば、やることは簡単。既存のパーティションを削除し、新たにパーティションを作成するだけ。

 

fdisk は、「fdisk <物理ドライブへのパス>」の書式で実行します。
対話的なインターフェイスになっているため、使いやすいと思います。

SANACHAN
SANACHAN
それでは、手順を見ていきましょう。

 

パーティション情報を表示

fdisk のプロンプトで「p」を入力して表示させます。

SANACHAN
SANACHAN
ここで「/dev/sda2」など拡張したいパーティションの番号を確認しましょう。

 

既存のパーティションを削除

fdisk のプロンプトで「d」を入力して表示させます。

SANACHAN
SANACHAN
先ほど確認したパーティション番号を入力します。

スポンサーリンク

新しいパーティションの作成

fdisk のプロンプトで「n」を入力して作成します。

SANACHAN
SANACHAN
sector の設問は、Enter押下で残り領域全てを割り当てできます。

 

パーティションタイプの変更

fdisk のプロンプトで「t」を入力して変更します。

SANACHAN
SANACHAN
Linux LVM を示す 「8e」を指定します。

 

変更内容を書込む

fdisk のプロンプトで「w」を入力して書込みます。

SANACHAN
SANACHAN
拡張前のパーティション情報でシステムが動作してるのでエラーとなります。
書込みは終わっているので、reboot コマンドで再起動して反映させましょう。

 

注意

この後の手順は、再起動後に行う必要があります。

 

手順③:物理ボリューム(Physical Volume)の拡張

物理ボリュームの拡張には「pvresize」コマンドを使用します。

SANACHAN
SANACHAN
ここでは、拡張したパーティション「/dev/sda2」を指定します。

 

手順④:論理ボリューム(Logical Volume)の拡張

論理ボリュームの拡張には「lvextend」コマンドを使用します。

SANACHAN
SANACHAN
論理ボリュームのパスは、lvdisplay で確認して LV Path に表示されるパスを使用。

 

手順⑤:ファイルシステムの拡張

ファイルシステムの拡張には「resize2fs」コマンドを使用します。

SANACHAN
SANACHAN
ここでも LV Path を使用します。

 

resize2fs でエラーが出る場合(CentOSなど)、代わりに「xfs_growfs」コマンドを使用します。

 

おわりに

いかがでしたでしょうか。

ボリュームやファイルシステムの変更は失敗すると起動できなくなります
気を付けてコマンドを入力し、実行するようにしてください。

以上、「【解説】LVMとは?|論理ボリュームを拡張してみよう!」でした。

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-OS
-, ,