仮想化環境におけるストレージ I/O の最適化を整理します。VM の体感性能は CPU よりもストレージ遅延に引っ張られることが多く、virtio、イメージ形式、ホスト I/O スタックの選び方が重要になります。
参考
書籍
書籍
参考書籍
ストーリーで覚える Linux CLI 入門
Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
ストレージ I/O の経路
一般的な VM の I/O は、ゲスト OS、仮想デバイス、QEMU、ホスト OS、物理デバイスという複数の層を通ります。性能を見るときは、どの層で待たされているのかを分けて考えます。
VM guest
-> virtio-blk / virtio-scsi
-> QEMU
-> host I/O stack
-> NVMe / SSD / storage backendvirtio-blk と virtio-scsi
| 方式 | 特徴 |
| virtio-blk | 単純でオーバーヘッドが少ない。小規模構成では扱いやすい。 |
| virtio-scsi | 複数ディスク、ホットプラグ、SCSI 機能を扱いやすい。運用上の柔軟性が高い。 |
raw と qcow2
性能重視では raw が有利です。一方、qcow2 はスナップショットや薄いプロビジョニングなどの機能を持ちます。どちらを選ぶかは、性能だけでなく運用機能とのトレードオフです。
| 形式 | 向いている用途 |
| raw | 性能重視、シンプルな運用、別レイヤでバックアップやスナップショットを持つ構成 |
| qcow2 | 検証、スナップショット重視、容量効率を優先する構成 |
io_uring
新しい Linux 環境では io_uring による非同期 I/O が選択肢になります。ただし、ハイパーバイザー、QEMU、ストレージバックエンド、カーネルの組み合わせで効果が変わるため、ベンチマークで確認します。
NVMe パススルー
最短経路を狙うなら NVMe パススルーが強力です。ただし、ライブマイグレーションやホスト側での柔軟な管理は難しくなります。性能と運用性の交換として判断します。
まとめ
VM のストレージ最適化では、単に速い設定を探すのではなく、raw/qcow2、virtio-blk/virtio-scsi、io_uring、パススルーを用途ごとに選びます。性能、可搬性、バックアップ、運用のしやすさを同時に見た方が現実的です。
VM パフォーマンス Day4: ストレージ I/O 最適化

