Estoy tratando de averiguar si FreeBSD usa ZFS o no, o más bien hasta qué punto, los xattrs son compatibles. He leído información contradictoria.
zfs get xattr
lo enumera comoon (default)
para/
,/usr
y/var
, pero comooff (temporary)
para todos los demás conjuntos de datos, incluidos los secundarios de los mencionados anteriormente.- Ejecutando
zfs set xattr=on zroot/usr/home
Recibo el mensajeproperty 'xattr' not supported on FreeBSD: permission denied
. - Esto está de acuerdo con
zfs
página man:El
xattr
Actualmente, la propiedad no es compatible con FreeBSD. setextattr
,getextattr
ylsextattr
parecen funcionar lo suficientemente bien.- También logré guardar y restaurar un nodo de archivo de dispositivo usando
rsync --fake-super
, y podría ver sus datos usandolsextattr
ygetextattr
. - Wikipedia tiene una discusión en la página de discusión de xattr. Aparentemente, una vez hubo una afirmación de que ZFS admite xattr desde FreeBSD 8, pero eso se eliminó más tarde, 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 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 grandes cantidades de datos de respaldo a un rsync --fake-super
corriendo en tal máquina. Preferiría no perder todos mis metadatos debido a problemas conocidos de xattr.
Si es importante, esto es muy Instalación nueva de FreeBSD 10.2 que acabo de configurar, con ZFS configurado por el instalador.
Respuesta aceptada:
Como ha descubierto, xattrs funcionará, pero hay asperezas.
A veces tienes que acercarte al código fuente abierto como un antropólogo. Si esto no es útil en sí mismo, tal vez provoque 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
/*
* 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);
y este 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
Relacionado:No se puede escribir en el archivo en FreeBSD:¿sistema de archivos de solo lectura?Entonces, lo que creo que realmente está sucediendo es que xattrs funciona pero la funcionalidad para desactivarlos (o activarlos) mediante las propiedades del conjunto de datos ZFS no funciona, por lo que el mensaje "no compatible" significa que "está solo".
Hay un código allí que establece MNTOPT_XATTR pero no lo he rastreado. intentar cambiarlo usando zfs set te da el mensaje no compatible. Supongo que eso explica la rareza de la propiedad xattr de zfs 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