デスクトップで使用しているマシンは80GBのHDDがついていてUbuntu 8.10 Desktopを普通に使用するくらいであれば容量が足りなくなることはありません。しかし、普通に使用していて動画とか音楽ファイル等を保存していたら残り数GBとなってしまいました。まあ1TBくらいのHDDが安くなっているので買えば良いのですがほとんど使用しない古いPCにIDEの80GBと40GBが入っているのを再利用することにしました。普通につないでもおもしろくないので勉強をかねてLVMを使用して1つのボリュームとして設定してみることにしました。
LVMはLogical Volume Managerの頭文字をとったもので論理的にパーティションを管理するための機能です。
LVMを使用すれば複数のハードディスクに作成されたパーティション(物理ボリューム)をまとめて一つの記憶領域(ボリュームグループ)を作成することができます。このボリュームグループをパーティション(論理ボリューム)に分割してファイルシステムを作成してマウントして使用することができます。
まずはターゲットマシンです。NECがだしている格安サーバのCPUをCeleron420からDualCore Pentiumに換装してメモリを追加したもので簡単なスペックは以下のとおり。
マシン名 | NEC Express 5800/110Ge |
---|---|
CPU | DualCore Pentium E5300 |
Memory | ECC付512MB×3 計1.5GB |
HDD | SATA80GB |
OS | Ubuntu 8.10 Desktop |
このマシンにIDE接続の80GBと40GBのHDDを接続してLVMにて1つの論理ボリュームとして設定してマウントします。
最近のマシンはIDEインターフェースが一つしかなく2台のIDE機器しか接続できません。ところがこのマシンはDVDドライブがIDE接続となっており残り一台しかIDE機器が接続できません。とりあえず一台でも良いかと思ったのですがケーブルの長さの関係でDVDにつながっているケーブルにHDDをつなぐ事もできません。
”そういえば以前PCIに挿すIDEインターフェースカードを購入したなあ”と思い出して探したところカードを発見することができました。このカードには2つのIDEソケットがついておりパフォーマンスを考えてそれぞれに一台づつHDDを接続しました。この状態で起動したところOSから/dev/sdbと/dev/sdcとして無事認識されました。
LVMはデフォルトではインストールされていないみたいだったので、LVM関連のパッケージをインストールしました。必要なのは次のパッケージです。
lvm2
またなんとなく目についた次のLVM関連のGUIツールもインストールしました。
system-config-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を取り外す事も可能です。その他の機能としてある瞬間の論理ボリュームの内容をスナップショットとして保持することができるので一貫性のあるバックアップをとることも可能です。いろいろ使い勝手があるので今後はどんどん活用していきたいものです。