ZFS를 사용하여 FreeBSD에서 xattrs가 지원되는지 여부 또는 확장 여부를 해결하려고합니다. 충돌하는 정보를 읽었습니다.
zfs get xattr
같은리스트를on (default)
위한/
,/usr
그리고/var
하지만 같은off (temporary)
위에서 언급 한의 어린이를 포함한 다른 모든 데이터 세트에 대한.- 실행
zfs set xattr=on zroot/usr/home
나는 메시지가
property 'xattr' not supported on FreeBSD: permission denied
. - 이 동의 man 페이지 :
이
xattr
속성은 현재 FreeBSD에서 지원되지 않습니다. setextattr
,getextattr
그리고lsextattr
충분히 잘 작동하는 것.- 또한 저장하고 사용하여 노드 장치 파일을 복원 관리
rsync --fake-super
및 사용 데이터를 볼 수lsextattr
와getextattr
. - 위키 백과는 xattr 토론 페이지 에서 토론을합니다 . ZFS가 FreeBSD 8부터 xattr을 지원한다는 주장이 있었지만, 맨 페이지 (3 페이지)를 참조하여 나중에 제거되었습니다.
현재 zfs의 확장 속성이 실제로 작동하지만 xattr
사용을 제어 하는 속성이 다른 zfs 배포에서와 같이 작동하지 않는다는 인상을 받았습니다 . 그러나 대량의 백업 데이터를 rsync --fake-super
그러한 머신 에서 실행되는 것으로 신뢰하기 전에 확인 (또는 수정)되는 것을 듣고 싶습니다 . 알려진 xattr 문제로 인해 모든 메타 데이터가 손실되지는 않습니다.
중요한 경우 이것은 설치 프로그램에서 ZFS를 설정하여 방금 설정 한 매우 새로운 FreeBSD 10.2 설치입니다.
답변
알다시피, xattrs는 작동하지만 가장자리가 거칠습니다.
때로는 인류 학자처럼 오픈 소스 코드에 접근해야합니다. 이것이 그 자체로 도움이되지 않으면 아마도 더 나은 기여를 유도 할 것입니다 (또는 결국 코드 수정!)
소스 코드에서 이것을 찾았습니다.
/*
* Register property callbacks.
*
* It would probably be fine to just check for i/o error from
* the first prop_register(), but I guess I like to go
* overboard...
*/
error = dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_ATIME), atime_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_XATTR), xattr_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_RECORDSIZE), blksz_changed_cb, zfsvfs);
그러나 이것은 당신을 일시 중지시킵니다 :
https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638
따라서 실제로 발생하는 것은 xattrs가 작동 하지만 ZFS 데이터 세트 속성에 의해 xattrs 를 끄거나 끄는 기능이 손상되어 “지원되지 않음”메시지는 “당신은 스스로”라는 의미입니다.
거기에 MNTOPT_XATTR을 설정하는 코드가 있지만 추적하지 않았습니다. zfs set을 사용하여 변경하려고하면 지원되지 않는 메시지가 표시됩니다. 내 생각에 zfs xattr 속성이 /, / usr, / var 및 / home의 충돌하는 설정 / 동작으로 설명됩니다.
이것은 사물에 약간의 빛을 비 춥니 다.
https://www.lesbonscomptes.com/pages/extattrs.html