バナー

LVM

きっかけ

デスクトップで使用しているマシンは80GBのHDDがついていてUbuntu 8.10 Desktopを普通に使用するくらいであれば容量が足りなくなることはありません。しかし、普通に使用していて動画とか音楽ファイル等を保存していたら残り数GBとなってしまいました。まあ1TBくらいのHDDが安くなっているので買えば良いのですがほとんど使用しない古いPCにIDEの80GBと40GBが入っているのを再利用することにしました。普通につないでもおもしろくないので勉強をかねてLVMを使用して1つのボリュームとして設定してみることにしました。

LVMとは

LVMはLogical Volume Managerの頭文字をとったもので論理的にパーティションを管理するための機能です。
LVMを使用すれば複数のハードディスクに作成されたパーティション(物理ボリューム)をまとめて一つの記憶領域(ボリュームグループ)を作成することができます。このボリュームグループをパーティション(論理ボリューム)に分割してファイルシステムを作成してマウントして使用することができます。

今回の設定内容

まずはターゲットマシンです。NECがだしている格安サーバのCPUをCeleron420からDualCore Pentiumに換装してメモリを追加したもので簡単なスペックは以下のとおり。

マシン名NEC Express 5800/110Ge
CPUDualCore Pentium E5300
MemoryECC付512MB×3 計1.5GB
HDDSATA80GB
OSUbuntu 8.10 Desktop

このマシンにIDE接続の80GBと40GBのHDDを接続してLVMにて1つの論理ボリュームとして設定してマウントします。

HDDの接続

最近のマシンはIDEインターフェースが一つしかなく2台のIDE機器しか接続できません。ところがこのマシンはDVDドライブがIDE接続となっており残り一台しかIDE機器が接続できません。とりあえず一台でも良いかと思ったのですがケーブルの長さの関係でDVDにつながっているケーブルにHDDをつなぐ事もできません。
”そういえば以前PCIに挿すIDEインターフェースカードを購入したなあ”と思い出して探したところカードを発見することができました。このカードには2つのIDEソケットがついておりパフォーマンスを考えてそれぞれに一台づつHDDを接続しました。この状態で起動したところOSから/dev/sdbと/dev/sdcとして無事認識されました。

LVMインストール

LVMはデフォルトではインストールされていないみたいだったので、LVM関連のパッケージをインストールしました。必要なのは次のパッケージです。
lvm2
またなんとなく目についた次のLVM関連のGUIツールもインストールしました。
system-config-lvm

LVM設定

LVM用パーティション作成

HDDにfdiskにてパーティションを作成してIDを"8e"(Linux LVM)に設定します。今回は2つのHDDを1つに見せるのでそれぞれのHDDを最大サイズで1つのパーティションを/dev/sdb1と/dev/sdc1として作成しました。

物理ボリューム作成

作成したパーティションを物理ボリュームとしてLVMに登録します。新規にLVMを導入した場合は必要なファイルを作成するためにvgscanというコマンドを事前に実行する必要があります。

$sudo vgscan  事前準備
$sudo /sbin/pvcreate /dev/sdb1 /dev/sdc1  (物理ボリュームへ登録)

ボリュームグループ作成

/dev/sdb1でボリュームグループを作成します。作成されたボリュームグループに/dev/sdc1を追加します。ここで-s32mはLVMはパーテションを一定の容量に区切って管理するときの単位となる容量です。この容量が大きいと管理できるボリュームの大きさが大きくなりますが無駄な領域が大きくなってしまいます。32MBにした場合でボリュームグループの最大容量は2TBになりますので必要な最大容量にしたがって調節すれば良いのではないでしょうか。

$sudo vgcreate -s32m vghogehoge /dev/sdb1 (ボリュームグループ作成)
$sudo vgextend vghogehoge /dev/sdc1 (ボリュームグループに/dev/sdc1を追加)

論理ボリューム作成

ボリュームグループ内に論理ボリュームを作成します。これはHDDを普通に使用する場合のパーティションと同じものです。

$sudo lvcreate -nlvhogehoge -L100G vghogehoge (100GBの論理ボリューム作成、/dev/vghogehoge/lvhogehogeというファイルになります。)

ファイルシステム作成

論理ボリューム内にファイルシステムを作成します。ここではext3のファイルシステムを作成します。

$sudo mke2fs -j /dev/vghogehoge/lvhogehoge

論理ボリュームのマウント

マウントポイントとなるディレクトリを作成してファイルシステムを作成した論理ボリュームをマウントします。

$sudo mkdir /tmpmnt (マウントポイント作成)
$mount /dev/vghogehoge/lvhogehoge /tmpmnt (マウント)
$df (マウントの確認)
......
......
......
/dev/vghogehoge/lvhogehoge 100000000  0  100000000  0% /tmpmnt(論理ボリュームがマウントされている場合に表示される行)

起動時のマウント

/etc/fstabに記述すると起動時にマウントすることができます。

その他

LVMを使用することによってパーティションが足りなくなった場合、新しいHDDを物理ボリュームとして登録しボリュームグループに追加して論理ボリュームを拡大することができます。特定のHDDが保持している内容を別の物理ボリュームに移して使用しなくなったHDDを物理ボリュームから削除してHDDを取り外す事も可能です。その他の機能としてある瞬間の論理ボリュームの内容をスナップショットとして保持することができるので一貫性のあるバックアップをとることも可能です。いろいろ使い勝手があるので今後はどんどん活用していきたいものです。