kvmが有効になっているqemu-system-x86_64 2.3.0を使用して、Gentoo x86_64ホスト(カーネル3.18.9強化)でWindows 7仮想マシンを作成しようとしています。カーネルを正常にコンパイルし、ゲスト(Windows 7)をインストールしましたが、ゲストがIOに関連する主なパフォーマンス問題が発生しています。
ホスト仕様は1.7GHz(2.6GHzターボ)i5-3317U(2コア、4スレッド)で、6GB DDR3メモリと5300rpmハードドライブを搭載した。ホストは、仮想マシンイメージが格納されている/ homeにマウントされたAES luks暗号化ファイルボリュームを実行します。ゲストマシンの仕様は、2コア、4スレッド、4GBメモリ、15GBイメージです(テスト用に1GBのディスク容量を残します)。ゲストコンテナはqcow2、compat 1.1、遅延参照カウント:true、再カウントビット:16、キャッシュはなしに設定されます。また、このqcow2コンテナをフォーマットに変換してみましたが、トラブルシューティングraw
には少し役立ちました。
可能であれば、virtioドライバをインストールして有効にし、info kvm
qemus端末内でコマンドを実行して、qemuがkvmを使用していることを確認しました。また、次のように起動スクリプトを手動で調整してみました。
#!/bin/bash
export QEMU_AUDIO_DRV=alsa
exec qemu-system-x86_64 \
--enable-kvm \
-machine type=pc,accel=kvm \
-smp cores=2,threads=4 \
-vga std \
-soundhw ac97 \
-drive file=/WindowsVM.img2,cache=none,if=virtio \
-netdev user,id=vmnic -device virtio-net,netdev=vmnic \
-cpu host \
-m 4G \
-balloon virtio \
-name Windows \
-usbdevice tablet \
-monitor stdio \
"$@"
問題は、イメージの起動と終了に時間がかかることです。アプリを開くにも時間がかかります(テスト用にInternet Explorerを開くには15〜20秒)。ただし、数回開くと、アプリがキャッシュされているかのように数倍速く開きます。私が気づいたもう1つの事実は、zipファイルの抽出速度が50-60kb / sを超えず、ファイルが通常のダウンロード速度でダウンロードされますが、一度100%に達すると、時間が完了する前にしばらく停止することです。仮想ディスクIOベンチマークのためにクリスタルディスクマークを実行してみましたが、順次読み取り速度は400mb/s、書き込み速度は300mb/sと確かに間違った数値です。これは、上記のように暗号化されたファイルボリュームに保存されているイメージから仮想マシンを起動することです。暗号化されていないマウントポイントに画像を移動すると、読み取り速度は70 mb / s、書き込み速度は35 mb / sと少し合理的に見えます。偶然にも、仮想マシンは、画像が暗号化されていない場所に保存されると、これらの「遅延」がはるかに少なくなります。開始/終了時間は依然としてかなり長いですが、画像を暗号化された場所に保存するのにかかる時間やソフトウェアを開閉するのにかかる時間にはまったく近いものではありません。
テストで確認したように、画像を保存したい暗号化されたファイルボリュームが問題を引き起こす可能性があります。しかし、他のコメントや試してみることができる他のオプションが欲しいです。 暗号化されていないイメージを暗号化されたマウントポイントに保存するよりもパフォーマンスに影響を与える可能性があるイメージ自体を暗号化する方法はありますか?コンテナに組み込まれた暗号化を有効にできますか?それとも、cryptsetup / lukを使用してコンテナを具体的に暗号化してパフォーマンスを向上させるより良い方法はありますか?
ご協力ありがとうございます。
答え1
ホストオペレーティングシステムのファイルシステムの上にある.imgファイルの代わりにゲストディスクにLVMボリュームを使用できますか?これにより、仮想マシンがハードウェアに近づき、暗号化によって引き起こされる可能性があるボトルネックがなくなります。これが問題になると、仮想化されたウィンドウは独自の暗号化を実行できます。
非SSD、非RAIDストレージ->暗号化されたLinuxファイルシステム->NTFSI/O の速度低下の多くの機会を提供します。