[unix] FreeBSD에서 ZFS xattr 지원 상태

ZFS를 사용하여 FreeBSD에서 xattrs가 지원되는지 여부 또는 확장 여부를 해결하려고합니다. 충돌하는 정보를 읽었습니다.

  1. zfs get xattr같은리스트를 on (default)위한 /, /usr그리고 /var하지만 같은 off (temporary)위에서 언급 한의 어린이를 포함한 다른 모든 데이터 세트에 대한.
  2. 실행 zfs set xattr=on zroot/usr/home나는 메시지가

    property 'xattr' not supported on FreeBSD: permission denied.

  3. 이 동의 man 페이지 :

    zfs

    xattr속성은 현재 FreeBSD에서 지원되지 않습니다.

  4. setextattr, getextattr그리고 lsextattr충분히 잘 작동하는 것.
  5. 또한 저장하고 사용하여 노드 장치 파일을 복원 관리 rsync --fake-super및 사용 데이터를 볼 수 lsextattrgetextattr.
  6. 위키 백과는 xattr 토론 페이지 에서 토론을합니다 . ZFS가 FreeBSD 8부터 xattr을 지원한다는 주장이 있었지만, 맨 페이지 (3 페이지)를 참조하여 나중에 제거되었습니다.

현재 zfs의 확장 속성이 실제로 작동하지만 xattr사용을 제어 하는 속성이 다른 zfs 배포에서와 같이 작동하지 않는다는 인상을 받았습니다 . 그러나 대량의 백업 데이터를 rsync --fake-super그러한 머신 에서 실행되는 것으로 신뢰하기 전에 확인 (또는 수정)되는 것을 듣고 싶습니다 . 알려진 xattr 문제로 인해 모든 메타 데이터가 손실되지는 않습니다.

중요한 경우 이것은 설치 프로그램에서 ZFS를 설정하여 방금 설정 한 매우 새로운 FreeBSD 10.2 설치입니다.



답변

알다시피, xattrs는 작동하지만 가장자리가 거칠습니다.

때로는 인류 학자처럼 오픈 소스 코드에 접근해야합니다. 이것이 그 자체로 도움이되지 않으면 아마도 더 나은 기여를 유도 할 것입니다 (또는 결국 코드 수정!)

소스 코드에서 이것을 찾았습니다.

https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514

/*
 * 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/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302

그러나 이것은 당신을 일시 중지시킵니다 :
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


답변