参考にしたもの:Red Hat Enterprise Linux 6 論理ボリュームマネージャーの管理(pdf)
0.前置きとか
※ GRUB LegacyはLVM未サポート.
→LVMの中に/bootはおけない.(GRUB2の場合は可.)
GRUB LegacyでLVMを使用する場合は/bootを分割して作成し直接フォーマットすること.
#####利点
・容量の柔軟性:ファイルシステムを複数のディスクにまたがって拡張可能
・再変更可能なストレージプール
・ディスクのストライピング:2つ以上のディスクにまたがってデータをストライプする論理ボリュームの作成が可能
・スナップショット
とかいろいろ
#####物理ボリューム(PV):
・LVM論理ボーリュームように物理デバイスを使用するにはPVとして初期化する必要がある.
・初期化すると先頭にラベルが付加される.このラベルは2番目の512バイトセクタにに配置される(デフォルト)
→先頭から4セクタ以内ならいいみたい
・ラベルはデバイスをPVとして識別するもであり,これには物理ボリューム用のUUIDが含まれれる.
・LVMメタデータにはシステム上のLVMボリュームグループの詳細設定が含まれる.
→これらは同一のコピーがボリュームグループ内のすべてのPVのメタデータ領域で保持される.
#####LVMボリュームレイアウト
・PVの物理レイアウトのこと.
・LVMラベルは2セクタ目にあり,次にメタデータ領域,デバイスの使用可能領域の順に続く.
#####ボリュームグループ(VG)
・PVはVGに統合される.→論理ボーリュームに割り当てるためのディスク領域プールができる.
・割当可能なディスク領域はエクステントと呼ばれる固定サイズの単位に分割される.
→1エクステントが割当可能な最小単位.(デフォルト4MB)
→物理ボリューム内ではエクステントは物理エクステントとと呼ばれる.
・論理ボリュームは物理エクステントと同じサイズの論理エクステントを割り当て可能.
とりあえずざっくりまとまるならPV>VG>LVの3つの関係をなんとなく理解すれば作成くらいまでは
大丈夫じゃないかな、と
1.物理ボリューム(PV)の管理
#####1.1 パーティションタイプの作成
・適宜partedやfdiskを用いてパーティションを作成する←パーティションに作成する場合
※dosの場合はパーティションIDを0x8eとする必要がある
1.2.PVの作成
・パーティションを初期化する場合
# pvcreate /dev/sdb1
Physical Volume “/dev/sdb1” successfully created
・複数のデバイスを初期化する場合
# pvcreate /dev/sdb /dev/sdc /dev/sdd
1.3.ブロックデバイスの表示
・PVとして使用可能なブロックデバイスの表示
# lvmdiskscan
1.4.PVの表示
LVMの物理ボリューム情報を表示するにはpvs, pvdisplay, pvscanがある.
・pvs:1PV毎に1行ずつ表示する
# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 VolGroup00 lvm2 a-- 20.00g 20.00g
・pvdisplay:各PVの詳細情報を表示
# pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name VolGroup00
PV Size 20.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 5119
Allocated PE 0
PV UUID 85SJvt-2VGL-MoZq-KsOV-ACAV-U8zC-cwbITn
・pvscan:検出される全てのLVmブロックデバイスの表示
# pvscan
PV /dev/sdb1 VG VolGroup00 lvm2 [20.00 GiB / 20.00 GiB free]
Total: 1 [20.00 GiB] / in use: 1 [20.00 GiB] / in no VG: 0 [0 ]
※ 特定のボリュームをスキャンしないようlvm.confにフィルタを定義することが可能
→pvchangeコマンドで空き領域に物理エクステントを割り当てられないようにできるみたい
1.5.PVサイズの変更
・pvrisizeコマンドを使用することで可能.LVMが物理ボリュームを使用中でも実行可能.
1.6.PVの削除
※ 削除するPVがVGで使用している場合はvgreduceコマンドでVGからPVを取除くこと
# pvdisplay
"/dev/sdb1" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 85SJvt-2VGL-MoZq-KsOV-ACAV-U8zC-cwbITn
# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped
2.ボリュームグループ(VG)の管理
2.1.VGの作成
# pvs ← PV情報を表示
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 20.00g 20.00g
# vgcreate VG01 /dev/sdb1 ← VG01という名前のVGを作成(デバイスは複数選択可)
Volume group "VG01" successfully created
・vgcreateはデフォルトで4MBのエクステントに分割される.オプションでエクステントサイズの指定やVGに追加できるPVの数を制限することなどが可能.また,割当ポリシーに関してもオプション指定ができる.
・LVMのVGとその配下のPVは/dev/vg/lv/に配置される.
/dev///←な書式
※ 対応するPVがアクティブな場合表示される.
2.2.VGの表示
・VGではvgsとvgdisplayコマンドがある.
・vgs:1ボリュームに付き1行で表示
# vgs
VG #PV #LV #SN Attr VSize VFree
VG01 1 0 0 wz--n- 20.00g 20.00g
・vgdisplay:VGのサイズ,エクステント,PVの数などを表示
# vgdisplay ← VG名を指定することも可能
--- Volume group ---
VG Name VG01
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 20.00 GiB
PE Size 4.00 MiB
Total PE 5119
Alloc PE / Size 0 / 0
Free PE / Size 5119 / 20.00 GiB
VG UUID ot0rzm-1yCy-Yz3b-D7Df-2DFW-0dDB-7bA21I
2.3.キャッシュファイルの構築
・/etc/lvm/cache/.cacheファイル内のLVMキャッシュファイルが更新される.
システム起動時やvgcreate実行時などに自動実行されるが,手動で実行しないといけない場合がある.
→SANにディスクを追加した場合やPVとしてラベル付された新しいディスクをホットプラグする場合などに必要になる可能性があるみたい.
# vgscan
Reading all physical volumes. This may take a while...
Found volume group "VG01" using metadata type lvm2
2.4.VGからPVの削除
・VGから未使用のPVを削除するにはvgreduceを使用する.
→該当のPVがLVに使用されているかどうかを確認するにはpvdisplayコマンドを使用
# pvdisplay /dev/sdb1
--- Physical volume ---
PV Name /dev/sdb1
VG Name VG01
PV Size 20.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 5119
Free PE 5119
Allocated PE 0
PV UUID 1UVxod-Mhi0-AU3R-0SvL-nAks-FnWD-YocaTr
# vgreduce <VG名> <デバイス名> ←複数指定可
※ PVが使用されている場合pvmoveコマンドでデータを別のPVへ移行させる必要がある.
メモ:VGにPVが1つの時にvgreduceをしたら怒られた,素直にvgremoveした方がいい?
# vgreduce VG01 /dev/sdb1
Can't remove final physical volume "/dev/sdb1" from volume group "VG01"
2.5.VGのパラメータ変更
・VGに追加できるPVの最大数の指定や,VGのアクティブ化/非アクティブ化などのパラメータ変更はvgchangeコマンドで変更できる.
2.6.VGの削除
# vgremove VG01 ← VG名を指定
Volume group "VG01" successfully removed
# vgs
#
2.6.その他できること
その他VGの分割(vgsplit)や結合(vgmerge),VG名の変更(vgrename)などが可能だけど詳細は割愛
3.論理ボリューム(LV)の管理
3.1.LVの作成
・VG01というVGに2Gと3GのLVを作成する
→名前を指定しない場合自動的に「lvol+ボリューム番号」で作成される.
→また,サイズはb(byte), K(kilobyte), M(MG), G(GB)とか指定できる(デフォルトはMB)
# lvcreate -L 2G VG01
Logical volume "lvol0" created.
# lvcreate -L 3000 VG01
Logical volume "lvol1" created.
# lvcreate -L 3000 -n hoge VG01 ← VG(VG0)に3000MBのhogeというLVを作成
Logical volume "hoge" created.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
hoge VG01 -wi-a----- 2.93g ←3000=3GBではないみたい
lvol0 VG01 -wi-a----- 2.00g
lvol1 VG01 -wi-a----- 3.00g
・空き領域全てを指定する場合
# lvcreate -l 100%FREE VG01
Logical volume "lvol3" created.
※ -lオプションはその他にもVGサイズを%指定してLVサイズとすることも可能.
3.2.LVの表示
・lvs,lvdisplay,lvscanの3つ.
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
hoge VG01 -wi-a----- 2.93g
lvol0 VG01 -wi-a----- 2.00g
lvol1 VG01 -wi-a----- 3.00g
・lvdisplay:サイズ,レイアウト,マッピングなどを表示
# lvdisplay
--- Logical volume ---
LV Path /dev/VG01/lvol0
LV Name lvol0
VG Name VG01
LV UUID afVtJj-cUaZ-5Tl1-PNZy-6W5t-iA3s-hLSLGy
LV Write Access read/write
LV Creation host, time nekousa-cent6, 2016-01-27 10:57:54 -0500
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
(省略)
・lvscan:システム内全てのLVを一覧表示する.
# lvscan
ACTIVE '/dev/VG01/lvol0' [2.00 GiB] inherit
ACTIVE '/dev/VG01/lvol1' [3.00 GiB] inherit
ACTIVE '/dev/VG02/hoge' [2.93 GiB] inherit
###3.3.LVの削除
・LVを削除する場合はLVをアンマウント後に下記のようにする.
#lvremove /dev/VG01/lvol2
Do you really want to remove active logical volume lvol2? [y/n]: y
Logical volume "lvol2" successfully removed
# lvscan
ACTIVE '/dev/VG01/lvol0' [2.00 GiB] inherit
ACTIVE '/dev/VG01/lvol3' [12.07 GiB] inherit
# lvremove /dev/VG01/lvol3
Do you really want to remove active logical volume lvol3? [y/n]: y
Logical volume "lvol3" successfully removed
# lvscan
ACTIVE '/dev/VG01/lvol0' [2.00 GiB] inherit
# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvol0 VG01 -wi-a----- 2.00g
3.4.その他
・その他,ボリューム拡張,ストライプ化ボリュームや,ミラー化LV,シンプロビジョニングなどいろいろできるけど割愛