論理ボリュームマネージャー(Linux LVM)について調査してみました


はじめに

論理ボリュームについて調べてみました。
環境は お名前.com VPS にインストールした CentOS 7.4 です。

パーティション構成を把握する

お名前.com VPS は初期状態だとストレージが2つに分割されています。
私はOS領域に60GB、残り140GBを /home にマウントする想定でストレージを再構成してからインストールしました。CentOS 7.4 のインストール自体は基本デフォルト構成でインストール済みです。
まずは実体把握のために df コマンドを実行してみます。

[root@localhost ~]# df

tmpfs は一時ファイルを格納するための仕組みなので、特に気にしないことにします。
以外のデバイスとマウントポイントは以下の通り整理できます。

デバイス マウントポイント
/dev/mapper/centos-root /
/dev/mapper/centos-home /home
/dev/vda1 /boot

CentOS 7.4 をインストールしたデバイスは /dev/vda なので、fdiskコマンドで構成を確認してみます。

[root@localhost ~]# fdisk -l /dev/vda

/boot にマウントしている /dev/vda1 はbootデバイスであることが判ります。
/dev/vda2 は、Linux LVM となっていますが、これは論理ボリュームマネージャー(LVM: Logical Volume Manager)です。
論理ボリュームマネージャーとは、論理ボリュームという単位でパーティションを扱うことで、物理的なストレージ構成を隠蔽するための仕組みです。例えば、複数の物理ストレージをまとめてひとつのボリュームグループとして定義し、それを論理ボリュームに分けて扱うことが可能です。こうすることで、物理的なストレージ構成の変更をユーザーやアプリケーションで意識する必要がなくなるので、ストレージデバイスの管理が容易となります。

/dev/vda の構造をもう少し詳しく調べてみました。
まずは、ボリュームグループを調査するために、vgdisplayコマンドを実行します。

[root@localhost ~]# vgdisplay

ボリュームグループは centos という名前で定義されていました。
次に論理ボリュームを調査するために、lvdisplayコマンドを実行します。

[root@localhost ~]# lvdisplay

以下の3つの論理ボリュームを確認することができました。

論理ボリューム名
/dev/centos/swap
/dev/centos/home
/dev/centos/root

デバイスとして、ボリュームグループ centos の配下に紐付いていることがわかります。
これらの結果から、/dev/vda は以下の図のように表現することができます。

/dev/vda1 は前述したとおりbootパーティションですので、論理ボリュームマネージャーではありません。
/dev/vda2 は論理ボリュームマネージャーであり、ボリュームグループ /dev/centos を3つの論理ボリューム /dev/centos/swap /dev/centos/root /dev/centos/home に分割しています。
また、括弧内に記載の /dev/mapper/centos-swap /dev/mapper/centos-root /dev/mapper/centos-home は、デバイスマッパーが割り当てたデバイスであり、同じものを示しています。
同じものを示しているかは、それぞれのデバイスパスを見ればわかります。

[root@localhost ~]# cd /dev/centos
[root@localhost centos]# ls -la
[root@localhost centos]# cd /dev/mapper
[root@localhost mapper]# ls -la

デバイスマッパーは、/dev/dm-(数字) というカーネルが管理する便宜上のデバイスを /dev/mapper/(マップ名) にマッピングします。
論理ボリュームマネージャーはデバイスマッパーを利用するアプリケーションとしての位置づけなので、論理ボリュームはデバイスマッパーが形成したデバイスを示すシンボリックリンクであるというのが正しい解釈だと考えられます。(あくまで私がそのように解釈しただけですが ^^;)

最後に

今回は論理ボリュームマネージャーについて調べてみました。特に論理ボリュームに対する利点などを追求する内容ではありませんでしたが、構造上どのように形成されているかのイメージはつかめたように感じます。
そもそもこの内容を調べたのは、残り140GBの領域を /home にマウントしようと考えていたときに、ある程度 Linux のファイルシステムやストレージの扱いについて理解しておいたほうが良いのでは?と思い立ったからです。
理解しきるのは非常に難しいのでしょうが、難しい中にも少しの理解やキーワードを知る機会を得たことは非常に良かったと思います。