AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 682711
Accepted
zenlord
zenlord
Asked: 2021-12-17 04:28:01 +0800 CST2021-12-17 04:28:01 +0800 CST 2021-12-17 04:28:01 +0800 CST

$HOME centralizado para dispositivos de roaming - sincronização em vez de NFS?

  • 772

Por mais de uma década tenho trabalhado em um ambiente Debian completo em meu pequeno escritório (atualmente 1 servidor, 7 usuários, 3 desktops, 4 laptops). A autenticação é baseada em Kerberos, os perfis de usuário são gerenciados em LDAP e $HOME é servido a todos os clientes sobre NFSv4 com a ajuda de pam_mount ou autofs. Esta configuração é muito boa para usuários de desktop que trabalham na LAN local.

Dois anos atrás, comecei a usar a mesma configuração para usuários de laptop. A conexão WiFi causou alguma lentidão adicional e, com certeza, quando os usuários tentaram usar o laptop fora do escritório, as coisas ficaram muito lentas. Otimizar $XDG_{CACHE,DATA,CONFIG}_HOME e analisar otimizações específicas para Firefox no NFS tornou as coisas um pouco melhores.

Agora estou pensando em mover o $ HOME para os laptops+desktops. É bom que um usuário possa trocar de dispositivo se um cair, mas isso só acontece de vez em quando. Sacrificar essa flexibilidade para uma experiência de usuário mais rápida no dia-a-dia parece uma boa decisão. Se eu pudesse sincronizar bidirecionalmente o $HOME local com o servidor central na inicialização e no desligamento, provavelmente não haveria nenhuma compensação ...

  • 'unison' parece ser um bom candidato para manter o $HOME local em sincronia com uma cópia central, mas parece exigir exatamente as mesmas versões entre servidor e cliente, e com as quais não posso me comprometer.
  • 'lsyncd' parece ser um candidato muito bom, mas não encontro nenhuma história de usuário usando a ferramenta para seus diretórios $HOME ...
  • Eu até dei uma breve olhada no 'GlusterFS', mas parece que é uma substituição não trivial. Alguém tem alguma experiência e talvez melhores práticas para compartilhar? Eu não me importo de experimentar, mas temo que estou perdendo algumas desvantagens óbvias para o acima... Thx!
nfs unison
  • 4 4 respostas
  • 511 Views

4 respostas

  • Voted
  1. Stephen Kitt
    2021-12-17T06:13:59+08:002021-12-17T06:13:59+08:00

    Eu uso o Syncthing para configurações semelhantes a esta, tanto para diretórios pessoais completos quanto para subconjuntos de diretórios pessoais. Sincroniza arquivos, bidirecionalmente ou unidirecionalmente; é transparente se os usuários nunca fizerem alterações nos mesmos arquivos em dois lugares diferentes e, mesmo quando houver alterações conflitantes, ele consegue lidar bem com isso — não perde dados.

    Funciona bem com versões distorcidas, dentro dos limites. Eu o tenho rodando em uma variedade de telefones e computadores; os telefones rastreiam a versão mais recente automaticamente, os computadores usam o que estiver na distribuição instalada. As sincronizações completas do diretório inicial só funcionam em computadores com distribuições idênticas (devido a alterações nos arquivos de configuração), mas as sincronizações parciais funcionam bem com configurações variadas.

    O Syncthing funciona muito bem em LANs, mas também suporta sincronização pela Internet e é configurável para que você possa ajustá-lo a qualquer nível de confiança em que esteja interessado.

    • 4
  2. Best Answer
    zenlord
    2021-12-26T08:04:01+08:002021-12-26T08:04:01+08:00

    Como @marcus-müller apontou, essa funcionalidade é amplamente referenciada como 'perfis de usuário em roaming' e é construída principalmente em torno de dois pilares:

    • As credenciais do usuário
    • Diretórios $HOME do usuário

    O primeiro é comumente endereçado com sistemas centralizados como LDAP+Kerberos e com SSSD no cliente. O segundo pode ser resolvido usando NFSv4 e krb5/krb5i/krb5p, mas pode resultar em lentidão se o seu cliente estiver em WiFi ou em um local remoto.

    Se você deseja se afastar de um $HOME centralizado para seus usuários, mas não deseja abrir mão da flexibilidade de uma configuração centralizada, uma solução alternativa pode ser:

    • Após o login, execute um script rsync para (crie o $HOME local se ele não existir e) sincronize bidirecionalmente o $HOME local com o $HOME central
    • Ao sair, execute um script rsync para fazer upload de todas as alterações locais para o $HOME central
    • Opcionalmente, execute sincronizações intermitentes

    O GDM pode ser configurado para executar scripts no login ( /etc/gdm/PostLogin/Default) e logout ( /etc/gdm/PostSession/Default). Um temporizador cronjob ou systemd pode ser configurado para as sincronizações intermitentes.

    Algumas ressalvas que pensei:

    • Tente limitar o tamanho dos diretórios $HOME, por exemplo, com cota e um diretório separado onde os usuários podem armazenar documentos compartilhados (que ainda podem ser compartilhados por NFS sem a penalidade de lentidão geral)
    • Otimize os scripts rsync para omitir os diretórios cache e tmp (ou talvez simplesmente realoque o $XDG_CACHE_HOME e $XDG_DATA_HOME fora do $HOME)

    /EDIT: Publiquei um script de shell para ajudar a sincronizar o $HOME local com o $HOME remoto: https://github.com/zenlord/vagabond.sh - sinta-se à vontade para comentar :)

    • 4
  3. jf1
    2021-12-23T23:41:22+08:002021-12-23T23:41:22+08:00

    Extrair o diretório inicial de um servidor central durante o login e sincronizá-lo de volta no logout também pode ser feito com o PAM por meio de seu módulo pam-script - usando-o para chamar um comando rsync apropriado.

    • 2
  4. Gilles 'SO- stop being evil'
    2021-12-17T06:22:37+08:002021-12-17T06:22:37+08:00

    'unison' parece ser um bom candidato para manter o $HOME local em sincronia com uma cópia central, mas parece exigir exatamente as mesmas versões entre servidor e cliente, e com as quais não posso me comprometer.

    Você pode ter várias versões instaladas no servidor. Defina addversionno = trueno perfil do Unison para executá-lo no servidor.unison-VERSION

    Você pode instalar várias versões no servidor. Se você não quer o incômodo de fazer suas próprias compilações, tanto os binários oficiais quanto os pacotes Debian dependem apenas da Glibc. Os pacotes oficiais são atualmente construídos no Ubuntu 18.04, mas na prática eles funcionarão mesmo em sistemas mais antigos.

    Se você instalar suas próprias versões, é claro que precisará monitorar os problemas de segurança. Não me lembro de ter visto um aviso de segurança no Debian e não há um no (relativamente recente) rastreador de problemas do Github, mas isso não significa que não acontecerá.

    Observe que não apenas as versões do Unison precisam corresponder, mas as versões do OCaml com as quais foram criadas podem ter que corresponder também. Por outro lado, os sistemas operacionais e a arquitetura da CPU não precisam corresponder.

    Então, do ponto de vista técnico, o Unison seria bom. Não tenho certeza se é bom do ponto de vista do usuário, no entanto. Quando acontece um conflito, o usuário tem que dizer como reconciliar. Isso é inerente a qualquer sistema de sincronização bidirecional, então aqui a questão não é se deve usar o Unison, mas se deve usar a sincronização bidirecional. Se o objetivo é permitir que um usuário trabalhe em vários dispositivos de forma intercambiável, você precisa de sincronização bidirecional. Mas se o objetivo for apenas permitir um failover rápido se um dispositivo quebrar, o backup e a restauração são uma abordagem melhor.

    • 1

relate perguntas

  • como consultar o sar(sysstat) para obter mais de um dia de pontos de dados

  • Montar raiz como overlayfs

  • O uníssono pode ser feito para preservar as datas de criação do arquivo?

  • inicialização nfs trava após o início do systemd-networkd

  • Não é possível iniciar o servidor NFS no Alpine Linux LXC

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve