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 プロジェクト <http://www.linux.or.jp/JF/>
翻訳者: 井上 秀 <inoue@mxg.nes.nec.co.jp>
校正: 芳賀 靖史さん <yasufumi.haga@nifty.com>
      小林 雅典さん <zap03216@nifty.ne.jp>
