Estou tentando descobrir se ou não, ou melhor, em que extensão, os xattrs são suportados no FreeBSD usando o ZFS. Eu li algumas informações conflitantes.
zfs get xattr
lista comoon (default)
para/
,/usr
e/var
, mas comooff (temporary)
para todos os outros conjuntos de dados, incluindo filhos dos mencionados acima.- Em execução
zfs set xattr=on zroot/usr/home
, recebo a mensagemproperty 'xattr' not supported on FreeBSD: permission denied
. - Isso concorda com a
zfs
página do manual :A
xattr
propriedade atualmente não é suportada no FreeBSD. setextattr
,getextattr
Elsextattr
parecem funcionar bem o suficiente.- Também consegui salvar e restaurar um nó do arquivo de dispositivo usando
rsync --fake-super
e pude ver seus dados usandolsextattr
egetextattr
. - A Wikipedia tem alguma discussão na página de discussão do xattr . Aparentemente, houve uma alegação de que o ZFS suporta o xattr desde o FreeBSD 8, mas que foi removido posteriormente, com referência à página de manual (veja 3.).
Atualmente, tenho a impressão de que atributos estendidos no zfs funcionam na prática, mas que a xattr
propriedade que controlaria seu uso não funciona como em outras distribuições do zfs. Mas eu gostaria de ouvir isso confirmado (ou corrigido) antes de confiar em grandes quantidades de dados de backup rsync --fake-super
em uma máquina em execução. Prefiro não perder todos os meus metadados devido a problemas conhecidos do xattr.
Se isso importa, esta é uma instalação muito recente do FreeBSD 10.2 que acabei de configurar, com o ZFS configurado pelo instalador.
Respostas:
Como você descobriu, o xattrs funcionará, mas existem arestas.
Às vezes você precisa abordar o código-fonte aberto como um antropólogo. Se isso não for útil por si só, talvez isso cause algumas contribuições melhores (ou, eventualmente, correções de código!)
Encontrei isso no código fonte:
https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514
e isso https://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302
e ainda assim isso dá uma pausa: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638
Então, o que eu acho que realmente está acontecendo é que xattrs funciona, mas a funcionalidade de desativá-los (ou ativá-los) pelas propriedades do conjunto de dados do ZFS é interrompida, portanto a mensagem "não suportado" significa "você está por sua conta".
Existe algum código lá que define MNTOPT_XATTR, mas eu não o localizei. tentar alterá-lo usando o zfs set recebe a mensagem não suportada. Meu palpite é que explica a estranheza da propriedade zfs xattr com /, / usr, / var e a configuração / comportamento conflitante de / home.
Isso lança alguma luz sobre as coisas. https://www.lesbonscomptes.com/pages/extattrs.html
fonte