WorldCraft wiki

LVM(Logical Volume Manager)の概要

複数のハードディスクやパーティションにまたがった記憶領域を一つの仮想的なディスクとして 扱う。
その仮想領域を任意の大きさにパーティションする事で、好きな大きさのディスクに切り取って利用する。

イメージは (複数または単数ディスクを)細かく刻んで → 一つにまとめて → 必要な大きさでもう一度切り分ける
lvm資料1.jpg

LVM使用例

本項目では,VertualBox?上で仮想ディスクを4つ追加しLVMを利用してそれらをまとめて1つの論理ボリュームグループを作成し、複数の論理ボリュームを作成する

それぞれ /dev/sdb (20GB), /dev/sdc (20GB), /dev/sdd (30GB), /dev/sde(30GB) を追加し1つの論理ボリュームグループ(約100GB)にし,3つの論理ボリューム(10,40,50GB)を作成する事を目指す

1.Vertual Boxを起動し、ハードディスクを追加する

VB起動→仮想マシン選択→設定→ストレージ→SATAコントローラのPortCountを増やす→ハードディスクの追加→vhd選択→dynamicaly選択
lvm資料2.jpg

OSを起動すると, /dev/sdb /dev/sdc /dev/sdd /dev/sde ….と追加されている(fdisk -l で確認)

2.fdiskコマンドを使用し、LVM用のパーティションを切る

まずは /dev/sdb のパーティションを切る

[root@lvm ~]# fdisk /dev/sdb 
コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p (←追加はp)
領域番号 (1-4): 1 (←基本的に1 既にパーティションがきられている場合は2とか3)
最初 シリンダ (1-2610, default 1): 1 (←パーティションを切るスタート位置 基本的に1)
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-2610, default 2610): 2610 (←パーティションを切る終端位置 任意) 

以上で新規パーティションが作成された

コマンド (m でヘルプ): p 

でも確認ができる
次にこのパーティションのタイプをLinuxからLinux LVMに変更する

コマンド (m でヘルプ): t
Selected partition 1 (←さっき作成したパーティションの番号)
16進数コード (L コマンドでコードリスト表示): 8e (Linux LVMにする場合は 8e)
領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました

以上で作成したパーティションを Linux LVMに変更できた
コマンドPでも以下のように確認できる

コマンド (m でヘルプ): p

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  8e  Linux LVM

最後に保存して終了する

コマンド (m でヘルプ): w
領域テーブルは交換されました!

同様の作業を /dev/sdc /dev/sdd /dev/sde についても行う すべてのディスクのパーティションを作成できたら

fdisk -l

で状況を確認できる

[root@lvm ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1044     8281507+  8e  Linux LVM

Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  8e  Linux LVM

Disk /dev/sdc: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdc1               1        2610    20964793+  8e  Linux LVM

Disk /dev/sdd: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdd1               1        3916    31455238+  8e  Linux LVM

Disk /dev/sde: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sde1               1        3916    31455238+  8e  Linux LVM

3.PV(物理ボリューム)を作成する

前回作成したパーティションを物理エクステントという最小の単位で細切れにする

pvcreateコマンドを使ってPV(物理ボリューム)を作成する

[root@lvm ~]# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created
[root@lvm ~]# pvcreate /dev/sdc1 
  Physical volume "/dev/sdc1" successfully created
[root@lvm ~]# pvcreate /dev/sdd1 
  Physical volume "/dev/sdd1" successfully created
[root@lvm ~]# pvcreate /dev/sde1 
  Physical volume "/dev/sde1" successfully created

pvdisplay -C で正しく作成されているか確認

[root@lvm ~]# pvdisplay -C
  PV         VG         Fmt  Attr PSize  PFree 
  /dev/sda2  VolGroup00 lvm2 a-    7.88G     0 
  /dev/sdb1             lvm2 a-   19.99G 19.99G
  /dev/sdc1             lvm2 a-   19.99G 19.99G
  /dev/sdd1             lvm2 a-   30.00G 30.00G
  /dev/sde1             lvm2 a-   30.00G 30.00G

4.VG(ボリュームグループ)を作成する

前回作成したPV(物理ボリューム)を一つにまとめる

vgcreateコマンドを使用してVG(ボリュームグループ)を作成する
vgcreateの使用方法

vgcreate -s 4M VGNAME /dev/sda1 /dev/sdb1 /dev/sdc1 .....

VGNAME:作成されるVG(ボリュームグループの名前)
-s 4M:細切れにする大きさ,指定しない場合は4M. VG(ボリュームグループ)作成後はこの大きさを最小単位として大きくしたり、小さくしたりできる
           またこのサイズによって、作成できるVGの大きさも変わる
           4Mの場合最大で256GB迄のサイズのVGしか作成できない
/dev/sdb1 /dev/sdc1/ .... : VG(ボリュームグループ)にまとめるPV(物理ボリューム)

vgcreateを使用し、先ほど作成したPV(物理ボリューム)を1つにまとめる

[root@lvm ~]# vgcreate NewVG /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 
 Volume group "NewVG" successfully created

vgdisplayで確認

[root@lvm ~]# vgdisplay -C
  VG         #PV #LV #SN Attr   VSize  VFree 
  NewVG        4   0   0 wz--n- 99.98G 99.98G
  VolGroup00   1   2   0 wz--n-  7.88G     0 

5.LV(論理ボリューム)を作成する

lvcreateコマンドを使用してVG(ボリュームグループ)にまとめたものから任意の大きさのLV(論理ボリューム)を作成する lvcreateの使用方法

lvcreate -L 20G -n LVNAME VGNAME

-L 20G : 作成するLV(論理ボリューム)の大きさ
LVNAME : 作成するLV(論理ボリューム)の名前
VGNAME : LV(論理ボリューム)を作成するVG(ボリュームグループ)の名前

lvcreateを使用して,先ほど作成したVGからLVを作成する

[root@lvm ~]# lvcreate -L 10GB -n LV10GB NewVG
  Logical volume "LV10GB" created
[root@lvm ~]# lvcreate -L 50GB -n LV50GB NewVG
  Logical volume "LV50GB" created
[root@lvm ~]# lvcreate -l 100%FREE -n LV40GB NewVG
  Logical volume "LV40GB" created

最後の指定はVGに残った容量をすべてLV40GBに配置するという意味
lvdisplayで確認 [root@lvm ~]# lvdisplay -C

 LV       VG         Attr   LSize  Origin Snap%  Move Log Copy%  Convert
 LV10GB   NewVG      -wi-a- 10.00G                                      
 LV40GB   NewVG      -wi-a- 39.98G                                      
 LV50GB   NewVG      -wi-a- 50.00G                                      
 LogVol00 VolGroup00 -wi-ao  3.97G                                      
 LogVol01 VolGroup00 -wi-ao  3.91G

6.ファイルシステム作成

作成したLV(論理ボリューム)にファイルシステムを作成する

[root@lvm ~]# mkfs -t ext3 /dev/NewVG/LV10GB
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

他LV50GB,LV40GBも同様にファイルシステム作成

7.作成したファイルシステムをマウントする

[root@lvm ~]# mkdir /LV10GB /LV50GB /LV40GB
[root@lvm ~]# mount /dev/NewVG/LV10GB /LV10GB/
[root@lvm ~]# mount /dev/NewVG/LV50GB /LV50GB/
[root@lvm ~]# mount /dev/NewVG/LV40GB /LV40GB/

最後にdfコマンドで確認

 [root@lvm ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol00
                      3.9G  2.1G  1.6G  57% /
/dev/sda1              99M   13M   82M  14% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
/dev/mapper/NewVG-LV10GB
                      9.9G  151M  9.2G   2% /LV10GB
/dev/mapper/NewVG-LV50GB
                       50G  180M   47G   1% /LV50GB
/dev/mapper/NewVG-LV40GB
                       40G  177M   38G   1% /LV40GB

8.起動時に自動でマウントするように設定する /etc/fstabに以下を追記

/dev/NewVG/LV10GB   /LV10GB/              ext3     defaults       1  1
/dev/NewVG/LV50GB   /LV50GB/              ext3     defaults       1  1   
/dev/NewVG/LV40GB   /LV40GB/              ext3     defaults       1  1

GUIを使用したLVMの管理について

LV(論理ボリューム)の作成、削除、拡大縮小が行える

0.インストール&起動

インストール

[root@lvm ~]#  yum install system-config-lvm

起動

[root@lvm ~]# system-config-lvm &

1.追加したHDDの初期化

GUIツールを使うと追加したHDDをタイプLinux LVMのパーティションで切る事ができる
しかし、HDDの一部分だけを切ったりする事はできず、HDD丸ごと1つをLinux LVMのパーティションで切る事になる
一度に物理ボリュームまで作成している模様
手順は以下の画像の通り

lvm資料3.jpg

2.ボリュームグループの作成

割当られていないボリュームに先ほど初期化したディスクが追加されている
新しいボリュームグループの作成方法は画像の通り

lvm資料4.jpg

3論理ボリュームの作成

ボリュームグループに先ほど作成したボリュームグループが追加されている
新しい論理ボリュームの作成は画像の通り

lvm資料5.jpg

マウントポイントはなければ自動で作成してくれる親切設計

4.作成した論理ボリュームの編集

作成した論理ボリュームの大きさを変えたり、マウント先を変えたりすることができる

lvm資料6.jpg

5.その他

スナップショットやミラーリングなど便利な機能が多そう
結論としてはコマンド使うよりGUI使った方が便利そう

[番外編]スナップショット機能

概要

LV(論理ボリューム)単位でスナップショットをとる事が可能
スナップショットの作成先は同じVG(ボリュームグループ)内
元のファイルシステムが更新されたときに、更新される前のデータを保持する事で,
スナップショット作成時のイメージを保持するようになっている

結論

スナップショットを作成しても戻す手段が無い
また,作成後ファイルの置き換わりが激しいとスナップショットの容量が増大し,スナップショットLVが壊れる
そのため,本来のようなスナップショットをバックアップとして利用する事ができない
あるとすれば,以下のような使用の仕方が考えられる?
下記の手順を踏めば、直接 稼働中のシステムのバックアップをとるよりは安全かもしれない

現行システムが稼働しているLVのスナップショット作成
↓
dumpコマンドでスナップショットをフルバックアップ
↓
作成したスナップショット削除 (重要!削除しないと、スナップショットファイルに容量がきまっているため、そのうち溢れる)
(↓)
必要ならばresotreコマンドで復元

手順

スナップショット作成手順


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS