次のページ 前のページ 目次へ

3. 基本的な原則

では、脅かし文句はこれぐらいにしておきましょう。しかし LVM には理解しておか なければいけない専門用語がたくさんあります。理解しておかないと、ファイル システムを危険にさらすはめになってしまうかもしれません。

まずは基礎のあたりからはじめます。

物理媒体

「物理」という言葉の意味を複雑に考えないでください。単にハードディスク もしくはパーティションを仮定しています。たとえば、/dev/hda、/dev/hda6、 /dev/sda のような。ブロック・デバイスにある連続したブロックをいくらでも 物理ボリュームに割り当てられます。その物理ボリュームとは…

物理ボリューム (PV)

物理ボリュームとは管理データをいくつか物理媒体に付加した物理媒体そのもの を表します。 これを付加すると、LVM からは物理エクステントを入れる器に見えます。その物理 エクステントとは…

物理エクステント(PE)

物理エクステントは、いかにも大きいブロックのように見え、通常は数 MB の大きさ になります。 物理エクステントはボリューム・グループに配置されます。そのボリューム・ グループ とは…

ボリューム・グループ (VG)

ボリューム・グループは、いくつかの物理エクステント(複数の物理ボリュームや ハード・ドライブから成る)から構成されます。ボリューム・グループを多数の ハード・ドライブ(たとえば /dev/hda や /dev/sda)から構成されているものと 理解したくなるかもしれませんが、より正しくは、ボリューム・グループは複数の 物理エクステントから構成され、物理エクステントの機能はハード・ドライブに よって提供されているということになります。

>このボリューム・グループを元にして、物理エクステントは論理ボリュームに 割り当てられます。その論理ボリュームとは…

論理ボリューム (LV)

そうです、やっとたどり着きました。解説の最終目標はこの論理ボリュームなのです。 情報を保存するのは、まさにここなのです。論理ボリュームは、従来のパーティション と同じ意味になります。

通常のパーティション上で作成するのと同じように、論理ボリューム上でファイル システムを構築するのが普通です。そのファイルシステムとは…

ファイルシステム

ファイルシステムは好みのものを何でも選べます。標準の 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 文字創作品より見栄えがします。

3.1 実例を見ながらの解説

そうなんです。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 個の 物理エクステントを使用しています。

3.2 アクティブとインアクティブ - カーネル空間とユーザ空間

まともなオペレーティング・システムがそうであるように、Linux は システム構成 が 2 つに別れています。それは、カーネル空間とユーザ空間です。ユーザ空間は、 ユーザランドと呼ばれることもあります。「ユーザランド」は、人気のあるテーマ・ パークを表す意味でも使われています。

論理ボリュームに関連した新規作成や修正作業は、ユーザ空間で行われ、その結果 をカーネルとやりとりします。ボリューム・グループや論理ボリュームについての 情報がカーネルに渡ると、「アクティブ」と呼ばれる状態になります。修正作業の 中には、ある要素がアクティブな状態であることが必要だったり、インアクティブ な状態が必要なものもあります。


次のページ 前のページ 目次へ