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가 클라이언트에 의해 생성된다는 점을 시스템에 알려줍니다.

관련 정보