はじめに
前回の記事では、100GBディスクでの検証において容量不足やロールバック処理の長時間実行といった課題に遭遇しました。
今回は、前回の経験を活かして検証環境を改善し、1GBの小容量ディスクを使用してBacking Chain方式のLVMスナップショット機能の基本動作確認を実施しました。結果として、スナップショットの作成、ロールバック、削除のすべての基本機能が正常に動作することを確認できました。
✅ 本記事のポイント
- 小容量ディスクによる容量問題の回避
- 基本機能の完全な動作確認
- ロールバック・削除処理の短時間実行
前回との改善点
検証戦略の見直し
前回の検証で明らかになった課題を踏まえ、以下の改善を実施しました:
容量設計の最適化:
- ディスクサイズを100GB → 1GBに変更
- 必要最小限の容量でBacking Chain機能の動作原理を確認
- 長時間処理によるタイムアウトリスクを回避
段階的検証アプローチ:
- まず基本機能の動作確認を優先
- 性能や大容量対応は別途検証として分離
- 確実に動作する条件での機能理解を重視
検証環境
前回記事と同じ基本環境での動作確認を実施しました:
- Proxmox VE: 9.0 (8.3からアップグレード済み)
- ノード名: tx1320m1
- iSCSI Target: TrueNAS
- テスト仮想マシン: RHEL 9 (VM ID: 102)
- ディスク容量: 1GB ← 前回から大幅縮小
検証実施内容
1. 小容量仮想マシンの作成
今回は容量問題を回避するため、最小構成での仮想マシンを作成しました。
仮想マシン作成手順:
- Proxmox Web UIで「Create VM」をクリック
- 「General」タブで基本情報を設定
- 「OS」タブでRHEL9 ISOを選択
- 「Hard Disk」タブでディスクサイズを1GBとして、QEMUイメージ形式を選択
作成結果の確認:
仮想マシン作成後、LVMボリュームが正しく作成されていることを確認しました。
# 現状確認
root@tx1320m1:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
vm-101-disk-0 iSCSI-LVM-VG -wi------- 100.00g
vm-102-disk-0.qcow2 iSCSI-LVM-VG -wi-a----- 1.00g
root@tx1320m1:~# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 rhel9 stopped 4096 60.00 0
101 RHEL9-Proxmox84-iSCSI stopped 4096 100.00 0
102 test stopped 2048 1.00 0
ポイント:
- Backing Chain対応の
.qcow2
形式でディスクが作成されている - 1GBの小容量により、スナップショット作成時の容量不足リスクを大幅軽減
- VM IDが102として正しく登録されている
2. スナップショット作成の成功
前回の知見を活かし、コマンドラインからRAMスナップショットを含めずにスナップショット作成を実行しました。
# スナップショット作成
root@tx1320m1:~# qm snapshot 102 pre-test-snapshot --description "pre-test-snapshot"
snapshotting 'drive-scsi0' (iSCSI-LVM:vm-102-disk-0.qcow2)
Renamed "vm-102-disk-0.qcow2" to "snap_vm-102-disk-0_pre-test-snapshot.qcow2" in volume group "iSCSI-LVM-VG"
Rounding up size to full physical extent 1.00 GiB
Logical volume "vm-102-disk-0.qcow2" created.
Formatting '/dev/iSCSI-LVM-VG/vm-102-disk-0.qcow2', fmt=qcow2 cluster_size=131072 extended_l2=on preallocation=metadata compression_type=zlib size=1073741824 backing_file=snap_vm-102-disk-0_pre-test-snapshot.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
作成成功の確認:
# LV確認
root@tx1320m1:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
snap_vm-102-disk-0_pre-test-snapshot.qcow2 iSCSI-LVM-VG -wi-a----- 1.00g
vm-101-disk-0 iSCSI-LVM-VG -wi------- 100.00g
vm-102-disk-0.qcow2 iSCSI-LVM-VG -wi-a----- 1.00g
# スナップショット一覧確認
root@tx1320m1:~# qm listsnapshot 102
`-> pre-test-snapshot 2025-08-27 00:31:36 pre-test-snapshot
`-> current You are here!
成功要因の分析:
- 容量確保: 1GBディスクに対し十分な空き容量により容量不足エラーを回避
- 処理速度: 小容量により瞬時にスナップショット作成が完了
- Backing Chain構造: スナップショットボリュームと現在ボリュームが正しく分離作成
3. ロールバック処理の成功確認
前回最も問題となったロールバック処理を実行しました。今回は1GBの小容量により、大幅な処理時間短縮が期待されます。
root@tx1320m1:~# qm rollback 102 pre-test-snapshot
Renamed "vm-102-disk-0.qcow2" to "del-vm-102-disk-0.qcow2" in volume group "iSCSI-LVM-VG"
Rounding up size to full physical extent 1.00 GiB
Logical volume "vm-102-disk-0.qcow2" created.
Formatting '/dev/iSCSI-LVM-VG/vm-102-disk-0.qcow2', fmt=qcow2 cluster_size=131072 extended_l2=on preallocation=metadata compression_type=zlib size=1073741824 backing_file=snap_vm-102-disk-0_pre-test-snapshot.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
zero-out data on image vm-102-disk-0.qcow2 (/dev/iSCSI-LVM-VG/del-vm-102-disk-0.qcow2)
105906176 B 101.0 MB 10.00 s 10590407 B/s 10.10 MB/s
210763776 B 201.0 MB 20.00 s 10537974 B/s 10.05 MB/s
315621376 B 301.0 MB 30.00 s 10520488 B/s 10.03 MB/s
420478976 B 401.0 MB 40.00 s 10511761 B/s 10.02 MB/s
526385152 B 502.0 MB 50.00 s 10527457 B/s 10.04 MB/s
631242752 B 602.0 MB 60.00 s 10520489 B/s 10.03 MB/s
736100352 B 702.0 MB 70.00 s 10515502 B/s 10.03 MB/s
840957952 B 802.0 MB 80.00 s 10511766 B/s 10.02 MB/s
945815552 B 902.0 MB 90.00 s 10508855 B/s 10.02 MB/s
1050673152 B 1.0 GB 100.00 s 10506534 B/s 10.02 MB/s
1077936128 B 1.0 GB 102.70 s 10495893 B/s 10.01 MB/s
zero out finished (note: 'No space left on device' is ok here): write: No space left on device
Logical volume "del-vm-102-disk-0.qcow2" successfully removed.
successfully removed volume vm-102-disk-0.qcow2 (iSCSI-LVM-VG/del-vm-102-disk-0.qcow2)
ロールバック成功の確認:
root@tx1320m1:~# qm listsnapshot 102
`-> pre-test-snapshot 2025-08-27 00:31:36 pre-test-snapshot
`-> current You are here!
重要な改善点:
- 処理時間: 前回の1時間以上から約**102秒(約1.7分)**に大幅短縮
- 完了確認: 「No space left on device」は正常な終了メッセージであることが確認
- 処理安定性: SSH接続の切断もなく、安定して処理が完了
- 自動クリーンアップ: 不要なボリュームが自動的に削除される
4. スナップショット削除機能の確認
最後に、スナップショット削除機能の動作を確認しました。
root@tx1320m1:~# qm delsnapshot 102 pre-test-snapshot
vm-102-disk-0.qcow2: deleting snapshot 'pre-test-snapshot' by commiting snapshot 'current'
running 'qemu-img commit /dev/iSCSI-LVM-VG/vm-102-disk-0.qcow2'
Image committed.
delete vm-102-disk-0.qcow2
Renamed "vm-102-disk-0.qcow2" to "del-vm-102-disk-0.qcow2" in volume group "iSCSI-LVM-VG"
rename snap_vm-102-disk-0_pre-test-snapshot.qcow2 to vm-102-disk-0.qcow2
Renamed "snap_vm-102-disk-0_pre-test-snapshot.qcow2" to "vm-102-disk-0.qcow2" in volume group "iSCSI-LVM-VG"
zero-out data on image vm-102-disk-0.qcow2 (/dev/iSCSI-LVM-VG/del-vm-102-disk-0.qcow2)
105906176 B 101.0 MB 10.00 s 10590404 B/s 10.10 MB/s
210763776 B 201.0 MB 20.00 s 10537945 B/s 10.05 MB/s
315621376 B 301.0 MB 30.00 s 10520473 B/s 10.03 MB/s
420478976 B 401.0 MB 40.00 s 10511784 B/s 10.02 MB/s
525602816 B 501.3 MB 50.00 s 10511818 B/s 10.02 MB/s
630460416 B 601.3 MB 60.00 s 10507443 B/s 10.02 MB/s
735318016 B 701.3 MB 70.00 s 10504327 B/s 10.02 MB/s
840175616 B 801.3 MB 80.00 s 10501984 B/s 10.02 MB/s
945033216 B 901.3 MB 90.00 s 10500161 B/s 10.01 MB/s
1049890816 B 1.0 GB 100.00 s 10498708 B/s 10.01 MB/s
1077936128 B 1.0 GB 102.70 s 10495864 B/s 10.01 MB/s
zero out finished (note: 'No space left on device' is ok here): write: No space left on device
Logical volume "del-vm-102-disk-0.qcow2" successfully removed.
successfully removed volume vm-102-disk-0.qcow2 (iSCSI-LVM-VG/del-vm-102-disk-0.qcow2)
削除完了の確認:
root@tx1320m1:~# qm listsnapshot 102
`-> current You are here!
root@tx1320m1:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
vm-101-disk-0 iSCSI-LVM-VG -wi------- 100.00g
vm-102-disk-0.qcow2 iSCSI-LVM-VG -wi-a----- 1.00g
削除処理の特徴:
-
コミット処理:
qemu-img commit
によりスナップショット内容が統合 - ボリューム再編成: スナップショットボリュームが現在ボリュームにリネーム
- クリーンアップ: 不要になった中間ボリュームが自動削除
- 処理時間: ロールバックと同様に約102秒で完了
検証結果の総合評価
成功した機能一覧
今回の検証により、以下のBacking Chain LVM基本機能がすべて正常に動作することを確認しました:
機能 | 結果 | 処理時間 | 備考 |
---|---|---|---|
スナップショット作成 | ✅ 成功 | 数秒 | 瞬時に完了 |
ロールバック | ✅ 成功 | 約102秒 | 前回の1/35以下に短縮 |
スナップショット削除 | ✅ 成功 | 約102秒 | コミット処理含む |
ボリューム管理 | ✅ 成功 | - | 自動的なクリーンアップ |
技術的理解の深化
Backing Chain処理フローの解明
今回の検証により、Backing Chain方式の詳細な処理フローが明らかになりました:
スナップショット作成時:
- 現在ボリューム → スナップショットボリュームにリネーム
- 新しい現在ボリューム作成(backing fileとしてスナップショットを参照)
- QCOW2チェーン構造の確立
ロールバック時:
- 現在ボリューム → 削除対象ボリュームにリネーム
- 新しい現在ボリューム作成(スナップショットをbacking fileとして参照)
- 削除対象ボリュームのゼロクリア実行
- 削除対象ボリュームの除去
スナップショット削除時:
-
qemu-img commit
による変更内容の統合 - ボリューム名の再編成
- 不要ボリュームのゼロクリア・削除
ゼロクリア処理の意味
すべての処理で共通して実行される「ゼロクリア処理」の意味は以下の通りと思われます。
セキュリティ目的:
- 削除されるボリューム内のデータを確実に消去
- データの復旧を困難にするセキュリティ措置
-
saferemove
設定との連携
処理時間の法則:
- ゼロクリア時間 ≒ ディスクサイズ ÷ 約10MB/s
- 1GBディスク: 約100秒
- 100GBディスク: 約10,000秒(約2.8時間)
実用性の検証結果
容量設計の重要性
容量要件の明確化:
- スナップショット1個につき、元ディスクサイズと同等の容量が必要
- RAMスナップショット含む場合は、さらにメモリサイズ分が必要
今後の検証計画
短期的な検証項目
今回の成功を踏まえ、段階的に検証範囲を拡張していきます:
1. 中容量ディスクでの検証(10GB〜50GB)
- 実用的なサイズでの動作確認
- 処理時間とディスクサイズの関係性検証
- Web UIとCLIの動作比較
2. 複数スナップショットでの検証
- スナップショットチェーンの動作確認
- 中間スナップショットへのロールバック可否
- チェーン削除時の動作パターン
3. 性能測定
- 従来LVMスナップショットとの性能比較
- I/O負荷下でのスナップショット操作
- 複数VM同時操作時の影響
まとめ
今回の検証により、Proxmox VE 9.0のBacking Chain LVM機能は、適切な容量設計のもとで基本機能が正常に動作することが確認できました。前回の課題を踏まえた改善により、大きな進展を得ることができました。
重要な成果
1. 基本機能の完全動作確認
- スナップショット作成・ロールバック・削除のすべてが成功
- 処理時間の大幅短縮(1時間以上 → 約1.7分)
- 安定した処理実行
2. 技術的理解の深化
- Backing Chain処理フローの詳細解明
- ゼロクリア処理の意味と時間予測手法の確立
- 容量設計指針の明確化