Windows Server バックアップで SMB 共有フォルダにバックアップを保存する時のエラーについて

Last Update: feedback 共有

本記事は、マイクロソフト社員によって公開されております。

こんにちは、Windows サポートチームです。

今回は Windows Server バックアップを使ってバックアップする場合に発生するエラーとその回避策についてご紹介します。


事象の内容

Windows Server バックアップを使って SMB 共有フォルダへバックアップを保存するシナリオにて、クライアントから SMB 共有フォルダ上の メタデータファイルの参照に失敗することが報告されております。
当該事象発生時には、SMB 共有フォルダ上の xml ファイルにて、エラーコード 0x80070012 が記録されることとなり、アプリケーションイベントには BackUp 517 イベントが記録されます。

アプリケーションイベントへの出力例は下記通りでございます。

ログ:アプリケーション
ソース:Bakcup
ID:517
メッセージ:
[YYYY-MM-DD(バックアップ開始日時)に開始したバックアップ操作は次のエラーコード 0x80070012(これ以上ファイルがありません。)のため失敗しました。
イベントの詳細で解決策を確認し問題の解決後にバックアップ操作を再実行してください。


事象の発生要因

本事象の要因は、SMB キャッシュの保持期間の問題である報告されております。

SMB キャッシュは、SMB 接続しているフォルダ (ディレクトリ) に関するキャッシュ情報です。
フォルダやその中に含まれているファイルの情報 (メタデータなど) についてのキャッシュを保持しています。
キャッシュが保持されている間は、キャッシュの情報を基にファイル サーバ―へアクセスを行います。

本事象におきましては、SMB キャッシュの更新に何らかの問題が発生し、古い情報を元に存在しないファイルへのアクセスが試みられ得た結果、0x80070012 (ERROR_NO_MORE_FILES) にてバックアップが失敗し、発生いたします。


対策

クライアントの SMB キャッシュを無効とすること (“DirectoryCacheLifetime = 0” をセットすること) で、常に最新のディレクトリ情報を取得する動作とし、アクセスに失敗する問題の解消が確認されております。

Directory Cache についてはフォルダ内容の参照時 (SMB の QUERY_DIRECTORY メッセージ実行時) に作成されます。
このキャッシュは “特定のフォルダー内に、どのようなフォルダーやファイルが存在しているか” という情報をキャッシュします。
また、本キャッシュの有効期限は既定で 10 秒です。キャッシュにヒットした場合でも、キャッシュの有効期限は延長されません。

本キャッシュを無効とするのには、有効期限を既定の 10 秒から 0 秒に変更することで実現可能です。
以下のレジストリで設定後、設定反映のため、OS の再起動を実施してください。

キー: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters
名前: DirectoryCacheLifetime
種類: REG_DWORD
既定値: 10 (秒)
備考: 0 に設定すると本キャッシュは無効となります。


参考資料

DirectoryCacheLifetime に関する詳細情報は下記ページに掲載されておりますので、合わせてご参考いただければ幸いでございます。
https://learn.microsoft.com/ja-jp/windows-server/administration/performance-tuning/role/file-server/


いかがでしたでしょうか。本投稿が少しでも皆様のお役に立てば幸いです。 なお、本情報の内容(添付文書、リンク先などを含む)は、作成日時でのものであり、予告なく変更される場合があります。