대규모 확장 속성(테스트에서 하나의 속성 값이 68MB를 초과함)을 지원하는 APFS 파일 시스템을 갖춘 macOS 클라이언트(12.6.7)가 있습니다.
ZFS 파일 시스템과 Samba 버전 4.15.13-Ubuntu를 갖춘 Ubuntu Server 22.04.2 LTS가 설치된 NAS 서버가 있습니다.
ZFS에는 xattr=sa 세트가 있습니다. 따라서 확장된 속성은 NAS에서 활성화됩니다.
다음과 같이 실행되도록 Samba를 구성했습니다 vfs fruit
.
ea support = yes
vfs objects = catia fruit streams_xattr
fruit:resource = stream
fruit:metadata = stream
이 구성을 사용하면 더 작은 확장 속성과 리소스 포크(64KB 미만)를 NAS 공유에 쓸 수 있었습니다.
그러나 더 큰 확장 속성과 리소스 포크(64KB 이상)에서는 작동하지 않았습니다.
많은 스레드, 매뉴얼 페이지 및 코드 후에 나는 이 작은 것을 우연히 발견했습니다.메모zfs 매뉴얼 페이지에서:
xattr = 켜기 | 떨어져 | 사
기본값 on은 디렉터리 기반 확장 속성을 활성화합니다. 이 확장 속성 스타일은 파일에 설정할 수 있는 속성의 크기나 수에 실질적인 제한을 두지 않습니다. Linux에서는 getxattr(2) 및 setxattr(2) 시스템 호출이 최대 크기를 64K로 제한합니다.
"실질적인 제한 없음"으로 Linux에 ZFS가 있다는 점은 매우 훌륭합니다. Linux 커널(실용적인 것)만이 실제로 확장 속성의 크기를 제한합니다.
좋습니다. ZFS 측이나 Linux 측에서는 문제를 해결할 수 없습니다.
다음 단계는삼바구체적으로.
확장된 속성의 크기 제한으로 인해 이를 위한 대체 저장소가 필요했습니다. 리소스 포크의 경우 파일에 쓰는 설정이 있습니다.
fruit:resource = file
이 기능을 활성화하면 공유에 대규모 리소스 포크를 쓸 수 있습니다.
그러나 Fruit에는 다른 메타데이터(예: 확장 속성)를 동반 파일에 쓰는 옵션이 없습니다.
과일:메타데이터 = [ 스트림 | 네타톡 ]
- netatalk (기본값) - Netatalk 호환 xattr 사용
- 스트림 - 스트림을 VFS 스택의 다음 모듈로 전달합니다.
stream
streams_xattr이 확장된 속성에 쓰려고 하기 때문에 작동하지 않습니다.
netatalk
과일이 확장 속성이라는 이름의 netatalk 호환에 쓰려고 하기 때문에 작동하지 않습니다.
메타데이터를 파일에도 쓸 수 있는 옵션이 없는 이유는 무엇입니까?
이렇게 하면 Samba가 제공된 기본 파일 시스템과 더 독립적이게 됩니다(확장 속성이 전혀 없더라도).
내 현재 솔루션은 다음을 사용하는 것입니다.
ea support = no
이렇게 하면 macOS 클라이언트가 강제로 생성됩니다.AppleDouble 파일리소스 포크 및 확장된 속성에 대한 것입니다.
이를 통해 클라이언트의 리소스 포크와 확장 속성이 유지됩니다.
물론 이것은 Windows 클라이언트와 호환되지 않으며 현재로서는 괜찮지만 이 상자를 사용하는 방법에는 상당한 제한이 있습니다.
또한 vfs fruit
필요 하기 때문에 ea support = yes
사용할 수 없습니다. 과일에 대해 읽은 내용에 따르면 이는 NAS 성능이 느려지고 Time Machine 설정도 쉽지 않다는 것을 의미합니다. 나는 다른 결과에 대해서도 모른다. 과일은 FULLSYNC 기능을 구현하는 것 같습니다(참고자료 참조 fruit:time machine
). 로부터기존 Apple 문서정전 시 깨끗한 Time Machine 백업에 필요한 것처럼 읽혀집니다.
또한 스트림을 데이터베이스에 기록하는 방법도 고려했지만 이 vfs 개체에 문제가 발생하면 문제를 해결하기가 훨씬 더 어려워집니다(자세한 내용은보다). "프로덕션에서는 이 모듈을 사용하지 마십시오"에 주의하세요.
Samba를 작동시키기 위해 확장 속성 제한이 없는 OS로 전환하는 것은 적어도 현재로서는 선택 사항이 아닙니다.
Samba 공유(따라서 vfs 과일)의 확장 속성을 비활성화하지 않고 Linux 시스템에서 macOS 리소스 포크 및 확장 속성을 완벽하게 지원하는 또 다른 옵션이 있습니까?