Heinz Mauelshagen の LVM (Logical Volume Manager) howto。 1999年 10月 2日 要約: ----- LVM は一種の仮想ディスクや仮想パーティションといった概念を Linux オペレーティングシステムに追加するものです。 この LVM によって、物理的な周辺機器とカーネルに実装されている I/O インタフェースとの間にレイヤを追加します。 LVM を使うと、物理エクステント (Physical Extent、PE) と呼ばれるユニットを アロケートすることにより、いくつかのディスクパーティション、ディスク全体、 または多様なデバイスに至るまでをまとめ、 ストレージプールを構成できるようになります。 ここで、ストレージプールをボリュームグループ (Volume Group、VG)、 PE のアロケート単位となるディスクパーティションやディスク全体を 物理ボリューム (Physical Volume、PV) と呼びます。 このボリュームグループは仮想ディスクとして考えることができます。 下記のシナリオをご覧ください。 この VG のうち、いくつかのまたはすべての PE は、論理エクステント (Logical Extent、LE) という単位で論理ボリューム (Logical Volume、LV) にアロケートすることができます。 各 LE は対応する PE にマップされます。 LE と PE は同じサイズになります。 論理ボリュームは一種の仮想パーティションです。 よく使われている /dev/sd[a-z]* や /dev/hd[a-z]* などと同様に、 LV は /dev/ボリュームグループ名/論理ボリューム名 という名前の デバイススペシャルファイルを介して使用することができます。 しかしこの機能が何よりも素晴らしいのは、VG *や* LV を実行中に拡張したり 縮小したりすることができることなのです! そう… 例えば、LV の残容量があまりにも小さくなってきて、この LV の属している VG がいっぱいになってしまった場合、その VG に他の PV を追加して LV を単純に拡張することができます。 ある LV を縮小したり削除すると、同じ VG の他の LV でその容量を使用することが できます。 上のシナリオは以下のようになります - /------------------------------------------\ | /--PV1---\ VG 1 /--PVn---\ | | |-VGDA---| |-VGDA-- | | | |PE1PE2..| |PE1PE2..| | | | | ...... | | | | | | | | | | | /-----------------------\ | | | | \-------LV 1------------/ | | | | ..PEn| | ..PEn| | | \--------/ \--------/ | \------------------------------------------/ PV 1 はサイズ 3GB の /dev/sdc1 かも知れません PV n はサイズ 4GB の /dev/sde1 かも知れません VG 1 は test_vg かも知れません LV 1 は /dev/test_vg/test_lv かも知れません VGDA は LVM メタデータを保有しているボリュームグループ識別子エリアです PE1 から PEn はディスク (パーティション) 毎の物理エクステントの番号です インストールのステップについてはファイル INSTALL および insmod(1)/modprobe(1) を、もしカーネルに LVM を組み込んでいないのであれば、 論理ボリュームマネージャのモジュールをロードするために kmod/kerneld(8) をそれぞれ参照してください。 上記のシナリオのためのコンフィグレーションのステップは以下の通りです - 1. /dev/sdc1 および /dev/sde1 のパーティションのシステム ID を 0x8e に設定します。 2. "pvcreate /dev/sd[ce]1" を実行 テストの目的であれば、ひとつのディスク上に 2 つ以上のパーティションを 使用することができます。通常は、ストライプされた LV を構成した場合に 著しくパフォーマンスが劣化するため、ひとつのディスク上に 2 つ以上の パーティションを使用すべきではありません。 3. ふたつのパーティションの合計容量を持つ "test_vg" という名前の新しい VG を作成するため、"vgcreate test_vg /dev/sd[ce]1" を実行する。 vgcreate は、次のステップで LV を作成できるようにするため、 新しいボリュームグループについてもアクティブにします (カーネル内の LVM ドライバ内にメタデータを転送します)。 4. "test_lv" という名前の 1500MB のリニアな LV を得るために "lvcreate -L1500 -ntest_lv test_vg" を実行します。ブロックデバイス スペシャルファイル名は "/dev/test_vg/test_lv"。 5. 例えば "mke2fs /dev/test_vg/test_lv" とひとつの LV 内に ファイルシステムを作成し、マウントします。 6. 相対的なサイズの指定によって /dev/test_vg/test_lv を 1600MB まで拡張するには "lvextend -L+100 /dev/test_vg/test_lv" または絶対的なサイズの指定では "lvextend -L1600 /dev/test_vg/test_lv" となります。 7. 相対的なサイズの指定によって /dev/test_vg/test_lv を 900MB まで縮小するには "lvreduce -l-700 /dev/test_vg/test_lv" または絶対的なサイズの指定では "lvreduce -l900 /dev/test_vg/test_lv" となります。 8. VG を無効化して名前の変更を行うには "vgchange -an test_vg" # オープン *されていない* VG のみ無効化可能! "vgrename test_vg whatever" そして "vgchange -ay whatever" として再度アクティブにします。 9. LV をクローズして名前の変更を行うには "lvchange -an /dev/whatever/test_lv" # クローズされた LV のみ無効化可能 "lvrename /dev/whatever/test_lv /dev/whatever/whatvolume" または "lvrename whatever test_lv whatvolume" そして "lvchange -ay /dev/whatever/whatvolume" として再度アクティブにします。 10. Ted Tso 氏または Powerquest 社の resize2fs を持っているのであれば、 "e2fsadm -L+100 /dev/test_vg/another_test_lv" によってデータを破壊することなく LV 内に存在する ext2 のファイルシステムを リサイズすることができます。 ====================================================================== 翻訳団体: JF プロジェクト 翻訳者: 井上 秀 校正: 芳賀 靖史さん 小林 雅典さん