File system e sincronizzazione
Breve riepilogo
Il file system è un equilibrio tra integrità, prestazioni e operazioni. La sincronizzazione riguarda il modello di coerenza e la risoluzione dei conflitti, non solo la copia dei file. Cominciamo con i requisiti (p95 latency, RPO/RTO, tipo di carico di lavoro), scegliamo FS e protocollo, impostiamo registrazioni e blocchi, impostiamo SLO, automatizziamo snap/versioning e usiamo strumenti di sincronizzazione corretti.
Selezionare un file system sotto carico
Linux FS universali
ext4 è un cavallo di lavoro stabile. Le opzioni sono «noatime, nodiratime, discard (con cautela), data = ordered». Ottimo per dischi VM, cataloghi condivisi, manufatti CI.
XFS è forte su file/parallelismo di grandi dimensioni (media, logi, DWH). Opzioni: 'noatime, inode64'; Sotto i file più grandi vale la pena personalizzare'reflink = 1 '(clone).
ZFS - CoW, controllo di integrità, snapshot/replica «send/recv», ARC/L2ARC, ZIL/SLOG per sync. Differente per backup, NAS, pool di base che richiede integrità.
Btrfs - CoW, snapshot/compressione/RAID in userspace; Bene sotto il dev/test ed edge, attenzione per OLTP senza tuning.
Windows/crossplatforme
NTFS - ACL, ADS, affidabile per SMB; 'DisableLastAccess' per prestazioni.
exFAT sono supporti rimovibili, senza patente e senza registrazioni (non per protesi).
Impostazioni che influenzano l'affidabilità e la velocità
Registro e barriere: 'data = ordered' (ext4 predefinito) è il bilanciamento; 'data = journal' è più sicuro, ma più lento; assicurarsi che i write barriers siano attivati (o il controller con BBU/PLP).
fsync/sync: i flussi critici (registri/transazioni) devono chiaramente chiamare «fsync ()»; Altrimenti è possibile perdere un incidente.
atime: «relatime »/« noatime» riduce la pressione write.
xattr/ACL: attivare se si desidera l'ACL POSIX e le etichette di sicurezza.
Dimensioni blocchi/recordsize: ZF'recordsize = 16K'per database; '1M'per grandi media.
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
File system in rete e distribuiti
NFS/SMB (approccio NAS)
NAVAv3/v4: semplice e veloce; v4 blocca Kerberos ('sec = krb5p'). Non fare affidamento su NFS per fsync ad alta frequenza - meglio disco locale + scaricamento asincrono.
SMB 3. x: multichannel, crittografia, integrazione con AD. Abilita la firma/crittografia su dati sensibili.
/pool/projects 10. 0. 0. 0/16(rw,no_root_squash,sec=krb5p,async)
SMB (sezione):
[reports]
path = /pool/reports read only = no vfs objects = acl_xattr, recycle smb encrypt = required
FS distribuite
CephFS - POSIX sopra Ceph; buono per scala orizzontale, snapshot, quoot, metadati distribuiti.
GlusterFS è facile da avviare, replica/charding, ma con file piccoli e p99.
Lustre/IBM Spectrum Scale - PDF/file grandi, esigenti per la rete/operazioni.
9P (Virus-fs) - Per lo sharing VM, non per i carichi di prode con SLO rigidi.
Raccomandazione: per i portafogli OLTP non FS di rete; Utilizzare i volumi di blocco. Per i contenuti statici/gli artefatti condivisi, NFS/SMB/oggetto + CDN.
Blocchi, cache e coerenza
Advisory vs mandatory locks: Linux обычно advisory; SMB supporta oplocks/leases, NAVAv4 - stateful locks.
Cache client: i caselli aggressivi accelerano la lettura, ma i client multi-client aumentano il rischio di conflitti.
- Strong (FS locali, ZFS).
- Close-to-open (NFS) - Le modifiche sono visibili con «close ()/open ()».
- Eventual (alcuni script distribuiti/oggetti).
- Orologio: NTP/PTP; la deriva del tempo rompe il conflitto-risol e la TTL.
Sincronizzazione: modelli e strumenti
Modelli
One-way (push/pull) - Consente di pubblicare artefatti, caricare report, offsite-bacap.
Two-way (bi-dir) - Collaborazione richiede conflitto-resolver e versioning.
Hub-and-spoke - Star attraverso il nodo/cluster centrale (MinIO/S3 + agenti).
Near-real-time vs batch: inotify/logi di modifica vs finestre periodiche.
Strumenti
rsync è lo standard di fatto one-way; '--delete', '--partial', '--inplace' (attenzione).
rclone - S3/cloud, controllo hash, server-side copy.
Unison - true bi-directional, risoluzione dei conflitti.
Syncthing - p2p, versioning, utile per le cartelle di lavoro.
lsyncd - trigger rsync per inotify; near-real-time.
ZFS send/recv è il perfetto «sink» di snapshot/incrementi (byte efficiente).
bash rsync -az --delete --numeric-ids --partial --inplace \
/srv/builds/ user@edge:/var/www/builds/
Unison (bi-dir, profilo):
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 sopra 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 }
}
Replica ZFS (incrementale):
bash zfs snapshot tank/data@now zfs send -i tank/data@prev tank/data@now ssh backup zfs recv -F backup/data
Versioning, snapshot e cestini
Snapshot ( ): punti rapidi di , minuti di sovrapposizione.
Versioning a livello di applicazione (Nextcloud/Syncthing/oggetto) - Utile per gli utenti.
Cestini/ricambi su SMB/NFS: salvano l'eliminazione accidentale ma non sostituiscono il backup.
Protezione e accesso
ACL e xattr: POSIX ACL, SID/ACE per SMB, mapping uid/gid.
Lettura/scrittura tramite gateway: SFTP/HTTPS/WebDAV quando non è possibile aprire SMB/NFS verso l'esterno.
Crittografia: LUKS/ZFS native; in volo: Kerberos, SMB encryption, TLS per gateway.
PII/Compilation: segmentazione della sfera, maschere dei diritti rigorose, verifiche di accesso, WORM dove necessario.
Osservabilità, SLO e alert
Метрики ФС: p95/p99 latency (read/write/open), IOPS, qdepth, cache hit, inode usage, fill-level, errors (EIO/ENOSPC).
Metriche di rete (NFS/SMB): retransmits/drops, RPC RTT, oplock breaks, queue length.
- Sfera NFS CI: p95 'open '/' read' 3-5 ms, disponibilità 99. 95%.
- Report SMB: p95 listino di listino di 100 ms per la di 10k file/dir.
- Pool ZFS di backup: p99 scrittura da 10 ms, successo di snapshot 100%, RPO da 15 min.
- Riempimento del pool> 80/90/95%, crescita di «EIO», lega di snapshot, calo dell'hit-ratio, frequenti oplock-break.
Pattern per il prodotto (iGaming/Fintech)
Statica (icone/prevale/directory dei provider): pubblicazione tramite rsync → CDN; memorizzare la sorgente primaria in un oggetto con versioning.
Logi e eventi crudi - Scrivi localmente (XFS/ext4) per scaricare batch (rclone ).
Report e PII: SMB con crittografia e ACL rigorose; esportazione periodica offsite (ZFS send/recv) con WORM sul lato ricevente.
Ambienti UV e fissazione dei manufatti: NFS/SMB per sharing; per le basi pesanti - volumi di blocco + snapshot.
Collaudo di contenuti: Syncthing/Nextcloud con versioning e quote.
Assegno foglio di implementazione
- Definite le classi di dati (caldo/freddo/PII), RPO/RTO e SLO.
- È stato selezionato un FS: ext4/XFS/ZFS con opzioni corrette (noatime, barriers, recordsize).
- Se NAS: NAVAv4/SMB con crittografia/firma, ACL, Kerberos/AD.
- Snapshot/versioning/cestini - Configurati e convalidati dal ripristino.
- Lo strumento sink sotto l'attività è rsync (one-way), Unison/Syncthing (bi-dir), rclone (cloud), ZFS send/recv (bacap/DR).
- Monitoraggio FS/rete/operazioni, burn-rate SLO, alert ENOSPC/EIO/oplock.
- Documentazione: Runbook conflitti, fsync, criteri di denominazione/lunghezza percorsi/codifica.
- Test: profili di carico (file piccoli/grandi), script di cat (interruzione del collegamento, conflitto di modifica).
Errori tipici
Sfera di rete comune per transazioni critiche (OLTP) al posto del volume di blocco locale.
Barriers/no fsync disattivati nell'applicazione → la perdita di dati in caso di guasto.
Two-way è un sink senza versioning e senza tempo.
Onlain'discard'su un proiettile caldo di latitanza.
Milioni di piccoli file in una sola directory hanno un listino/backup catastrofico.
Miscelazione dei diritti/proprietari tra SMB e NFS senza mupping esplicito.
Mini playbook
One-way pubblicazione del bilide dei server edge
1. Assemblaggio in «/srv/builds »(FS locale). 2) `rsync -az --delete` на edge. 3) Disabilità CDN.
Bi-dir cartella di lavoro analisti
1. Syncthing/Unison, versioning N giorni, conflitto - salvare entrambe le versioni. 2) Quote per-user. 3) Backup offsite periodico.
DR directory report (WORM)
1. I nastri ZFS sono pianificati. 2) 'send/recv'in un host isolato con Object Lock/WORM. 3) Test di ripristino mensile.
Totale
Un sistema di file affidabile è un FS corretto + modalità di registro/barriere corrette + un modello di blocco comprensibile, mentre la sincronizzazione efficiente è una topologia corretta (one-way/bi-dir), versioning e strumenti collaudati. Fissare le soluzioni in runbook, automatizzare snap/replica, misurare lo SLO e testare gli script di guasto, in modo che i dati rimangano interi e che i processi operativi siano prevedibili anche sotto i picchi di carico.