0. 前提知識
LVMスナップショットは論理的に「作成時点の完全なデータ」を提供するため、それをrsyncでコピーすればフルバックアップになる。
→なぜフルバックアップになるのか
- LVMスナップショットは
- 作成時点の全ブロックを参照できる
- 変更前ブロックだけをCopy-On-Writeで保持
- マウントすると“完全な1つのボリューム”として見える
1. 事前確認(構成把握)
① ディスク・LVM構成確認
lsblk
例:
sdb
└─sdb1
└─vg0-root
- sdb → 物理ディスク(例:HDD)
- vg0-root
- vg0 → Volume Group
- root → 論理ボリューム(lv)名
確認用コマンド
# 実際の論理ボリューム
ls /dev/vg0/root
# VG Name を確認
vgdisplay
# ↑のVGに所属する論理ボリュームを確認
lvs
② マウントポイント確認
df -h
例:
/dev/mapper/vg0-root 500G 100G 400G /
- / → 実際にデータが入っているディレクトリ
- /dev/vg0/root → その実体
今回のバックアップ対象は「/」。
③ Volume Groupの空き容量確認
vgdisplay
例:
Free PE / Size 50.00 GiB
スナップショット用に十分な空きがあることを確認する。
バックアップ元と同じボリュームグループにだけ、スナップショットを作れる。
2. スナップショット作成
lvcreate -L 50G -s -n snap_root /dev/vg0/root
lvcreate -L 50G -s -n snap_home /dev/vg0/home
意味:
- -L 50G → 変更分保存用の容量
- -s → snapshot作成
- -n snap_root → スナップショット名
- /dev/vg0/root → 元の論理ボリューム
作成確認:
lvs
下記を確認
- LV に snap_root がある
- Attr が swi-...(s = snapshot)
- Origin が root
- Data% が上がるならスナップショットサイズ見直し or 早くコピー(バックアップ)して消す
3. スナップショットをマウント
mkdir /mnt/snap/root_snap_mnt_point
mkdir /mnt/snap/home_snap_mnt_point
- 一時的にsnapshotを参照するためのディレクトリを作る
# ext4:
mount -o ro,noload /dev/vg0/snap_root /mnt/snap/root_snap_mnt_point
mount -o ro,noload /dev/vg0/snap_home /mnt/snap/home_snap_mnt_point
# XFS:
mount -o ro,nouuid,norecovery /dev/vg0/snap_root /mnt/snap/root_snap_mnt_point
mount -o ro,nouuid,norecovery /dev/vg0/snap_home /mnt/snap/home_snap_mnt_point
- -o ro → 読み取り専用でマウント(安全のため必須)
- ファイルシステムごとの必要オプション
- ext4は、 read-only マウントでもジャーナルリプレイで書き込みが発生し得る ので、より安全にするなら ro,noload が推奨されます(「roなのに書く」罠)。
- XFSは、元のFSがマウント中だとスナップショットがduplicate UUIDでマウント拒否されることがあり、
-o nouuid(必要に応じて norecovery)が必要になることがあります。
確認:
mount | grep snap_
4. バックアップ先確認
df -h
例:
/dev/sdc1 1T 200G 800G /backup
- /backup → 同VG以外に保存する。別ディスクやNFSなどのバックアップ保存先
5. rsyncでフルバックアップ
rsync -aHAX --delete /mnt/snap/root_snap_mnt_point /backup/
rsync -aHAX --delete /mnt/snap/home_snap_mnt_point /backup/
パスの意味:
- /mnt/snap/ → スナップショットの中身(作成時点の完全な状態)
- /backup/ → バックアップ保存ディレクトリ
重要オプション:
- -a → パーミッション・タイムスタンプ保持
- -H → ハードリンク保持
- -A → ACL保持
- -X → 拡張属性保持(SELinuxなど)
- --delete → 削除されたファイルも同期
6. 後処理
umount /mnt/snap/root_snap_mnt_point
umount /mnt/snap/home_snap_mnt_point
lvremove /dev/vg0/snap_root
lvremove /dev/vg0/snap_home
- スナップショットをアンマウント
- スナップショットを削除
lvs
- スナップショットがないことを確認
まとめ
- lsblk / df -h で構成確認
- vgdisplay で空き容量確認
- lvcreate -s でスナップショット作成
- mount -o ro で参照
- rsync -aHAX でフルバックアップ取得
- umount → lvremove