5.2. LVM
LVM(論理ボリューム管理機能)はディスク管理を柔軟に行える機能のこと。
ディスクのパーティションを直接操作は行わず、仮想的なパーティションの論理ボリュームを動的に管理する。
以下のメリットがLVMにはある。
- パーティションのサイズを変更できる(通常は一度決めるとできない)
- 別ディスクにパーティションを移動させることができる
- ディスクサイズを超える大きさのパーティションを作成できる
LVMでは仮想的なブロックデバイスの機能はデバイスマッパーと呼ばれる機能によって実現されている。
これらの仮想的なデバイスは/dev/mapper/VG名-LV名というデバイス名で扱われる。
まあカーネル内では/dev/dm-*という形で、LVMでは/dev/VG名/LV名というデバイス名も扱われる。
5.2.1. LVMの仕組み
LVMの概要は以下の通り。
ボリュームグループは仮想的ディスク、論理ボリュームは仮想的パーティションといえる。
- 1台のハードディスクや1つのパーティションを物理ボリューム(PV)にする
- 物理ボリュームは一定サイズの物理エクステント(PE)から構成される
- 1つ以上の物理ボリュームからボリュームグループ(VG)が構成される
- VG内でPEから論理ボリューム(LV)が構成される
- 論理ボリュームは従来のパーティション同様ブロックデバイスとして扱える
- LVのサイズ変更や他ディスクへの移動が可能
- LVは複数ディスクにまたがって作成できる
- VGは後からサイズ変更ができる
5.2.2. LVMの作成
LVM利用手順は以下の通り。
- パーティションの作成(fdisk)
- 物理ボリュームを用意(pvcreate)
- 物理ボリュームを束ねてボリュームグループを作成(vgcreate)
- ボリュームグループから論理ボリュームを切り出す(lvcreate)
- ファイルシステムの作成(mkfs)
- マウント(mount)
/dev/sdd1,/dev/sde1を使用した例
- LVM用のパーティションの用意 初めにLVMを作成するためのパーティションまたはハードディスクを用意する。 パーティションを利用する場合はタイプを8eに設定する
parted /dev/sdd1
parted /dev/sde1- 物理ボリュームを初期化する
pvcreateコマンドでデバイスを物理ボリュームとして初期化する
pvcreate /dev/sdd1 /dev/sde1- ボリュームグループの作成
vgcreateコマンドでボリュームグループを作成する(例の名称ではgroup1)
vgcreate group1 /dev/sdd1 /dev/sde1なお-sオプションで物理エクステントのサイズを指定可能(省略した場合デフォルトで4MB)
4. 論理ボリュームの作成
lvcreateコマンドで論理ボリュームを作成する(例の名称ではlv1)
lvcreate -L 500M -n lv1 group1なおlvscanコマンドで論理ボリュームの状態を確認可能
5. ファイルシステムの作成/マウント
ファイルシステムを作成してマウントを行う。例ではext4で/mntにマウントする
mkfs.ext4 /dev/group1/lv1
mount  /dev/group1/lv1 /mntなおdf -Tコマンドで確認可能。
5.2.3. LVMの管理
LVM関連のコマンドを記載する。
pvdisplay/pvscanコマンド
物理ボリュームの詳細情報の表示を行うコマンド。
pvdisplay /dev/sda1
pvscan # 簡潔に表示vgextendコマンド
ボリュームグループに物理ボリュームを追加するコマンド。
vgextend [ボリュームグループ] [物理ボリューム]pvmoveコマンド
物理ボリュームを別の物理ボリュームに移動させるコマンド。
pvmove [移動元物理ボリューム] [移動先物理ボリューム]vgreduceコマンド
ボリュームグループから物理ボリュームを削除するコマンド。
vgreduce [ボリュームグループ] [削除する物理ボリューム]pvremoveコマンド
物理ボリュームを削除するコマンド。
pvremove [物理ボリューム]vgdisplayコマンド
ボリュームグループの詳細を表示するコマンド。
vgdisplay [ボリュームグループ]lvdisplayコマンド
論理ボリュームの詳細情報の表示するコマンド。
lvdisplay [論理ボリューム]lvextendコマンド
論理ボリュームを拡張するコマンド。
lvextend -L +100M [論理ボリューム]このコマンドだけではファイルシステムまで拡張されない。
そのためresize2fsコマンドやxfs_growfsコマンドでファイルシステムのサイズも拡張する必要がある。
resize2fs/xfs_growsfsコマンド
resize2fsコマンドはext2~ext4ファイルシステムの場合ファイルシステムを広げるコマンド。xfs_growfsコマンドはXFSの場合にファイルシステムを広げるコマンド。
e2fsck -f /dev/group1/lv1
resize2fs /dev/group1/lv1lvremoveコマンド
論理ボリュームを削除するコマンド。
lvremove [論理ボリューム]スナップショット機能
スナップショット機能を使用するとファイルシステムをマウントせずにバックアップすることができる。
具体的にはスナップショットの作成ではファイルシステムを書き込み禁止やアンマウントせずにバックアップができる。
スナップショットをsnap0という名前でとる例
lvcreate -s -L 100M -n snap0 /dev/group1/lv1
dump 0uf /dev/st0 /dev/group1/snap0スナップショットの特性上、スナップショットの作成後にファイルシステムに変更が加われば加わるほどスナップショット領域は大きくなる。
そのためバックアップ取得後は、スナップショットを削除したほうが良い。
5.2.4. LVMの関連コマンド
物理ボリューム関連コマンド
| コマンド | 説明 | 
|---|---|
| pvcreate | PVの作成 | 
| pvdisplay | PVの情報の表示 | 
| pvmove | PV内のPEを移動 | 
| pvremove | PVの削除 | 
| pvscan | PVの検索 | 
| pvs | PVの情報出力 | 
ボリュームグループ関連のコマンド
| コマンド | 説明 | 
|---|---|
| vgcreate | VGを作成 | 
| vgchange | VGの属性を変更 | 
| vgdisplay | VGの情報を表示 | 
| vgextend | VGの拡張(PVの追加) | 
| vgreduce | VGの縮小(PVの削除) | 
| vgremove | VGの削除 | 
| vgimport | VGのインポート | 
| vgexport | VGのエクスポート | 
| vgmerge | 2つのVGを統合する | 
| vgrename | VG名の変更 | 
| vgscan | VGの検索 | 
| vgs | VGの情報表示 | 
論理ボリューム関連のコマンド
| コマンド | 説明 | 
|---|---|
| lvcreate | LVの作成 | 
| lvdisplay | LVの情報表示 | 
| lvextend | LVの拡張(PEの追加) | 
| lvreduce | LVの縮小(PEの削除) | 
| lvremove | LVを削除 | 
| lvrename | LV名を変更 | 
| lvscan | LVの検索 | 
| lvs | LVの情報表示 |