とても良い質問です。
qcow2 は仮想マシン(VM)のディスクイメージとして非常に広く使われているフォーマットで、特に QEMU や KVM(Linuxの仮想化環境)で採用されています。
■ 基本概要
| 項目 | 内容 |
|---|
| 名称 | qcow2 (QEMU Copy On Write version 2) |
| 主な利用 | QEMU / KVM の仮想ディスク |
| 拡張子 | .qcow2 |
| 意味 | QEMU Copy-On-Write(コピーオンライト) |
| 初代形式 | qcow (=qcow1) → 現在はほぼ廃止 |
■ qcow2の構造と特徴
qcow2 は単なる「生ディスクのコピー」ではなく、メタデータを持つ高度なディスクイメージ形式です。
1. Copy-On-Write(COW)方式
例:
base.qcow2 ← 元イメージvm1.qcow2 ← baseを参照し、変更部分だけ保存
これにより大容量ディスクでも変更分しか書き込まないため、ストレージを大幅に節約できます。
2. 内部構造
qcow2 ファイル内には次のような情報が記録されています:
| 項目 | 内容 |
|---|
| ヘッダ情報 | バージョン、クラスタサイズ、L1/L2テーブルの位置など |
| L1 / L2 テーブル | 仮想ブロックアドレスを物理ブロックに対応付けるマッピング情報 |
| データクラスタ | 実際のディスクデータ(書き込まれたセクタ) |
| 参照テーブル | スナップショットやバックファイルとの関連情報 |
| 圧縮/暗号化データ | オプションで zlib圧縮・AES暗号化されたブロック |
このように、ただの「生データの塊」ではなく、ファイルシステム的な構造を内部に持っています。
3. 主な機能
スナップショット機能(内部スナップショットを1ファイルに保存可能)
差分ディスクの作成(バックファイルを指定して増分保存)
データ圧縮(zlib圧縮による省容量化)
暗号化(AESによるディスク暗号化)
Sparse allocation(疎割り当て):必要な部分だけ実際にディスク領域を使用
■ qcow1との違い(旧形式)
| 項目 | qcow1 | qcow2 |
|---|
| 世代 | 初代(古い) | 現行(改良版) |
| 最大ディスクサイズ | 約 2 TB | 約 2 PB(ペタバイト級) |
| スナップショット | 非対応 | 対応 |
| 圧縮 | 制限あり | 改良済み |
| AES暗号化 | 対応 | 改良された安全な形式 |
| 互換性 | 古いQEMUのみ | 現行のQEMU/KVMで標準 |
→ 現在は qcow1(初代qcow)は事実上使われていません。
ほぼすべてのシステムで qcow2 に統一されています。
■ 例:qcow2の作成と利用(QEMUコマンド)
# 10GBのqcow2ディスクを作成qemu-img create -f qcow2 mydisk.qcow2 10G# 既存のrawディスクをqcow2に変換qemu-img convert -f raw -O qcow2 disk.raw disk.qcow2# ベースイメージを利用した差分作成qemu-img create -f qcow2 -b base.qcow2 snapshot.qcow2
■ まとめ
| 要素 | 内容 |
|---|
| ファイル形式 | QEMU/KVM用の仮想ディスク形式 |
| 仕組み | Copy-On-Write 方式で差分管理 |
| 主な記録内容 | メタデータ・マッピングテーブル・データクラスタ |
| バージョン | qcow1(旧)→ qcow2(現行) |
| 特徴 | スナップショット、圧縮、暗号化、差分管理、疎割り当て |
この記事へのコメント