LVM

LVM はLinux の論理フォーマット(Logical Volume Manager)の略です。書き込み頻度の高いボリューム領域に対して、システムを止めずに バックアップを取る上で欠かせない技術であるスナップショットという機能を実装しています。
更新日 2016-05-28

新規作成

領域確保

CentOS 5.3 以降をインストールする場合、グラフィカルインストール画面より簡単にLVM を作成できます。 ここでは後からLVM を作る手順を説明します。
fdisk を用いた場合、基本領域を新規に作成しSystemID をLinux LVM(8e) に変更します。続いて作成した基本領域に対してpvcreate を行います。 今度はその領域をボリュームグループ(VG) とします(vgcreate)。最後に任意のサイズの論理ボリューム(LV) を作成します。
// 基本領域(ここではsda3)を追加。システムID は8e に
fdisk /dev/sda

// /dev/hda3 をLVM 用の物理ボリュームとして初期化する
pvcreate /dev/hda3

// パーティションをボリュームグループにする
vgcreate VolGroup00 /dev/hda3

// ボリュームグループの確認(VG Sizeが例えば30GB)
vgdisplay

// 論理ボリュームを作成(20GB, ボリューム名LogVol03,VolGroup00 に所属)
lvcreate -L 20G -n LogVol03 VolGroup00

// 論理ボリュームを確認(LV Size)
lvdisplay 
スナップショットを取るとき、ボリュームグループの使われていない部分をライトキャッシュ用に使われます。 上記の例ではVG Size - LV Size の10GB 分のデータ変更余地があります。

マウントして使う

通常のパーティションと同様に/etc/fstab に記述してマウントする。
// LVM について確認
lvdisplay

// フォーマット
mkfs.ext4 /dev/VolGroup00/LogVol03

// マウント用ディレクトリを作成
mkdir /mnt/ddrv

// パーティションのユニークID を確認
blkid

 /dev/mapper/VolGroup00-LogVol03: UUID="56d4a451-42ff-43fa-a026-4da" TYPE="ext4"


// マウント情報を記述
vi /etc/fstab

 UUID="56d4a451-42ff-43fa-a026-4da" /mnt/ddrv ext4 defaults 0 0

// マウントを実行
mount -a

スナップショット

概要

スナップショットは極めて短時間にしてディスク領域のコピーを取る技術です。スナップショット(コピーされた情報)は新規ボリュームという形で保存され、 オリジナルに対する以降の書き込みはもちろん反映されません。スナップショットを新規にマウントすれば自由にアクセスでき、 時間のかかるバックアップなどを行う事もできます。
スナップショットは新規ボリュームという形で作成され、またオリジナル領域への以降の書き込みに対応して元データを実際にコピーして保持する目的から、 ある程度の空き領域(オリジナルの5〜100% 程度)を必要とします。従って拡張領域いっぱいにボリュームを作成していると、スナップショットは作れません。 最初から少し空けておきます。

スナップショットを作成

スナップショットは一瞬で作成されます。ファイルシステムへの排他制御も配慮されるようです(8.6. XFS ファイルシステムの一時停止)
以下では、論理ボリューム /dev/VolGroup00/LogVol03 (マウントポイント/LogVol03)というのスナップショットを作成します。
// LVM 領域情報を確認しておきます
lvdisplay

// スナップショットを作成します (Snap-LogVol03 は新規作成されるボリューム名 容量は2GB)
lvcreate -s -n Snap-LogVol03 -L 2G /dev/VolGroup00/LogVol03

// スナップショットが論理ボリュームとして新規作成されたか確認します
lvdisplay


// スナップショットをマウントします(読み込み専用)
mkdir /mnt/Snap-LogVol03
mount -o nouuid /dev/VolGroup00/Snap-LogVol03 /mnt/Snap-LogVol03
オリジナルがマウントされている/LogVol03 には、常に書き込みが可能です。スナップショットが もちろんそれは/mnt/Snap-LogVol03 には以降反映されません。これで安心して時間をかけてバックアップ等が行えます。

スナップショットの削除

使い終わったスナップショットは早々に削除します。
// マウント解除
cd
umount /mnt/Snap-LogVol03

// スナップショット削除
lvremove /dev/VolGroup00/Snap-LogVol03

// 削除されたか確認
cd /dev/VolGroup00
ls

Tips

LVM を再マウントする

後からLVM をマウントする場合は下記のようにします。
// 物理ボリュームを検出
pvscan
pvdisplay

// ボリュームグループを検出
vgscan
vgdisplay

// 論理ボリュームを検出
lvscan
lvdisplay

// VolGroup00(ボリュームグループ) をアクティブ化
vgchange -ay VolGroup00

// マウント先を用意してマウント
mkdir /mnt/LogVol00
mount /dev/VolGroup00/LogVol00 /mnt/LogVol00