2章 LVM操作 基本編

2.1 前提条件

 記事中のコマンドは、図2のような構成を前提としています。

  • 第1パーティション
  •  100MBくらいのLinuxパーティションです。これを「/boot」とします。

  • 第2パーティション
  •  2GBくらいのLinux LVMパーティションです。これをシステム用VG「vg01」とします。この中に「root_lv(/)」と「swap_lv(swap)」があり、その中にFedora Coreがインストールされているとします。

  • 第3パーティション
  •  4GBくらいのLinux LVMパーティションです。これをテスト用VG「testvg」とします。テスト用VG「testvg」は記事中で作成するため、事前に作成されなくて結構です。

 大切なのは操作の流れを理解することですので、まったく同じ環境でなくても問題はありません。

図2 本稿の前提環境
図2 本稿の前提環境

2.2 LVMパーティションを作成する

 まず、Linux LVMパーティションを作成します。
 Linux上でLVMを利用するには、空きディスクか、Linux LVMパーティションが少なくても1つ必要です。パーティション番号は、前述のとおり16進数で8eです。Linux LVMパーティションの作成には、fdiskや、cfdiskなどパーティション操作が行なえるツールを使います。

2.3 fdiskコマンドでLVMパーティションを作成する

 今回は、fdiskを使ってLinux LVMパーティションする流れをご紹介します。図3をご覧下さい。
 まず、「n」コマンドで新規パーティションを作成し、「t」コマンドでパーティションタイプを変更します。
 パーティションを作成した後、確認するために「p」コマンドを実行します。問題がなければ、「w」コマンドでパーティションテーブルを保存します。
 「カーネルはまだ古いテーブルを使っています。新しいテーブルは次回リブート時に使えるようになるでしょう。」というメッセージが表示された場合、再起動するかpartprobeコマンドを実行します。
 partprobeコマンドは、Fedora CoreをはじめとするRed Hat系ディストリビューションに含まれるコマンドです。ディスクからパーティションテーブルを読み込み、カーネル内のパーティションテーブルに反映することができます。

図3 LVMパーティションを作成

# fdisk /dev/hda
コマンド (m でヘルプ): n
	
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 3
	
領域番号 (1-4): 3
最初 シリンダ (4417-19590, default 4417):
Using default value 4417
終点 シリンダ または +サイズ または +サイズM または +サイズK (4417-19590, default 19590):
Using default value 19590
	
コマンド (m でヘルプ): t
Partition number (1-4): 3
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました
	
コマンド (m でヘルプ): p
	
Disk /dev/hda: 10.1 GB, 10110320640 bytes
16 heads, 63 sectors/track, 19590 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
	
デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         249      125464+  83  Linux
/dev/hda2             250        4416     2100168   8e  Linux LVM
/dev/hda3            4417       19590     7647696   8e  Linux LVM
	
Command (m for help): w
領域テーブルは交換されました!
	
ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。
	
警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

2.4 PVを作成する

 Linux LVMパーティションを作成した後に、PVを作成します。
 PVを作成するには、pvcreateというコマンドを使います。(図4) このコマンドを実行することにより、LVMパーティションが区画整備されます。PVがうまく作成されたか確認するには、pvdisplayコマンドを実行します。

図4 PVを作成

# pvcreate /dev/hda3
  Physical volume \"/dev/hda3\" successfully created]
	
# pvdisplay -C
  PV         VG     Fmt  Attr PSize PFree
  /dev/hda2  vg01   lvm2 a-   2.00G    0
  /dev/hda3         lvm2 --   7.29G 7.29G
	
# pvdisplay /dev/hda3
  --- Physical volume ---
  PV Name               /dev/hda3
  VG Name
  PV Size               7.29 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               1RA8bb-JHjJ-KfAO-JobK-QKAg-aYp4-eAdGJ0

2.5 VGを作成する

 PVの作成を行った後、PVをまとめるためにVGを作成します。
 VGを作成するには、vgcreateというコマンドを使います。(図5) このコマンドを実行することによりVGが定義され、同時にPVの中にPEが作成されます。
 今回はPEサイズ32MBで作成します。VGが作成されたことを確認するには、vgdisplayコマンドを実行します。

図5 VGを作成

# vgcreate -s 32m testvg /dev/hda3
  Volume group \"testvg\" successfully created
	
# vgdisplay -C
  VG     #PV #LV #SN Attr  VSize VFree
  testvg   1   0   0 wz--n 7.28G 7.28G
  vg01     1   2   0 wz--n 2.00G    0
	
# vgdisplay testvg
  --- Volume group ---
  VG Name               testvg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.28 GB
  PE Size               32.00 MB
  Total PE              233
  Alloc PE / Size       0 / 0
  Free  PE / Size       233 / 7.28 GB
  VG UUID               Sqfqv5-i3s3-CnvX-MZW3-bl9M-bHQA-3WnD1B

2.6 LVを作成する

 VGの作成が終われば、もうあと少しです。次に実際にLVを作成します。
 LVを作成するには、lvcreateというコマンドを使います。(図6) 今回はテスト用VG「testvg」上に1GBの「opt_lv」というLVを作成します。LVがうまく作成できたか確認するには、lvdisplayコマンドを実行します。

図6 LVを作成

# lvcreate -L 1G -n opt_lv testvg
  Logical volume \"opt_lv\" created
	
# lvdisplay -C
  LV      VG     Attr   LSize   Origin Snap%  Move Copy%
  opt_lv  testvg -wi-a-   1.00G
  root_lv vg01   -wi-ao   1.50G
  swap_lv vg01   -wi-ao 512.00M
	
# lvdisplay /dev/testvg/opt_lv
  --- Logical volume ---
  LV Name                /dev/testvg/opt_lv
  VG Name                testvg
  LV UUID                jsyfKs-Ri3q-cPdt-pTcI-BAX3-chrG-hGP5zl
  LV Write Access        read/write
  LV Status              available
  # open                 0
	
  LV Size                1.00 GB
  Current LE             32
  Segments               1
  Allocation             inherit
  Read ahead sectors     0
  Block device           253:2

2.7 ファイルシステムを作成する

 LVを作成した後、その中にファイルシステムを作ります。
 ファイルシステムを作成するには、mkfsコマンドを使います。(図7)
 最近ではファイルシステムの種類ごとにmkfs.ext2、mkfs.ext3、mkfs.xfsなどといったコマンドも用意されています。今回は、XFSでフォーマットします。

図7 ファイルシステムを作成

# mkfs.xfs -f /dev/testvg/opt_lv
meta-data=/dev/testvg/opt_lv     isize=256    agcount=8, agsize=32768 blks
         =                       sectsz=512
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

2.8 ファイルシステムをマウントする

 ファイルシステムを作りましたので、ようやくマウントすることができます。
 従来のパーティション管理と同じく、mountコマンドを実行します。きちんとマウントされているか、dfコマンドで確認します。(図8)

図8 ファイルシステムをマウント

# mount /dev/testvg/opt_lv /opt
	
# df -h /opt/
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/testvg-opt_lv
                     1014M  144K 1014M   1% /opt

2.9 2章のまとめ

 いかがだったでしょうか?この「基本編」だけでは、まだLVMの便利さが体感できないかもしれません。
 各種のcreate系、display系コマンドを覚えて頂ければ、この章の目的は達成です。
 何度か環境を壊すくらい実行すれば、コマンドも覚えてしまうはず。次の章ではLVMを活用する方法をご紹介します。Linux生活が便利になるかもしれません。

ナビゲーション

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