Estou usando o AFS, NFSv3, NFSv4 e CIFS atualmente. O CIFS é principalmente para suportar clientes Windows e eu o acho menos adequado para clientes UNIX / Linux, já que requer uma montagem separada e conexão para cada usuário que acessa o compartilhamento. Os usuários podem compartilhar o mesmo ponto de montagem, mas eles serão vistos como o mesmo usuário no lado do servidor da conexão.
O NFSv3 é usado principalmente pelos diretórios exportados para outros servidores UNIX / Linux, já que é estável e simples de lidar. Com o AFS e o NFSv4, estou usando o Kerberos. Usando o NFSv4 no Ubuntu 8.04 e versões mais antigas, achei-o um pouco instável, mas ele melhorou constantemente e não tenho problemas de estabilidade com o 10.04+. Parece ser um gargalo de desempenho para usar sec = krb5p, então tenho a tendência de usar sec = krb5i ou sec = krb5.
Um problema que tenho é como os tickets do Kerberos são tratados com a camada NFSv4 do Linux. Um daemon verifica periodicamente / tmp os arquivos que começam com krb5cc_ e corresponde ao ticket com o proprietário do arquivo. Se um usuário tiver mais de um ticket que possui em / tmp, ele usará o arquivo de ticket encontrado primeiro ao varrer. Eu acidentalmente mudei minha identidade quando adquiri temporariamente um ticket para outros fins. O AFS armazena tickets no espaço do Kernel e está associado a uma sessão de login normalmente. Posso fazer o login duas vezes como o mesmo usuário do Linux, mas ainda usar credenciais diferentes do AFS em cada login sem interferência. Eu também tenho que carregar explicitamente as credenciais no kernel, o que normalmente acontece automaticamente durante o login. Eu posso trocar tickets com segurança no userspace sem interferir nas permissões de arquivos.
No geral, eu gosto de muitas das idéias do AFS melhor do que o NFSv3 / 4, mas ele tem um pouco menos de uma comunidade que o desenvolve em comparação ao NFS e ao CIFS. Também é conhecido como OpenAFS, AFS é o nome da oferta de código fechado da IBM. Uma grande diferença entre o AFS e o NFS é que o AFS é mais consistente em seu protocolo de rede e suporte. O AFS fornece bloqueio dentro da banda em vez de usar um protocolo de banda lateral como o NFSv3. Ele também oferece um sistema ACL mais sofisticado entre as ACLs POSIX e as ACLs NFSv4 / NTFS / CIFS. Isso, diferentemente da adição POSIX ACL ao NFSv3, é uma parte padrão do protocolo e os clientes Windows e UNIX / Linux podem acessá-los e modificá-los. Ele também não sofre com o limite de 16 grupos que muitos servidores NFSv3 possuem. Isso faz com que o AFS pareça mais consistente em minha mente nos sistemas Windows e UNIX. Além disso, como o AFS só é acessível por meio do protocolo de rede, não há problemas em que o sistema de arquivos subjacente real se comporte de maneira ligeiramente diferente da visualização exportada dele. Por exemplo, no Linux, um arquivo pode ter rótulos MAC ou SELinux controlando o acesso ou outros atributos estendidos que não são visíveis sobre o NFS. O AFS, por outro lado, simplesmente não possui atributos estendidos.