stornvme エラーが発生し SSDディスクにアクセスできない状態になる現象についての紹介です。
突然、NVMe のSSDのディスクドライブにアクセスできなくなります。状況によってはファイルは見えますが、ファイルにアクセスすると、「無効な MS-DOS ファンクションです。」エラーが発生します。
なお、SATA接続のSSDではこの現象は発生しません。
イベントビューアーでログを確認すると、次のログが記録されています。
stornvmeのエラーが発生し、以降DiskやNtfsのエラーが連続して大量に発生します。
最初に以下の警告が発生します。
続いて以下のエラーが発生します。
エラー後にディスクにアクセスできなくなるため、以下の警告が大量に発生します。
マシンを再起動します。ドライバーのエラーのため再起動で復旧できる可能性が高いです。再起動後にディスクにアクセスできるかを確認します。
SSDへの同時アクセスが集中したため、処理が追い付かないなどの原因でドライバーでエラーが発生した可能性です。
いったんファイルの大半をNVMe SSDではない別のドライブに移し替えてアクセスを減らしてどうなるか状況を確認してみようと思います。
ファイルを移動させてアクセスを減らした結果、エラーの発生はなくなりました。
しかし、特定のセクタにアクセスしなくなっただけの可能性もあるため、何とも言えない状況です。
その後、アクセスの少ないNVMe SSDにおいても、stornvmeのエラーが発生しました。ただし発生頻度は大幅に下がりました。
SSDのファームウェア更新が提供されている場合は、ファームウェア更新により改善される場合があります。
以前の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に設定します。
設定後マシンを再起動します。
HmbAllocationPolicyの値を0にして改善される場合がありますが、パフォーマンスが低下するとの情報があります。特定のSSDコントローラーと特定のWindowsのバージョンでの組み合わせの場合、
高負荷・連続書き込み時に書き込みキューが一時的に詰まり、stornvmeエラーが発生する場合があるとのことです。
QueueDepthのサイズを小さくして、キューの詰まりを軽減する方法があります。
キューのデフォルトは 64〜1024MBに設定されていますが、これを 32MB に制限すると、連続書き込み時の AER が激減する例が多いです。
レジストリエディタを起動し、以下のキーにアクセスします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device
次の名前で、DORD(32ビット)値を作成します。
NumberOfRequests
作成したNumberOfRequests の値を32 または 64 に設定します。
設定後マシンを再起動します。
未検証ですが、セクタサイズを4KB以下でフォーマットし、小さくすると解消する可能性があるという情報があります。
stornvme のエラーのため、SSDに発生する固有の症状のようです。再起動により改善されましたが、エラー時にはディスク破損とほぼ同様の症状になるため、
精神的によろしくないエラーです。