stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる

stornvme エラーが発生し SSDディスクにアクセスできない状態になる現象についての紹介です。

現象

突然、NVMe のSSDのディスクドライブにアクセスできなくなります。状況によってはファイルは見えますが、ファイルにアクセスすると、「無効な MS-DOS ファンクションです。」エラーが発生します。
なお、SATA接続のSSDではこの現象は発生しません。

エラーログ

イベントビューアーでログを確認すると、次のログが記録されています。
stornvmeのエラーが発生し、以降DiskやNtfsのエラーが連続して大量に発生します。
stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像1

最初に以下の警告が発生します。

警告メッセージ
ソース: stornvme
デバイス \Device\RaidPort1 にリセットが発行されました。

stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像2


続いて以下のエラーが発生します。

エラーメッセージ
ソース: stornvme
ドライバーは \Device\RaidPort1 でコントローラー エラーを検出しました。

stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像3

エラー後にディスクにアクセスできなくなるため、以下の警告が大量に発生します。

警告メッセージ
ソース: Ntfs (Microsoft-Windows-Ntfs)
トランザクション ログへのデータのフラッシュに失敗しました。VolumeId: (ドライブレター):、DeviceName: \Device\HarddiskVolume(N) で破損が発生している可能性があります。 (指定した要求は対象デバイスに対して有効な操作ではありません。)

stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像4

警告メッセージ
ソース: Disk
ページング操作中にデバイス \Device\Harddisk(ディスク番号)\DR(ディスク番号) 上でエラーが検出されました。

stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像5

対処法(1)

マシンを再起動します。ドライバーのエラーのため再起動で復旧できる可能性が高いです。再起動後にディスクにアクセスできるかを確認します。

対処法(2) : 再発する場合

SSDへのアクセス集中軽減

SSDへの同時アクセスが集中したため、処理が追い付かないなどの原因でドライバーでエラーが発生した可能性です。 いったんファイルの大半をNVMe SSDではない別のドライブに移し替えてアクセスを減らしてどうなるか状況を確認してみようと思います。
ファイルを移動させてアクセスを減らした結果、エラーの発生はなくなりました。 しかし、特定のセクタにアクセスしなくなっただけの可能性もあるため、何とも言えない状況です。
その後、アクセスの少ないNVMe SSDにおいても、stornvmeのエラーが発生しました。ただし発生頻度は大幅に下がりました。

SSDのファームウェア更新

SSDのファームウェア更新が提供されている場合は、ファームウェア更新により改善される場合があります。

Host Memory Buffer (HMB) の割り当てを変更する

以前のWindowsはSSDが使うHost Memory Buffer(HMB)を64MB確保していましたが、Windows 11 24H2では200MBまで確保するようになりました。

そのため、一部のSSDコントローラー200MBの割り当てに正しく対応できず、大量の書き込み(連続書き込み)が発生してバッファがあふれた瞬間にクラッシュし、 stornvmeエラーが発生し、ディスクアクセス不可、またはフリーズまたはブルースクリーンになります。

レジストリエディタを起動し、以下のキーにアクセスします。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorPort


次の名前で、DORD(32ビット)値を作成します。

HmbAllocationPolicy

作成したHmbAllocationPolicyの値を2に設定します。
設定後マシンを再起動します。

stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像6

メモ
改善しない場合は、HmbAllocationPolicyの値を0にして改善される場合がありますが、パフォーマンスが低下するとの情報があります。

QueueDepthの変更

特定のSSDコントローラーと特定のWindowsのバージョンでの組み合わせの場合、 高負荷・連続書き込み時に書き込みキューが一時的に詰まり、stornvmeエラーが発生する場合があるとのことです。
QueueDepthのサイズを小さくして、キューの詰まりを軽減する方法があります。
キューのデフォルトは 64〜1024MBに設定されていますが、これを 32MB に制限すると、連続書き込み時の AER が激減する例が多いです。

レジストリエディタを起動し、以下のキーにアクセスします。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device


次の名前で、DORD(32ビット)値を作成します。

NumberOfRequests

作成したNumberOfRequests の値を32 または 64 に設定します。
設定後マシンを再起動します。

stornvme エラーが発生し NVMeのSSDドライブにアクセスできない状態になる:画像7

セクタサイズの変更

未検証ですが、セクタサイズを4KB以下でフォーマットし、小さくすると解消する可能性があるという情報があります。

まとめ

stornvme のエラーのため、SSDに発生する固有の症状のようです。再起動により改善されましたが、エラー時にはディスク破損とほぼ同様の症状になるため、 精神的によろしくないエラーです。

AuthorPortraitAlt
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
作成日: 2020-11-09