では、脅かし文句はこれぐらいにしておきましょう。しかし LVM には理解しておか なければいけない専門用語がたくさんあります。理解しておかないと、ファイル システムを危険にさらすはめになってしまうかもしれません。
まずは基礎のあたりからはじめます。
「物理」という言葉の意味を複雑に考えないでください。単にハードディスク もしくはパーティションを仮定しています。たとえば、/dev/hda、/dev/hda6、 /dev/sda のような。ブロック・デバイスにある連続したブロックをいくらでも 物理ボリュームに割り当てられます。その物理ボリュームとは…
物理ボリュームとは管理データをいくつか物理媒体に付加した物理媒体そのもの を表します。 これを付加すると、LVM からは物理エクステントを入れる器に見えます。その物理 エクステントとは…
物理エクステントは、いかにも大きいブロックのように見え、通常は数 MB の大きさ になります。 物理エクステントはボリューム・グループに配置されます。そのボリューム・ グループ とは…
ボリューム・グループは、いくつかの物理エクステント(複数の物理ボリュームや ハード・ドライブから成る)から構成されます。ボリューム・グループを多数の ハード・ドライブ(たとえば /dev/hda や /dev/sda)から構成されているものと 理解したくなるかもしれませんが、より正しくは、ボリューム・グループは複数の 物理エクステントから構成され、物理エクステントの機能はハード・ドライブに よって提供されているということになります。
>このボリューム・グループを元にして、物理エクステントは論理ボリュームに 割り当てられます。その論理ボリュームとは…
そうです、やっとたどり着きました。解説の最終目標はこの論理ボリュームなのです。 情報を保存するのは、まさにここなのです。論理ボリュームは、従来のパーティション と同じ意味になります。
通常のパーティション上で作成するのと同じように、論理ボリューム上でファイル システムを構築するのが普通です。そのファイルシステムとは…
ファイルシステムは好みのものを何でも選べます。標準の ext2 や ReiserFS、NWFS、 XFS、JFX、NTFS 等どれでも。Linux のカーネルにとっては、普通のパーティション と論理ボリュームには何も違いはありません。
訳註:各種ファイルシステムについては、 Filesystems-HOWTO の日本語訳をご覧ください。
ASCII 文字列による創作を試みることで、このしくみを図解してみましょう。
物理ボリュームは、物理エクステントを含みます。 +------[ 物理ボリューム ]------+ | PE | PE | PE | PE | PE | PE | +------------------------------+ ボリューム・グループは、2 つの物理ボリューム(PV)を含み、6 つの物理エクス テントから構成されます。 +------[ ボリューム・グループ ]---------+ | +--[PV]--------+ +--[PV]---------+ | | | PE | PE | PE | | PE | PE | PE | | | +--------------+ +---------------+ | +---------------------------------------+ もっと広げてみると、こうなります。 +------[ ボリューム・グループ ]---------+ | +--[PV]--------+ +--[PV]---------+ | | | PE | PE | PE | | PE | PE | PE | | | +--+---+---+---+ +-+----+----+---+ | | | | | +-----/ | | | | | | | | | | | | +-+---+---+-+ +----+----+--+ | | | 論理 | | 論理 | | | | ボリューム| | ボリューム | | | | | | | | | | /home | | /var | | | +-----------+ +------------+ | +---------------------------------------+
この図では、2 つのファイルシステムがあり、2 つのディスクにまたがっています。 /home ファイルシステムは 4 つ、/var は 2 つの物理エクステントから構成されて います。
bert hubert 氏は LVM をより視覚的に表示する ツール を作成しています。 スクリーンショット が見られます。私の ASCII 文字創作品より見栄えがします。
そうなんです。LVM はとても頭の中で消化しづらい考えなので(「我々はボーグの LVM…」)、ここでは論理ボリュームを作成する例を注釈をつけながら進めたいと思 います。 この例をコンソールにそのまま入力「しないで」ください。データを壊してしまう 「恐れ」があります。たとえ手持ちのコンピュータが、/dev/hda3 や /dev/hdb2 を 使用していなくてもです。
訳註:ボーグ(Borg)とは、スタートレック(ネクスト・ジェネレーション) に登場するサイボーグ種族のことで、あらゆるものを非情な手段で自分達の中に取り 込む種族のことです。ハッカーたちの間では、その貪欲に何物をも自分に取り込む 姿から、 Microsoft にたとえる場合があります。
納得いかなければ、上記の ASCII文字で書かれた図をご覧ください。
まず /dev/hda3 と /dev/hdb2 のパーティションのタイプを 0x8e にしてください。 これが「Linux LVM」となります。ただし、お手持ちの fdisk のバージョンによって は、このタイプを認識できずに「Unknown」と表示されるかもしれません。
# fdisk /dev/hda
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 2 16033+ 83 Linux
/dev/hda2 3 600 4803435 83 Linux
/dev/hda3 601 607 56227+ 83 Linux
/dev/hda4 608 614 56227+ 83 Linux
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Command (m for help): p
Disk /dev/hda: 255 heads, 63 sectors, 623 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 2 16033+ 83 Linux
/dev/hda2 3 600 4803435 83 Linux
/dev/hda3 601 607 56227+ 8e Unknown
/dev/hda4 608 614 56227+ 83 Linux
Command (m for help): w
/dev/hdb2 に対しても同様な操作をしてみますが、ここではその結果を表示しません。 この操作は、構成を失った場合に LVM を再構築するのに必要です。
必ずしも全てのコンピュータではありませんが、ここでリブートが必要になる場合 もあります。次の例がうまくいかないようなら、リブートしてみてください。
下記のようにすれば、物理ボリュームが作成できます。
# pvcreate /dev/hda3
pvcreate -- physical volume "/dev/hda3" successfully created
# pvcreate /dev/hdb2
pvcreate -- physical volume "/dev/hdb2" successfully created
では、2 つの物理ボリュームを「test」というボリューム・グループに追加して みます。
# vgcreate test /dev/hdb2 /dev/hda3
vgcreate -- INFO: using default physical extent size 4 MB
vgcreate -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate -- doing automatic backup of volume group "test"
vgcreate -- volume group "test" successfully created and activated
これで未使用のボリューム・グループが 1 つできあがりました。ちょっと調べて みましょう。
# vgdisplay -v test
--- Volume group ---
VG Name test
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 0
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 184 MB
PE Size 4 MB
Total PE 46
Alloc PE / Size 0 / 0
Free PE / Size 46 / 184 MB
--- No logical volumes defined in test ---
--- Physical volumes ---
PV Name (#) /dev/hda3 (2)
PV Status available / allocatable
Total PE / Free PE 13 / 13
PV Name (#) /dev/hdb2 (1)
PV Status available / allocatable
Total PE / Free PE 33 / 33
情報がずらずら並んでいますが、今のところは大部分を理解できないはずです。
まだ論理ボリュームを定義していませんから、これを修正する必要があります。
50 MB の「HOWTO」というボリュームを「test」ボリューム・グループに作ってみ
ます。
# lvcreate -L 50M -n HOWTO test
lvcreate -- rounding up size to physical extent boundary "52 MB"
lvcreate -- doing automatic backup of "test"
lvcreate -- logical volume "/dev/test/HOWTO" successfully created
これで、あと少しというところまできましたので、次はファイルシステムを作成 しましょう。
# mke2fs /dev/test/HOWTO
mke2fs 1.18, 11-Nov-1999 for EXT2 FS 0.5b, 95/08/09
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
13328 inodes, 53248 blocks
2662 blocks (5.00%) reserved for the super user
First data block=1
7 block groups
8192 blocks per group, 8192 fragments per group
1904 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
# mount /dev/test/HOWTO /mnt
# ls /mnt
lost+found
これで完了です! 作成したボリューム・グループを見直してみましょう。もう これでボリューム・グループをデータで埋めつくせるようになっているはずです から。
# vgdisplay test -v
--- Volume group ---
VG Name test
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 1
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 184 MB
PE Size 4 MB
Total PE 46
Alloc PE / Size 13 / 52 MB
Free PE / Size 33 / 132 MB
--- Logical volume ---
LV Name /dev/test/HOWTO
VG Name test
LV Write Access read/write
LV Status available
LV # 1
# open 1
LV Size 52 MB
Current LE 13
Allocated LE 13
Allocation next free
Read ahead sectors 120
Block device 58:0
--- Physical volumes ---
PV Name (#) /dev/hda3 (2)
PV Status available / allocatable
Total PE / Free PE 13 / 13
PV Name (#) /dev/hdb2 (1)
PV Status available / allocatable
Total PE / Free PE 33 / 20
そう、/dev/hda3 はまったく使用していませんが、/dev/hdb2 は 13 個の 物理エクステントを使用しています。
まともなオペレーティング・システムがそうであるように、Linux は システム構成 が 2 つに別れています。それは、カーネル空間とユーザ空間です。ユーザ空間は、 ユーザランドと呼ばれることもあります。「ユーザランド」は、人気のあるテーマ・ パークを表す意味でも使われています。
論理ボリュームに関連した新規作成や修正作業は、ユーザ空間で行われ、その結果 をカーネルとやりとりします。ボリューム・グループや論理ボリュームについての 情報がカーネルに渡ると、「アクティブ」と呼ばれる状態になります。修正作業の 中には、ある要素がアクティブな状態であることが必要だったり、インアクティブ な状態が必要なものもあります。