[[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]
スナップショット作成手順

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS