מערכות קבצים וסינכרון
תקציר
מערכת קבצים היא איזון של שלמות, ביצועים ופעולות. סינכרון הוא על מודל עקבי ויישוב סכסוכים, לא רק "העתק קבצים. "אנחנו מתחילים עם הדרישות (p95 latency, RPO/RTO, load type), בוחרים את מערכת הקבצים והפרוטוקול, קובעים רישום ומנעולים, קובעים SLO, מצלמים אוטומטית/versioning ומשתמשים בכלי הסינכרון הנכונים.
בחירת מערכת קבצים עבור העומס
לינוקס FS אוניברסלית
ext4 הוא סוס עבודה יציב. אפשרויות: 'Noatime, nodiratime, להיפטר (בזהירות), נתונים = הזמנה'. טוב לכוננים, ספריות משותפות, חפצי מודיע.
XFS - חזק על קבצים גדולים/מקבילים (תוכן מדיה, יומנים, DWH). אפשרויות: 'לא, לא' 64 '; עבור קבצים גדולים כדאי להגדיר ”reflink = 1” (שיבוט).
ZFS - COW, בדיקת שלמות, תצלומים/העתק ”Sund/recv”, ARC/L2ARC, ZIL/SLOG לסנכרון. מצוין לגיבויים, NAS, בריכות בסיס עם דרישת שלמות.
BTRFS - CoW, תמונות/דחיסה/RAID במשתמש; טוב תחת dev/מבחן וקצה, זהיר עבור OLTP ללא כוונון.
פלטפורמת Windows/Cross
NTFS - ACL, ADS, אמין עבור SMB; 'Disbody גישה חופשית' לביצועים.
מדיה נשלפת, ללא זכויות וכריתת עצים (לא לייצור).
הגדרות שמשפיעות אמינות ומהירות
רישום ומחסומים: ”נתונים = הזמנה” (ext4 כברירת מחדל) - שיווי משקל; ”דאטה = יומן” - בטוח יותר, אבל איטי יותר; ודא כי מחסומי כתיבה מופעלים (או בקר עם BBU/PLP).
fsync/sync: אשכולות קריטיים (יומנים/עסקאות) חייבים במפורש להתקשר 'fsync' (); אחרת הפסד במקרה של תאונה הוא אפשרי.
זמן: "relatime "/Noatime" מפחית לחץ כתיבה.
XATR/ACL-אפשר אם POSIX ACLs ותוויות אבטחה דרושים.
גודל בלוק/רקורדסיז: ZFS 'recordsize = 16K עבור DB; " 1 מ 'עבור מדיה גדולה.
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
רשת ומערכות קבצים מבוזרות
NFS/SMB (גישת NAS)
NFSv3/v4: פשוט ומהיר; V4 נותן מנעולים וקרברוס (שנייה = krb5p). אל תסתמך על NFS לפריקה ”עמוקה” בתדירות גבוהה - דיסק מקומי טוב יותר + פריקה אסינכרונית.
SMB 3. x: רב ערוצים, הצפנה, אינטגרציה לספירה. אפשר חתימה/הצפנה על נתונים רגישים.
/pool/projects 10. 0. 0. 0/16(rw,no_root_squash,sec=krb5p,async)
SMB (שבר):
[reports]
path = /pool/reports read only = no vfs objects = acl_xattr, recycle smb encrypt = required
מבוזר FS
CephFS - POSIX מעל Ceph; טוב לסקאלה אופקית, תמונות, מכסות, מטא-נתונים מופצים.
Glough FS - קל להתחיל, לשכפל/לשדרג, אבל מסודר עם קבצים קטנים ו p99.
Lustre/IBM Spectrum Scale - LDC/lig files, בדרישה לרשת/פעולות.
9P (Virtio-fs) - לשיתוף VM, לא לעומסי ייצור עם SLOs קשה.
המלצה: עבור OLTP/ארנקים - לא רשת FS; השתמש בכרכי בלוק. עבור תוכן סטטי/חפצים נפוצים - NFS/SMB/אובייקט + CDN.
מנעולים, מטמון, ועקביות
ייעוץ נגד מנעולי חובה: Linux authory; SMB תומכת בפוקלוקים/חוזים, NFSv4 תומכת במנעולים.
מטמונים אגרסיביים מאיצים את הקריאה, אבל עם הרבה לקוחות מגבירים את הסיכון לקונפליקטים.
- חזק (FS מקומי, ZFS).
- קרוב לפתיחה (NFS) - שינויים נראים לעין כאשר 'close ()/open ()'.
- בסופו של דבר (כמה תסריטים מבוזרים/אובייקטים).
- שעות: NTP/PTP; סחיפת זמן שוברת פתרון סכסוכים וטי-טי-אל.
סינכרון: מודלים וכלים
מודלים
פירסום חפצים, העלאת דוחות, גיבוי מחוץ לאתר.
דו-כיווני (דו-כיווני): שיתוף פעולה; נדרשים סכסוכים ופיצויים.
Hub-ו-דיבר: כוכב דרך הצומת המרכזי/אשכול (MinIO/S3 + סוכנים).
כמעט בזמן אמת נגד אצווה: Inotify/change logs נגד חלונות תקופתיים.
כלים
rsync הוא דה פקטו הסטנדרטי בכיוון אחד; '- delete', '- parital', '- במקום' (זהירות).
שיבוט - S3/clouds, בדיקת חשיש, עותק צד שרת.
חד-כיווני אמיתי, פתרון סכסוכים.
סינכרון - p2p, ויסות, נוח לתיקיות עבודה.
lsyncd - rsync טריגר על ידי inotify; כמעט בזמן אמת.
ZFS Send/Recv הוא הכיור המושלם של תמונות/עליות (bette expective).
bash rsync -az --delete --numeric-ids --partial --inplace \
/srv/builds/ user@edge:/var/www/builds/
יוניסון (דו-דיר, פרופיל):
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 (כמעט בזמן אמת מעל 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 }
}
העתק ZFS (עלייה):
bash zfs snapshot tank/data@now zfs send -i tank/data@prev tank/data@now ssh backup zfs recv -F backup/data
ורסינינג, תמונות וסלים
תצלומי CoW (ZFS/Btrfs/CephFS): נקודות rollback מהירות, חשבוניות.
Versioning ברמת יישום (Nextcloud/Syncage/object): נוח למשתמשים.
מיחזור סלים על SMB/NFS: שמור ממחיקה מקרית, אבל אל תחליף את הגיבוי.
אבטחה וגישה
ACL וקסטר: POSIX ACL, SID/ACE עבור SMB, מיפוי uid/gid.
קרא/כתוב דרך השערים: SFTP/HTTPS/WebDA- כאשר לא ניתן לפתוח את SMB/NFS בחוץ.
הצפנה: LUKS/ZFS מקומי; בטיסה - קרברוס (NFSv4), הצפנת SMB, TLS עבור שערים.
פיי-איי-איי/ציות: קטגורית כדור, מסכות זכויות קפדניות, ביקורת גישה, תולעת היכן שצריך להיות בלתי ניתן לשינוי.
תצפית, SLO והתראות
p95/p99 latency (קרא/כתב/פתח), IOPS, qdepth, להיט מטמון, שימוש באינודה, רמת מילוי, שגיאות (EIO/ENOSPC).
metrics (NFS/SMB): transmitts/drops, RPC RTT, Oplock Breaks, תור אורך.
- NFS Ball CI: p95 'open '/' read' image 3-5 ms, זמינות i 99. 95%.
- דו "חות SMB: רישום ספריית p95 בלום 100 ms כאשר 10k lood קבצים/dir.
- מאגר גיבוי של ZFS: p99 כתיבה 10 ms, הצלחה 100%, RPO 15 min (מרווחים).
- מילוי בריכה> 80/90/95%, צמיחה 'EIO', פיגור תמונות, ירידה יחס פגע, Oplock-break תדיר.
תבניות מוצר (iGaming/fintech)
Static (אייקונים/תצוגות מקדימות/ספקים): הוצאה לאור באמצעות rsync # CDN; לאחסן את המקור המקורי בחפץ מבוזר.
יומנים ואירועים ”גולמיים”: לכתוב באופן מקומי (XFS/ext4) acch punload (rlone # S3/MINLO).
דיווח ו-PII: SMB עם הצפנה ו-ACLs קפדניים; יצוא חוץ תקופתי (ZFS send/rev) עם תולעת בצד המקבל.
סביבות Dev ולכידת חפצים: NFS/SMB לשיתוף; עבור בסיסים כבדים - כרכים בלוקים + תמונות.
שיתוף פעולה תוכן: Syncage/Nextcloud עם versioning ומכסות.
רשימת יישומים
[ ] מוגדרים לשיעורי נתונים (hot/cold/PII), RPO/RTO ו-SLO.
[ ] מערכת קבצים נבחרת: ext4/XFS/ZFS עם אפשרויות נכונות (Noatime, מחסומים, רקורד).
[ ] אם NAS: מוצפן/חתום NFSv4/SMB, ACL, Kerberos/AD.
[ ] Snapshots/Versioning/Mextle Bins - מוגדרת ומאומתת על ידי התאוששות.
[ כלי ] Bruise למשימה: rsync (חד כיווני), Unison/Syncthing (bi-dir), rclone (ענן), ZFS send/recv (גיבוי/DR).
[ ניטור ] של התראות FS/network/operations, SLO-burn-rate, ENOSPC/EIO/Oplock.
[ תיעוד ]: קונפליקטי ריצה, חוקי fsync, שמות/מדיניות אורך מסלול/קידוד.
[ ] בדיקות: טעינת פרופילים (קבצים קטנים/גדולים), חיתוך תסריטים (ניתוק, עריכת קונפליקט).
שגיאות נפוצות
כדור רשת העברה קריטי משותף (OLTP) במקום נפח בלוק מקומי.
מחסומים מנוטרלים/אין fsync ביישום = איבוד נתונים על כשל.
סינכרון דו כיווני ללא ויסות ופעם אחת = ”נאכל” משתנה.
מקוון 'לזרוק' על בריכה חמה = זנבות לאטה.
מיליוני קבצים קטנים בספרייה אחת * רישום קטסטרופלי/גיבוי.
שילוב זכויות/בעלים בין SMB ל NFS ללא מיפוי מפורש.
ספרי משחקים מיני
חד כיווני הוצאה לאור לבנות
1. הרכבה '/srv/בונה '(מערכת קבצים מקומית). 2 'rsync-delete' קצה. 3) נכות CDN.
אנליסט דו-דיר עובד תיקייה
1. סינכרון/יוניסון, ”ויסינג N ימים”, קונפליקט - להציל את שתי הגרסאות. 2) לכל מכסת משתמש. 3) גיבוי תקופתי מחוץ לאתר.
דיווח קטלוג DR (תולעת)
1. צילומי ZFS על לוח זמנים. 2) 'שלח/ריב' למארח מבודד עם Object Lock/WORM. 3) בדיקת התאוששות חודשית.
תוצאות
תת-מערכת קבצים אמינה היא מערכת קבצים נכונה + נכון לוגינג/מחסום + מודל חסימה מובן, וסינכרון יעיל הוא הטופולוגיה הנכונה (חד-כיווני/דו-דיר), וסינכרון כלים מוכחים. לכידת פתרונות בספרי הפעלה, צילום אוטומטי/שכפול, מדידה של סל "ד ובדיקת תרחישי כשל - כך הנתונים יישארו שלמים ותהליכים תפעוליים צפויים אפילו בעומס שיא.