[[WorldCraft wiki]]
[[VirtualBoxでLVMするときの呪文]]
*LVM(Logical Volume Manager)の概要 [#hfab59da]
複数のハードディスクやパーティションにまたがった記憶領域を一つの仮想的なディスクとして
扱う。~
その仮想領域を任意の大きさにパーティションする事で、好きな大きさのディスクに切り取って利用する。
イメージは (複数または単数ディスクを)細かく刻んで → 一つにまとめて → 必要な大きさでもう一度切り分ける
#ref(lvm資料1.jpg)
*LVM使用例 [#v12c3438]
本項目では,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を起動し、ハードディスクを追加する [#b209c17e]
VB起動→仮想マシン選択→設定→ストレージ→SATAコントローラのPortCountを増やす→ハードディスクの追加→vhd選択→dynamicaly選択
#ref(lvm資料2.jpg)
OSを起動すると,
/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
….と追加されている(fdisk -l で確認)
**2.fdiskコマンドを使用し、LVM用のパーティションを切る [#ybb421df]
まずは /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(物理ボリューム)を作成する [#wef954de]
前回作成したパーティションを物理エクステントという最小の単位で細切れにする
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(ボリュームグループ)を作成する [#u1c40a67]
前回作成した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(論理ボリューム)を作成する [#u1c40a67]
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.ファイルシステム作成 [#pd107b0c]
作成した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.作成したファイルシステムをマウントする [#n8522f0f]
[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の管理について [#k19979ee]
LV(論理ボリューム)の作成、削除、拡大縮小が行える~
**0.インストール&起動 [#t5384cb4]
インストール
[root@lvm ~]# yum install system-config-lvm
起動
[root@lvm ~]# system-config-lvm &
**1.追加したHDDの初期化 [#z25fa195]
GUIツールを使うと追加したHDDをタイプ''Linux LVM''のパーティションで切る事ができる~
しかし、HDDの一部分だけを切ったりする事はできず、HDD丸ごと1つを''Linux LVM''のパーティションで切る事になる~
一度に物理ボリュームまで作成している模様~
手順は以下の画像の通り
#ref(lvm資料3.jpg)
**2.ボリュームグループの作成 [#kdf368c5]
割当られていないボリュームに先ほど初期化したディスクが追加されている~
新しいボリュームグループの作成方法は画像の通り~
#ref(lvm資料4.jpg)
**3論理ボリュームの作成 [#i1af8196]
ボリュームグループに先ほど作成したボリュームグループが追加されている~
新しい論理ボリュームの作成は画像の通り
#ref(lvm資料5.jpg)
マウントポイントはなければ自動で作成してくれる親切設計
**4.作成した論理ボリュームの編集 [#t8b5c646]
作成した論理ボリュームの大きさを変えたり、マウント先を変えたりすることができる
#ref(lvm資料6.jpg)
**5.その他 [#jbe838dd]
スナップショットやミラーリングなど便利な機能が多そう~
結論としてはコマンド使うよりGUI使った方が便利そう
*[番外編]スナップショット機能 [#w0539b53]
**概要 [#jbbae9c1]
LV(論理ボリューム)単位でスナップショットをとる事が可能~
スナップショットの作成先は同じVG(ボリュームグループ)内~
元のファイルシステムが更新されたときに、更新される前のデータを保持する事で,~
スナップショット作成時のイメージを保持するようになっている~
**結論 [#y314b464]
スナップショットを作成しても戻す手段が無い~
また,作成後ファイルの置き換わりが激しいとスナップショットの容量が増大し,スナップショットLVが壊れる~
そのため,本来のようなスナップショットをバックアップとして利用する事ができない~
あるとすれば,以下のような使用の仕方が考えられる?~
下記の手順を踏めば、直接 稼働中のシステムのバックアップをとるよりは安全かもしれない
現行システムが稼働しているLVのスナップショット作成
↓
dumpコマンドでスナップショットをフルバックアップ
↓
作成したスナップショット削除 (重要!削除しないと、スナップショットファイルに容量がきまっているため、そのうち溢れる)
(↓)
必要ならばresotreコマンドで復元
**手順 [#da147a41]
スナップショット作成手順