メインコンテンツまでスキップ

Mac OS クライアントが空のフォルダを削除できないのはなぜですか?

Views:
132
Visibility:
Public
Votes:
0
Category:
ontap-9
Specialty:
cifs
Last Updated:

に適用されます

  • 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 違反を受信します

追加情報

次のような回避策が考えられます。

  1. 同じ共有上に「削除する」フォルダを作成します
  2. 空のディレクトリを「削除対象」に移動し、一意の名前を付けます(例:クライアントのホスト名と日付に基づく)。
  3. 空のディレクトリを削除しようとしました
  • 削除が正常に実行される場合は、すべて問題ありません
  • 削除に失敗した場合は、あとでクリーンアップできます

メモ:手順 2 で一意の名前を使用することで、今後同じディレクトリ名での名前変更が正常に行われるようになります。