내 항목은 다음과 같습니다 /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 비활성화)
답변1
질문에서 볼 수 있듯이 마운트가 성공하고 파일에 smbclient
액세스할 수 있습니다. noserverino
설치 옵션을 추가하는 것이 좋습니다 .
noserverino
서버가 각 파일에 대해 고유한 inode 번호를 생성할 수 없는 상황을 처리합니다. CIFS/SMB에서 파일은 거의 항상 이름으로 액세스(열기)되며, 파일 시스템은 각 파일(이름 외에)에 대한 영구 식별자를 유지할 필요가 없습니다.
일부 서버에서는 inode 번호를 0(잘못)으로 채워 파일 구분이 불가능하게 됩니다.
따라서 noserverino
대상이 INODE 서버가 아니므로 INODE가 클라이언트에 의해 생성된다는 점을 시스템에 알려줍니다.