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