Sistemas de arquivo e sincronização
Resumo curto
O sistema de arquivos é um equilíbrio de integridade, desempenho e operações. Sincronizar é um modelo de coerência e resolução de conflitos, não apenas «copiar arquivos». Começamos com os requisitos (p95 latency, RPO/RTO, tipo de carga), selecionamos FS e protocolo, ajustamos registros e bloqueios, definimos SLO, automatizamos o SLO/versioning e usamos ferramentas de sincronização corretas.
Selecionar sistema de arquivos sob carga
Linux FS universal
ext4 é um cavalo de trabalho estável. Opções: 'noatime, nodiratime, discard (com cuidado), data = ordered'. Bom para discos VM, catálogos compartilhados, artefactos CI.
XFF é forte em grandes arquivos/paralelismo (mídia, logs, DWH). Opções: 'noatime, inode64'; debaixo de grandes arquivos, deve configurar 'reflink = 1' (clone).
ZFF - CoW, verificação de integridade, snapshots/réplica 'send/recv', ARC/L2ARC, ZIL/SLOG para sync. Diferente para bacapes, NAS, balas básicas com exigência de integridade.
Btrff - CoW, snapshots/compactação/FLASH em userspace; bem sob o dave/teste e edge, cuidado com o OLTP sem sintonizar.
Windows/crossplatforme
NTFF - LCA, ADS, confiável para SMB; 'DisableLastAccess' para desempenho.
exFAT - mídia removível, sem permissão ou registro (não para prol).
Configurações que afetam a confiabilidade e a velocidade
Registro e barreiras: 'data = ordered' (ext4 padrão) - balanço; 'data = journal' é mais seguro, mas mais lento; verifique se os write briers estão habilitados (ou controlador com BBU/PLP).
fsync/sync: fluxos críticos (registros/transações) devem claramente causar 'fsync ()'; caso contrário, a perda é possível.
atime: 'relatime '/' noatime' reduz a pressão write.
xattr/LCA: inclua se você precisar de uma LCA POSIX e marcas de segurança.
Tamanho dos blocos/recordsize: ZFF 'recordsize = 16K' para BD; '1M' para grandes mídias.
bash ext4 for CI artifacts
UUID=... /var/lib/ci ext4 noatime,nodev,nosuid,data=ordered 0 2
XFS for Media Directories
UUID=... /srv/media xfs noatime,attr2,inode64 0 0
ZFS for backups and snapshots (creation)
zpool create tank mirror nvme0n1 nvme1n1 zfs set compression=lz4 atime=off tank/backups
Sistemas de arquivos de rede e distribuídos
NFS/SMB (Abordagem NAS)
NSE v3/v4: simples e rápido; v4 dá bloqueios e Kerberos ('sec = krb5p'). Não se baseie no NFS para fsync «profundos» de alta frequência - melhor disco local + descarregamento asincrônico.
SMB 3. x: multichannel, criptografia, integração com AD. Ative a assinatura/criptografia em dados sensíveis.
/pool/projects 10. 0. 0. 0/16(rw,no_root_squash,sec=krb5p,async)
SMB (fatia):
[reports]
path = /pool/reports read only = no vfs objects = acl_xattr, recycle smb encrypt = required
FS distribuídos
CephFS - POSIX sobre Ceph; bom para escala horizontal, sombras, quouts, metadados distribuídos.
GlusterFS - fácil de começar, réplica/charding, mas com cuidado com arquivos pequenos e p99.
Lustre/IBM Spectrum Scale - MINC/arquivos grandes, exigentes em redes/operações.
9P (Vircio-fs) - para shering VM, não para cargas de prod com SLO rígido.
Recomendação: para o OLTP/carteiras - não FS de rede; use volumes em bloco. Para conteúdo estático/artefatos compartilhados - NFS/SMB/objeto + CDN.
Bloqueios, armazenamento e coerência
Advisory vs mandatory locks: Linux обычно advisory; O SMB suporta oplocks/leases, NSE v4 - stateful locks.
Cachê do cliente: Os cachês agressivos aceleram a leitura, mas os clientes multi-clientes aumentam o risco de conflitos.
- Strong (FS local, ZFF).
- Close-to-open (NFS): as alterações são visíveis em 'close ()/open ()'.
- Eventual (alguns cenários distribuídos/objetos).
- Relógio: NTP/PTP; A deriva do tempo rompe o conflito e a TTL.
Sincronização: modelos e ferramentas
Modelos
One-way (push/pull): publicação de artefatos, descarregamento de relatórios, offsite-backap.
Two-way (bi-dir): colaboração; precisa de conflito de ressalvas e versionização.
Hub-and-spoke: estrela através do nó central/cluster (MinIO/S3 + agentes).
Near-real-time vs batch: inotify/logs de alterações vs janelas periódicas.
Ferramentas
rsync é o padrão de facto one-way; '--delete', '-parcial', '--inplace' (cuidado).
rclone - S3/nuvem, verificação de hash, servidor-side copy.
Unison - true bi-direcional, resolução de conflitos.
Syncthing - p2p, versioning, conveniente para pastas de trabalho.
lsyncd - desencadear rsync por inotify; near-real-time.
O ZFF send/recv é um «sink» perfeito de snapshots/encarnados (bits eficientes).
bash rsync -az --delete --numeric-ids --partial --inplace \
/srv/builds/ user@edge:/var/www/builds/
Unison (bi-dir, perfil):
root =/srv/shared root = ssh ://user @ peer//srv/shared prefer =/srv/shared # in case of conflict - local side repeat = watch # inotify ignore = Name. tmp
lsyncd (near-real-time sobre rsync):
lua settings { logfile="/var/log/lsyncd. log", statusFile="/var/run/lsyncd. status" }
sync {
default. rsync,
source="/srv/outbox",
target="user@remote:/srv/inbox",
rsync={ archive=true, compress=true, delete=true }
}
Réplica ZFF (Incluído):
bash zfs snapshot tank/data@now zfs send -i tank/data@prev tank/data@now ssh backup zfs recv -F backup/data
Versionização, snapshots e «cestas»
Snapshots CoW (ZFS/Btrfs/CephFS): pontos de reversão rápidos, min.
Versioning ao nível do aplicativo (Nextcloud/Syncthing/objeto): conveniente para os usuários.
Cestas/recalls para SMB/NFS: salvam a remoção acidental, mas não substituem o bacap.
Segurança e acesso
ACL e xattr: POSIX ACL, SID/ACE para SMB, mapping uid/gid.
Leitura/grafia por gateway: SFTP/HTTPS/WebDAV - Quando você não pode abrir o SMB/NFS para fora.
Criptografia: LUKS/ZFF native; em voo - Kerberos (NSE v4), SMB encrypition, TLS para passarelas.
PII/Complacência: segmentação de bola, máscaras de permissão rigorosas, auditorias de acesso, WORM onde você deseja ser inalterado.
Observabilidade, SLO e alertas
Метрики ФС: p95/p99 latency (read/write/open), IOPS, qdepth, cache hit, inode usage, fill-level, errors (EIO/ENOSPC).
Métricas de rede (NFS/SMB): retransmits/drops, RPC RPT, oplock breaks, queue length.
- Bola NFS CI: p95 'open '/' read' ≤ 3-5 ms, disponibilidade ≥ 99. 95%.
- Relatórios SMB: p95 listagem de diretório ≤ 100 ms para ≤ 10k arquivos/dir.
- ZFF pool de bacapes: p99 gravação ≤ 10 ms, sucesso de 100%, RPO ≤ 15 min (encartes).
- Preenchimento do pool> 80/90/95%, crescimento de 'EIO', liga de snapshots, queda de hit-ratio, oplock-break frequente.
Pattern para o produto (iGaming/fintech)
Estática (ícones/suprimento/diretórios de provedores): publicação por rsync → CDN; armazenar a origem primária em um objeto versionizado.
Logs e eventos «crus»: escrevendo localmente (XFF/ext4) → descarregando batucado (rclone → S3/MinIO).
Relatórios e PII: SMB com criptografia e LCA rigorosa; exportação offsite periódica (ZFF send/recv) com WORM na recepção.
Ambiente uv e fixação de artefatos: NFS/SMB para sharing; para as bases pesadas - volume de bloco + snapshots.
Colaboração de conteúdo: Syncthing/Nextcloud com versioning e quotas.
Folha de cheque de implementação
- Definidas as classes de dados (quente/frio/PII), RPO/RTO e SLO.
- Selecionado FS: ext4/XFF/ZFF com opções válidas (noatime, briers, recordsize).
- Se NAS: NEURONv4/SMB com criptografia/assinaturas, LCA, Kerberos/AD.
- Snapshots/versioning/cesta - configurados e testados pela recuperação.
- Ferramenta sinca abaixo da tarefa: rsync (one-way), Unison/Syncthing (bi-dir), rclone (nuvem), ZFF send/recv (bacap/DR).
- Monitoramento de FS/rede/transações, burn-rate SLO, alertas ENOSPC/EIO/oplock.
- Documentação: Runbook conflitos, regulamento fsync, política de nomeações/comprimentos de caminho/codificação.
- Testes: perfis de carga (arquivos pequenos/grandes), guiões de kat (quebra de vínculo, conflito de edição).
Erros típicos
Bola de rede comum para transações críticas (OLTP) em vez de volume de bloco local.
Barrers desligados/sem fsync no aplicativo → perda de dados quando falha.
Two-way sink sem versionagem ou tempo único → alterações «comidas».
Onlain- 'discard' na bala quente → as caudas da latência.
Milhões de arquivos pequenos em um único diretório → listagem desastrosa/backup.
Mistura de direitos/proprietários entre SMB e NFS sem mupping explícito.
Mini-playbooks
One-way publicar um bild → edge-servidores
1. Montagem em '/srv/builds '(FS local). 2) `rsync -az --delete` на edge. 3) Deficiência CDN.
Bi-dir pasta de trabalho de analistas
1. Syncthing/Unison, «versionização N dias», conflito - salvar ambas as versões. 2) Quotas per-user. 3) Sempre offsite-bacap.
Dr. Diretório de Relatórios (WORM)
1. O ZFF está programado. 2) 'send/recv' para um servidor isolado com Object Lock/WORM. 3) Teste de recuperação mensal.
Resultado
Um sistema de arquivos confiável é um FS + modos de registro/barreiras corretos + um modelo de bloqueio compreensível, e a sincronização eficaz é uma topologia correta (one-way/bi-dir), versionagem e ferramentas testadas. Capture as soluções em runbook-s, automatize os snapshots/replicação, mede o SLO e teste os cenários de falha - de modo que os dados permaneçam inteiros e os processos operacionais sejam previsíveis, mesmo sob cargas de pico.