Systemy plików i synchronizacja
Krótkie podsumowanie
System plików to równowaga integralności, wydajności i operacji. Synchronizacja dotyczy modelu spójności i rozwiązywania konfliktów, a nie tylko "kopiowania plików. "Zaczynamy od wymagań (opóźnienie p95, RPO/RTO, typ obciążenia), wybieramy system plików i protokół, konfigurujemy rejestrowanie i blokady, ustawiamy SLO, zautomatyzujemy migawki/wersioning i używamy odpowiednich narzędzi synchronizacji.
Wybór systemu plików do obciążenia
Uniwersalny system Linux FS
ext4 to stabilny koń roboczy. Opcje: „noatime, nodiratime, discard (z ostrożnością), data = ordered”. Dobre dla dysków VM, wspólnych katalogów, artefaktów CI.
XFS - silny na dużych plikach/równoległości (treści multimedialne, dzienniki, DWH). Opcje: „czas nocny, inode64”; dla dużych plików warto skonfigurować 'reflink = 1' (klon).
ZFS - CoW, kontrola integralności, migawki/repliki 'send/recv', ARC/L2ARC, ZIL/SLOG do synchronizacji. Doskonały dla kopii zapasowych, NAS, basenów bazowych z wymaganiami integralności.
Btrfs - CoW, migawki/kompresja/RAID w przestrzeni użytkowej; dobra pod dev/test i krawędź, ostrożnie dla OLTP bez dostrajania.
Platforma Windows/Cross
NTFS - ACL, ADS, niezawodny dla SMB; Dla wydajności 'Disz Access'.
exFAT - nośniki usuwalne, bez praw i rejestrowania (nie do produkcji).
Ustawienia wpływające na niezawodność i prędkość
Rejestrowanie i bariery: 'data = ordered' (domyślnie ext4) - saldo; „data = journal” - bezpieczniejszy, ale wolniejszy; Sprawdź, czy są włączone bariery zapisu (lub kontroler z BBU/PLP).
fsync/sync: wątki krytyczne (dzienniki/transakcje) muszą wyraźnie wywołać „fsync ()”; w przeciwnym razie możliwa jest utrata w razie wypadku.
w czasie: 'relatime '/' noatime' zmniejsza ciśnienie zapisu.
xattr/ACL-Enable, jeśli wymagane są protokoły POSIX ACL i etykiety bezpieczeństwa.
Rozmiar/rejestrowanie bloku: ZFS 'recordsize = 16K' dla DB; ' 1M' dla dużych mediów.
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
Systemy plików sieciowych i rozproszonych
NFS/SMB (podejście NAS)
NFSv3/v4: proste i szybkie; v4 daje zamki i Kerberos ('sec = krb5p'). Nie polegać na NFS dla wysokiej częstotliwości „głębokie” fsync - lepszy dysk lokalny + asynchroniczne rozładunek.
SMB 3. x: wielokanałowy, szyfrowanie, integracja AD. Włącz podpisywanie/szyfrowanie danych wrażliwych.
/pool/projects 10. 0. 0. 0/16(rw,no_root_squash,sec=krb5p,async)
SMB (fragment):
[reports]
path = /pool/reports read only = no vfs objects = acl_xattr, recycle smb encrypt = required
Rozproszone FS
CephFS - POSIX nad Ceph; dobre dla skali poziomej, migawki, kwoty, metadane rozłożone.
GlusterFS - łatwy do uruchomienia, repliki/shading, ale schludne z małych plików i p99.
Lustre/IBM Spectrum Scale - LDC/duże pliki, wymagające w sieci/operacjach.
9P (Virtio-fs) - do udostępniania maszyn wirtualnych, a nie do produkcji ładunków z twardymi układami SLO.
Zalecenie: dla OLTP/portfeli - nie sieci FS; używać woluminów blokowych. Dla zawartości statycznej/wspólnych artefaktów - NFS/SMB/object + CDN.
Zamki, buforowanie i konsystencja
Doradztwo w stosunku do obowiązkowych zamków: Linux обскна advisory; SMB obsługuje opaski/dzierżawy, NFSv4 obsługuje statyczne zamki.
Buforowanie klientów: Agresywne bufory przyspieszają czytanie, ale z wieloma klientami zwiększają ryzyko konfliktów.
- Strong (lokalny FS, ZFS).
- Close-to-open (NFS) - zmiany są widoczne, gdy 'close ()/open ()'.
- Eventual (niektóre skrypty rozproszone/obiektowe).
- Godziny: NTP/PTP; czas dryfu przerywa rozwiązywanie konfliktów i TTL.
Synchronizacja: modele i narzędzia
Modele
W jedną stronę (push/pull): publikacja artefaktów, przesyłanie raportów, offsite backup.
Dwukierunkowa (dwukierunkowa): współpraca; wymagane jest rozwiązywanie konfliktów i wersioning.
Piasta i głos: gwiazda przez węzeł centralny/gromada (MinIO/S3 + agentów).
Near-real-time vs batch: inotify/change logs vs periodic windows.
Narzędzia
rsync jest de facto standardem jednokierunkowym; '-delete', '--partial', '--inplace' (uwaga).
rclone - S3/clouds, sprawdzanie skrótów, kopia po stronie serwera.
Unison - prawdziwa dwukierunkowa, rozwiązywanie konfliktów.
Syncthing - p2p, wersioning, wygodne dla folderów roboczych.
lsyncd - wyzwalacz rsync przez inotyfikację; blisko-w czasie rzeczywistym.
ZFS send/recv jest idealnym zlewem migawek/przyrostów (efektywny bajt).
bash rsync -az --delete --numeric-ids --partial --inplace \
/srv/builds/ user@edge:/var/www/builds/
Unison (dwukrotny, profil):
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 (w czasie zbliżonym do rzeczywistego nad 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 }
}
Replika ZFS (przyrost):
bash zfs snapshot tank/data@now zfs send -i tank/data@prev tank/data@now ssh backup zfs recv -F backup/data
Wersioning, migawki i kosze
Migawki CoW (ZFS/Btrfs/CephFS): punkty szybkiego zwrotu, min. faktury.
Wersioning na poziomie aplikacji (Nextcloud/Syncthing/object): wygodny dla użytkowników.
Koszyki recyklingu na SMB/NFS: zaoszczędzić od przypadkowego usunięcia, ale nie zastąpić kopii zapasowej.
Bezpieczeństwo i dostęp
ACL i xattr: POSIX ACL, SID/ACE dla SMB, uid/gid mapping.
Przeczytaj/zapisz przez bramki: SFTP/HTTPS/Webا- kiedy SMB/NFS nie mogą być otwarte na zewnątrz.
Szyfrowanie: LUKS/ZFS native; w locie - Kerberos (NONOv4), szyfrowanie SMB, TLS dla bram.
PII/zgodność: segmentacja piłki, ścisłe maski praw, audyty dostępu, WORM w razie potrzeby niezmienne.
Obserwowalność, SLO i wpisy
МетрикНА: p95/p99 latency (read/write/open), IOPS, qdepth, cache hit, inode usage, fill-level, errors (EIO/ENOSPC).
Mierniki sieci (NFS/SMB): retransmitty/krople, RPC RTT, przerwy oplock, długość kolejki.
- NFS ball CI: p95 „open ”/„ read” ≤ 3-5 ms, dostępność ≥ 99. 95%.
- Raporty SMB: p95 lista katalogów ≤ 100 ms, gdy ≤ 10 k plików/dir.
- Pula zapasowa ZFS: p99 zapisać ≤ 10 ms, 100% sukces migawki, RPO ≤ 15 min (przyrosty).
- Wypełnienie puli> 80/90/95%, wzrost „EIO”, migawki opóźnienia, spadek współczynnika trafienia, częste oplock-break.
Wzory produktów (iGaming/fintech)
Statyczne (ikony/podglądy/katalogi dostawców): publikacja za pośrednictwem rsync → CDN; przechowywać oryginalne źródło w obiekcie wersjonowanym.
Dzienniki i „surowe” zdarzenia: pisać lokalnie (XFS/ext4) → rozładunek partii (rclone → S3/MinIO).
Sprawozdawczość i PII: SMB z szyfrowaniem i ścisłymi ACL; okresowy eksport offsite (ZFS send/recv) z WORM po stronie odbiorczej.
Środowiska Dev i wychwytywanie artefaktów: NFS/SMB do udostępniania; dla ciężkich baz - objętości bloków + migawki.
Współpraca treści: Syncthing/Nextcloud z wersją i kontyngentami.
Lista kontrolna implementacji
- Zdefiniowane klasy danych (hot/cold/PII), RPO/RTO i SLO.
- Wybrany system plików: ext4/XFS/ZFS z poprawnymi opcjami (noatime, bariery, nagrywanie).
- Jeśli NAS: Zaszyfrowane/podpisane NFSv4/SMB, ACL, Kerberos/AD.
- Migawki/wersioning/Recycle Bins - konfigurowane i weryfikowane przez odzyskiwanie.
- Siniak narzędzie do zadania: rsync (w jedną stronę), Unison/Syncthing (bi-dir), rclone (chmura), ZFS send/recv (backup/DR).
- Monitorowanie FS/network/operations, szybkość spalania SLO, ENOSPC/EIO/oplock alerts.
- Dokumentacja: Runbook conflicts, fsync rules, naming/path length/encoding policy.
- Testy: profile obciążenia (małe/duże pliki), skrypty cięte (odłączenie, konflikt edycji).
Częste błędy
Współdzielona krytyczna transakcja netball (OLTP) zamiast lokalnej objętości bloku.
Wyłączone bariery/brak fsync w aplikacji → utrata danych o awarii.
Dwukierunkowy synchronizacja bez wersji i pojedynczy czas → „zjedzone” zmiany.
Online 'odrzut' na gorącym basenie → ogony opóźnienia.
Miliony małych plików w jednym katalogu → katastrofa aukcji/kopia zapasowa.
Mieszanie praw/właścicieli między SMB i NFS bez wyraźnego odwzorowania.
Mini playbooks
Jednokierunkowa budowa wydawnictwa → serwery krawędzi
1. Montaż w '/srv/builds '(lokalny system plików). 2) krawędź „rsync -az --delete” на. 3) Niepełnosprawność CDN.
Bi-dir Analyst Working Folder
1. Syncthing/Unison, „versioning N days”, conflict - zapisz obie wersje. 2) Kontyngenty na użytkownika. 3) Okresowe kopie zapasowe offsite.
Raport Katalog DR (WORM)
1. Migawki ZFS w harmonogramie. 2) 'send/recv' do odizolowanego hosta z blokadą obiektu/WORM. 3) Miesięczny test odzysku.
Wynik
Niezawodny podsystem plików to właściwy system plików + poprawne tryby logowania/bariery + zrozumiały model blokowania, a skuteczną synchronizacją jest prawidłowa topologia (jednokierunkowa/dwukierunkowa), wersioning i sprawdzone narzędzia. Przechwytywanie rozwiązań w książkach startowych, automatyczne migawki/replikacje, pomiar SLO i scenariusze awarii testów - w ten sposób dane pozostaną nienaruszone i procesy operacyjne przewidywalne nawet przy obciążeniach szczytowych.