Estoy tratando de averiguar si o no, o más bien hasta qué punto, xattrs son compatibles con FreeBSD usando ZFS. He leído alguna información contradictoria.
zfs get xattr
lo enumera comoon (default)
para/
,/usr
y/var
, perooff (temporary)
para todos los demás conjuntos de datos, incluidos los hijos de los mencionados anteriormente.- En ejecución
zfs set xattr=on zroot/usr/home
recibo el mensajeproperty 'xattr' not supported on FreeBSD: permission denied
. - Esto concuerda con la
zfs
página del manual :La
xattr
propiedad actualmente no es compatible con FreeBSD. setextattr
,getextattr
Ylsextattr
parece funcionar bastante bien.- También logré guardar y restaurar un nodo de archivo de dispositivo usando
rsync --fake-super
, y pude ver sus datos usandolsextattr
ygetextattr
. - Wikipedia tiene alguna discusión en la página de conversación de xattr . Aparentemente, una vez hubo una afirmación de que ZFS admite xattr desde FreeBSD 8, pero que se eliminó más adelante, con referencia a la página de manual (ver 3.).
Actualmente tengo la impresión de que los atributos extendidos en zfs funcionan en la práctica, pero que la xattr
propiedad que controlaría su uso no funciona como lo haría en otras distribuciones de zfs. Pero me gustaría escuchar eso confirmado (o corregido) antes de confiar en grandes cantidades de datos de copia de seguridad rsync --fake-super
en una máquina de este tipo. Prefiero no perder todos mis metadatos debido a problemas conocidos de xattr.
Si es importante, esta es una instalación muy reciente de FreeBSD 10.2 que acabo de configurar, con ZFS configurado por el instalador.
Respuestas:
Como ha encontrado, xattrs funcionará, pero hay bordes ásperos.
A veces hay que acercarse al código fuente abierto como un antropólogo. Si esto no es útil en sí mismo, tal vez esto provocará algunas mejores contribuciones (¡o eventualmente correcciones de código!)
Encontré esto en el código fuente:
https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514
y esto https://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302
y, sin embargo, esto te da una pausa: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638
Entonces, lo que creo que está sucediendo realmente es que los xattr funcionan, pero la funcionalidad para desactivarlos (o activarlos) mediante las propiedades del conjunto de datos de ZFS está rota, por lo que el mensaje "no compatible" significa "estás solo".
Hay un código allí que establece MNTOPT_XATTR pero no lo he rastreado. intentar cambiarlo usando zfs set le da el mensaje no compatible. Supongo que eso explica la rareza de la propiedad zfs xattr con /, / usr, / var y la configuración / comportamiento en conflicto de / home.
Esto arroja algo de luz sobre las cosas. https://www.lesbonscomptes.com/pages/extattrs.html
fuente