Mac OS クライアントが空のフォルダを削除できないのはなぜですか?
に適用されます
- ONTAP 9
- CIFS
- Mac OS 10.14
- Mac OS 10.15
回答
SMBv2 以降では、ファイルまたはフォルダを削除すると、フォルダに「 delete on close 」という名前のが設定されます。
その後フォルダを閉じると、ファイルシステムから削除されます。
MacOS CIFS クライアントの動作は、 Windows クライアントとは異なり、削除するためにフォルダに排他的にアクセスする必要があります。
この動作により、共有違反が発生してクライアントがフォルダを削除できなくなる可能性があります。
パケットトレースからの例:
18557 2020-01-30 15:46:09.003908 172.18.24.33 172.18.20.90 SMB2 Create Request File: ...\Folder1\TestFolder
18558 2020-01-30 15:46:09.004297 172.18.20.90 172.18.24.33 SMB2 Create Response File: ...\Folder1\TestFolder
44599 2020-01-30 15:46:24.759237 172.18.24.49 172.18.20.90 SMB2 Create Request File: ...\Folder1\TestFolder;SetInfo Request FILE_INFO/SMB2_FILE_DISPOSITION_INFO;Close Request
44600 2020-01-30 15:46:24.759696 172.18.20.90 172.18.24.49 SMB2 Create Response, Error: STATUS_SHARING_VIOLATION;SetInfo Response, Error: STATUS_SHARING_VIOLATION;Close Response, Error: STATUS_SHARING_VIOLATION
- フレーム 18557 :クライアント A が読み取りアクセス用にファイルを開き、読み取り、書き込み、削除のために共有します。(このパケットトレース内でファイルが閉じられることはありません)。
- フレーム 44599 :クライアント B がファイルを開いて削除アクセスを行い、ファイルを共有する(ファイルへの排他的アクセス)
- フレーム 44600 :クライアント B は status_sharing 違反を受信します
追加情報
次のような回避策が考えられます。
- 同じ共有上に「削除する」フォルダを作成します
- 空のディレクトリを「削除対象」に移動し、一意の名前を付けます(例:クライアントのホスト名と日付に基づく)。
- 空のディレクトリを削除しようとしました
- 削除が正常に実行される場合は、すべて問題ありません
- 削除に失敗した場合は、あとでクリーンアップできます
メモ:手順 2 で一意の名前を使用することで、今後同じディレクトリ名での名前変更が正常に行われるようになります。