linux - smb / cifs古いcp:読み取るために 'file.JPG'を開くことができません:古いファイルハンドル

linux - smb / cifs古いcp:読み取るために 'file.JPG'を開くことができません:古いファイルハンドル

私の項目は次のとおりです/etc/fstab

//fritz.box/fritz.nas /mnt/smb/fritz.nas cifs   user,cache=loose,nohandlecache,username=name,workgroup=WORKGROUP,password=pwd,vers=3.0         0      0

インストールは完全に機能しますが、サーバーからローカルコンピュータにファイルをコピーしようとすると、次のエラーが発生します。

cp: cannot open 'file.JPG' for reading: Stale file handle

またはrsyncを使用している場合:

rsync: [sender] send_files failed to open "path/to/file.JPG": Stale file handle (116)
        937.29K 100%  915.32MB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 88 bytes  received 35 bytes  246.00 bytes/sec
total size is 937.29K  speedup is 7,803.09
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender=v3.2.3]

smbバージョンを1に設定すると、エラーは消えます(既知のセキュリティ上の問題によりこれを回避したい)。

キャッシュを介していくつかの点を変更してみました。https://forums.unraid.net/topic/86707-cifs-smb-stale-file-handle/これが問題の原因であることを示唆していますが、機能しません。 (すでにcache=none試しましたfstab

この問題の原因が何であるか(キャッシュではない可能性があります)、またはキャッシュをオフにしようとしたときに何が間違っているのかというアイデアはありますか?

編集:ファイルダウンロードテストsmbclient(事前にSMBv1を無効にする)

SMBv1機能が削除されました

SMBクライアント動作中

答え1

質問が示すように、マウントは成功し、ファイルにsmbclientアクセスできます。noserverinoインストールオプションを追加することをお勧めします。

noserverinoサーバーが各ファイルに対して一意のinode番号を生成できない状況を処理します。 CIFS / SMBでは、ファイルはほとんど常に名前でアクセス(開く)され、ファイルシステムは各ファイル(名前に加えて)の永続識別子を保持する必要はありません。

一部のサーバーでは、inode番号を0(誤って)で埋め、ファイルを区別することはできません。

したがって、noserverinoターゲットが INODE サーバーではないため、INODE がクライアントによって生成されることをシステムに通知します。

関連情報