0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QEMUディスクフォーマット変換の基礎と実務 〜OVA → QCOW2 変換の整理(Mac / Windows対応)

0
Last updated at Posted at 2026-05-09

はじめに

OVA形式の仮想マシンイメージを、KVM系(Harvesterなど)で利用するためにQCOW2へ変換するケースはよくあります。

本記事では:

  • OVA → QCOW2 の変換手順(Mac / Windows)
  • qemu-img の基本と挙動
  • 「サイズが増える/減る」理由の正しい理解
  • 実務的なベストプラクティス

を整理します。

※Coriolis Applianceを題材にしていますが、内容は一般化されています。


OVAの正体(まずここが重要)

OVAは「仮想マシンの形式」ではなく、単なるアーカイブです。

.ova = tarファイル

中身:

  • .ovf → 定義ファイル
  • .vmdk → ディスク本体

つまりやることは:

OVA → 展開 → VMDK → QCOW2変換

全体フロー(共通)

① OVA展開
② VMDKを特定
③ QCOW2へ変換
④ 必要なら圧縮

Mac編

1. QEMUインストール

brew install qemu

2. OVA展開

tar -xvf coriolis-appliance.ova

3. QCOW2へ変換

qemu-img convert -p -f vmdk -O qcow2 disk-0.vmdk output.qcow2

4. 圧縮(任意)

qemu-img convert -c -f qcow2 -O qcow2 output.qcow2 output-compressed.qcow2

Windows編

1. QEMUインストール

image.png

Windows版QEMU(Stefan Weilビルドなど)を使用
👉 64-bit版を選択(通常はこれ一択)


2. OVA展開

PowerShellまたはコマンドプロンプト:

tar -xvf coriolis-appliance.ova

3. QCOW2変換

& "C:\Program Files\qemu\qemu-img.exe" convert -p -f vmdk -O qcow2 disk-0.vmdk coriolis.qcow2

結果

PS C:\Users\...> & "C:\Program Files\qemu\qemu-img.exe" convert -p -f vmdk -O qcow2 disk-0.vmdk coriolis.qcow2
    (100.00/100%)
PS C:\Users\...> 
 ls


    ディレクトリ: C:\Users\...


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2026/05/09     15:26                tmp
-a----        2026/05/07     15:11     7207802880 coriolis-appliance-2603.1.ova
-a----        2026/04/20     23:29           9403 coriolis-appliance-2603.1.ovf
-a----        2026/05/09     15:33    16880697344 coriolis.qcow2
-a----        2026/04/20     23:29     7207779840 disk-0.vmdk

4. 圧縮(任意)

qemu-img.exe convert -c -f qcow2 -O qcow2 output.qcow2 output-compressed.qcow2

サイズが変わる理由(重要)

今回のようなケース:

VMDK(OVA内)       約 7GB
QCOW2(非圧縮)     約 16GB
QCOW2(圧縮)       約 7GB

これは正常です。


なぜ起きるのか

① VMDKは配布用に最適化されている

  • ゼロ領域を持たない
  • 圧縮されていることが多い

👉 見た目サイズが小さい


② QCOW2変換で一度「展開」される

qemu-img convert -f vmdk -O qcow2

この時:

  • 実データとして再構成される
  • 結果的にサイズが増えることがある

③ 圧縮で再び縮む

qemu-img convert -c ...

👉 再度圧縮されるため元サイズに近づく


sparse と compression の違い

ここは混同しやすいポイントです。

項目 内容
sparse 未使用領域を物理的に持たない
compression データそのものを圧縮

ポイント

  • qcow2はデフォルトで sparse
  • ただし「実データ部分」は減らない
  • 圧縮は -c を付けた時のみ有効

確認コマンド

qemu-img info output.qcow2

例:

virtual size: 40 GiB
disk size: 15.7 GiB

意味:

  • virtual size → VMから見えるサイズ
  • disk size → 実際のファイルサイズ

ファイル確認

ls -lh output.qcow2
du -h output.qcow2
  • ls → 論理サイズ
  • du → 実使用サイズ

ベストプラクティス

最初から圧縮付きで変換:

qemu-img convert -p -c -f vmdk -O qcow2 disk-0.vmdk output.qcow2

まとめ

  • OVAはただのtar
  • 本体はVMDK
  • QCOW2変換は qemu-img が基本
  • サイズ変化は正常挙動
  • 圧縮は明示的に行う必要あり
  • 実務では「圧縮済QCOW2」が最適

おわりに

一見単純なフォーマット変換ですが、

  • ディスクの論理構造
  • 圧縮の扱い
  • 仮想化基盤の違い

が絡むため、理解しておくとかなり応用が効きます。

特にKVM系(Harvester / OpenStack / Proxmox)を扱う場合は、基本スキルとして押さえておく価値があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?