PMPの流儀

PMPの流儀

エンジニアのページ

MENU

VMware ハードディスクの最適化(Windows10 PVSCSI化)

VMware Workstation Player 16 では、仮想マシンがWindows10の場合、ハードディスクのデフォルトデバイスにNVMeが指定されますが、検証した結果、PVSCSIの方がスループットの高さ、CPU占有率の低さで優れている事が分かりました。PVSCSIに移行する手順を紹介します。

pmp-style.hatenablog.com

f:id:ruruucky:20200903195353p:plain

1. 概要

以下を参照ください pmp-style.hatenablog.com

2. 注意

慣れない方は必ず仮想マシンを丸ごとコピーしてバックアップしてから作業をしてください。再起不能になっても責任が取れません。

3.全体の流れ

f:id:ruruucky:20201102022005p:plain

4. 詳細手順

Step1. VMXファイルをソート

vmxファイルはテキスト形式で行ごとに独立した設定を持ちます。行に前後関係はありませんが、同じデバイスは同じ個所に集めておきます。
コマンドプロンプトを開いて以下を実行してください。

sort  < 仮想マシン名.vmx > 仮想マシン名2.vmx

Step2. システムドライブをSATAに変更

(1).
最初にHDDのインターフェースをSATAに変更します。最終的にPVSCSIにするのですが、NVMeからダイレクトにPVSCSIに変更すると失敗することがあり、SATAからPVSCSIに移行させた方がスムースに行きました。経験則です。失敗してもHDDイメージが壊れることはないので安心してください。

仮想マシンの編集画面を開いて、HDDのインターフェースを調べてください。すでにSATAの方は、Step3 へ進んでください。

f:id:ruruucky:20201102002714p:plain

(2). vmxファイルをエディタで開き、システムドライブに使用しているデバイスコメントアウトして、SATAにシステムドライブを接続します。
NVMe から SATAに変更する例は以下になります。ファイル名は置き換えてくださいね。
修正前

nvme0.present = "TRUE"
nvme0:0.present = "TRUE"
nvme0:0.fileName = "win10.vmdk"
nvme0:0.redo = ""
nvme0.pciSlotNumber = "256"

修正後

#nvme0.present = "TRUE"
#nvme0:0.present = "TRUE"
#nvme0:0.fileName = "win10.vmdk"
#nvme0:0.redo = ""
#nvme0.pciSlotNumber = "256"

sata0:0.present = "TRUE"
sata0:0.fileName = "win10.vmdk"

(3). 仮想マシンを起動して、デバイスマネージャでHDDがSATAで接続されている事を確認します。

f:id:ruruucky:20201102004134p:plain

Step3. PVSCSIのダミードライブを追加

(1). 仮想マシンの設定から SCSI HDDを新規追加してください。容量は最小の1Gでよいです。この時HDDのイメージファイルの名称を入力するので dummy_scsi.vmdk など分かりやすい名前にしてください。
(2). 仮想マシンを起動します
(3). ディスクの管理で SCSI HDDを初期化してアクセスできることを確認します。
(4). デバイスマネージャで「LSI SAS 1068」の下に SCSI-HDDが登録されていることを確認します。

f:id:ruruucky:20201102010049p:plain

(5). 仮想マシンをシャットダウンします。

(6). VMXファイルをエディタで開き、SCSIバイスをPVSCSIに変更します。

修正前

scsi0.virtualDev = "lsisas1068"

修正後

scsi0.virtualDev = "pvscsi"

(7). 仮想マシンを起動します

(8). デバイスマネージャで「VMware PVSCSI Controller」の下に SCSI-HDDが登録されていることを確認します。

f:id:ruruucky:20201102013130p:plain

(9). 仮想マシンをシャットダウンします

Step4. システムドライブを PVSCSI 化

(1). VMXファイルをエディタで開き、システムドライブをPVSCSIに変更します。

修正前

sata0:0.fileName = "win10.vmdk"
sata0:0.present = "TRUE"
sata0:0.redo = ""

scsi0:0.fileName = "dummy_scsi.vmdk"

修正後

#sata0:0.fileName = "win10.vmdk"
#sata0:0.present = "TRUE"
#sata0:0.redo = ""

scsi0:0.fileName = "win10.vmdk"

この修正でシステムドライブが SATAからPVSCSIに変更され、ダミーのSCSIドライブは未接続状態になります。

(2). 仮想マシンを起動します。

ここで「INACCESSIBLE BOOT DEVICE」というエラーでブルースクリーンで落ちることがあります。

f:id:ruruucky:20201102014808p:plain

再起動後も同じ画面が出て3回目の起動で以下の画面になります。
ここで「F8」を押します

f:id:ruruucky:20201102014939p:plain

「F4」を押し、セーフモードで起動します。 f:id:ruruucky:20201102015247p:plain

これでWindowsが起動できるので再起動してください。今度は、通常通り起動できます。

(3). デバイスマネージャで「VMware PVSCSI Controller」の下に SCSI-HDDが登録されていることを確認します。
f:id:ruruucky:20201102013130p:plain

これで無事 システムドライブのPVSCSI化が完了です。

(4). ダミーで追加した dummy_scsi.vmdk は使用しませんてので削除します。

最後に

「INACCESSIBLE BOOT DEVICE」のブルースクリーン現象について

今までこの現象は見たことがなく、VMware Workstation Player 16 とWindows10 20H2 の組み合わせで始めて確認しました。当初は復帰方法が分からなかったのですが、セーフモードで起動することで直りホッとしています。
このエラーは、システムドライブのデバイスドライバーが存在せずにOSが起動できない時に発生するエラーです。このエラーを回避するために、ダミーのPVSCSIドライブを登録してOSにPVSCSIを認識させていたので、エラーになるのは不思議です。セーフモードで直るところを見て、高速起動モードのせいかと思ったのですが、仮想マシンにはなぜかその設定項目が表示されませんでした。
一方で、PVSCSIやNVMeから SATAに変更したときはこの現象は発生しません。そのため最初にSATAに変更する方法にしています。

謎は深まるばかりです。だれかご存じでしたら教えてください。