פריסת CephFS סוהרית למערכות קבצים מבוזרות

כאשר מאות שרתים עובדים עם קבצים משותפים בו-זמנית ואחסון בלוקים סטנדרטי לא יכול לעמוד בעומס, אתה זקוק למערכת קבצים מבוזרת עם עקביות נתונים מיידית. אנחנו מגדירים CephFS במתכונת turnkey—מפריסת MDS ועד אינטגרציה עם Kubernetes וניטור. הצוות שלנו מטפל בכל המחזור, ומבטיח פעילות יציבה ותמיכה מתמשכת לאחסון שלך.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

פריסת CephFS סוהר למערכות קבצים מבוזרות

דמיינו מאה שרתים שכותבים וקוראים קבצים בו-זמנית ממערכת אחסון אחת עם עקביות נתונים מיידית. RBD לא יעבוד כאן: הוא מספק התקן בלוק רק ללקוח אחד. אתם צריכים מערכת קבצים POSIX על גבי Ceph, והיא קיימת — CephFS. מאמר זה חולק את ניסיון הפריסה הסוהר שלנו: מהגדרת MDS ועד אינטגרציה עם Kubernetes וניטור. עם 5+ שנים בייצור, השלמנו 30+ פרויקטים, ו-70% מהלקוחות בוחרים ב-CephFS לאחסון משותף. אנו מפנים לתיעוד הרשמי של Ceph (תיעוד CephFS) למושגי יסוד.

תרחישים אופייניים: אחסון משותף ל-Kubernetes (ReadWriteMany PVC), אחסון משותף למטמוני CI/CD, נכסי מדיה למספר שרתי יישומים, ספריות בית למאות מארחים. לכל תרחיש דרישות משלו למכסות, ביצועים וסבילות לתקלות.

איך CephFS עובד ולמה עקביות חשובה

CephFS דורש MDS (MetaData Server) — שירות שמנהל מטא-דאטה (ספריות, הרשאות, inodes). נתוני קבצים חיים ב-RADOS; רק מטא-דאטה עובר דרך MDS. כפי שנכתב ב-תיעוד CephFS הרשמי, MDS מנהל מטא-דאטה. MDS פעיל מטפל בבקשות, בעוד ש-standby ממתינים לכשל. לייצור, נדרש מינימום של 1 פעיל + 1 standby.

# Разворачиваем MDS через cephadm ceph orch apply mds cephfs --placement="3 ceph-node1 ceph-node2 ceph-node3" 

# Разворачиваем MDS через cephadm ceph orch apply mds cephfs --placement="3 ceph-node1 ceph-node2 ceph-node3" יוצר pools לנתונים ומטא-דאטה ומתחיל MDS בפקודה אחת. אבל פרט קריטי: pool המטא-דאטה חייב להיות על הדיסקים המהירים ביותר. MDS שומר מטא-דאטה ב-RAM, אבל ב-cache miss הוא שואל את ה-pool. pool מטא-דאטה איטי פירושו ceph fs volume create cephfs איטי בספריות עם אלפי קבצים. השתמשו ב-device class למיקום על NVMe: ls.

פריסה מעשית: מיצירת pool ידנית לאוטומציה

לשליטה מלאה בפרמטרי pool, אנו יוצרים אותם ידנית עם השלבים הבאים: שלב 1: יצירת Pool מטא-דאטה — קטן, קריטי לביצועים.

# Пул для метаданных — небольшой, критичен по производительности
ceph osd pool create cephfs_metadata 32 32
ceph osd pool set cephfs_metadata size 3
ceph osd pool set cephfs_metadata pg_autoscale_mode on

# Пул для данных — основной объём
ceph osd pool create cephfs_data 0 0 replicated
ceph osd pool set cephfs_data size 3
ceph osd pool set cephfs_data pg_autoscale_mode on

# Создаём файловую систему
ceph fs new cephfs cephfs_metadata cephfs_data

שלב 2: יצירת Pool נתונים — הנפח הראשי.

ceph auth get-or-create client.cephfs-ro mon 'allow r' mds 'allow r' osd 'allow r pool=cephfs_data' -o /etc/ceph/ceph.client.cephfs-ro.keyring 

שלב 3: יצירת מערכת הקבצים.

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: shared-cache
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ceph-cephfs
  resources:
    requests:
      storage: 100Gi

שלב 4: התקנה על לקוחות. לאוטומציה, אנו משתמשים ב-Ansible או Terraform. לקוח ה-kernel (מהיר יותר): ציינו כתובות MON ו-secret ב-ceph osd pool set cephfs_metadata crush_rule nvme_replicated. לגישה מבוקרת, צרו משתמש עם הרשאות מינימליות:

# Создаём subvolumegroup
ceph fs subvolumegroup create cephfs kubernetes
# Subvolume с квотой
ceph fs subvolume create cephfs pvc-build-cache kubernetes --size 50GiB

מה כלול בשירות הסוהר שלנו

פריסת CephFS הסוהר שלנו כוללת:

  • ביקורת תשתית קיימת ועיצוב אשכול
  • פריסת MDS עם multi-active אם נדרש
  • הגדרת pools נתונים ומטא-דאטה עם מודעות ל-device class
  • אינטגרציה עם Kubernetes דרך ceph-csi-cephfs (ReadWriteMany PVC)
  • יצירת subvolumes ומכסות לפרויקטים
  • כוונון ביצועי MDS ואופטימיזציה של pool מטא-דאטה
  • ניטור דרך Prometheus/Grafana עם dashboards והתראות מוכנים
  • תיעוד ברור ומפגשי העברת ידע
  • תמיכה טכנית במהלך הייצור הראשוני

אינטגרציה של CephFS עם Kubernetes: ReadWriteMany PVC דרך ceph-csi-cephfs

עבור ReadWriteMany PVC, אנו משתמשים ב-ceph-csi-cephfs. Helm chart יוצר StorageClass, secret ו-CSI driver. PVC עם # Пул для метаданных — небольшой, критичен по производительности ceph osd pool create cephfs_metadata 32 32 ceph osd pool set cephfs_metadata size 3 ceph osd pool set cephfs_metadata pg_autoscale_mode on # Пул для данных — основной объём ceph osd pool create cephfs_data 0 0 replicated ceph osd pool set cephfs_data size 3 ceph osd pool set cephfs_data pg_autoscale_mode on # Создаём файловую систему ceph fs new cephfs cephfs_metadata cephfs_data בלתי אפשריים עם RBD:

[mds]
mds_cache_memory_limit = 8589934592 # 8 GB
mds_log_max_segments = 128
mds_tick_interval = 5
mds_dir_max_commit_size = 10485760 # 10 MB
mds_session_timeout = 60

ה-CSI driver יוצר subvolume — מרחב מבודד עם מכסה.

Subvolumes ומכסות: בידוד פרויקטים ובקרת משאבים

CephFS תומך במכסות ברמת ספרייה. לפרויקטים מבודדים, subvolumes נוחים:

# Create a subvolumegroup
ceph fs subvolumegroup create cephfs kubernetes
# Subvolume with a quota
ceph fs subvolume create cephfs pvc-build-cache kubernetes --size 50GiB

מכסות עובדות דרך התכונות /etc/fstab ו-ceph auth get-or-create client.cephfs-ro mon 'allow r' mds 'allow r' osd 'allow r pool=cephfs_data' -o /etc/ceph/ceph.client.cephfs-ro.keyring . עבור Kubernetes PVC, מכסות מוגדרות ב-StorageClass דרך פרמטרים.

ביצועים וכוונון MDS: הימנעות מצווארי בקבוק

הגדרת מטמון MDS קריטית עם מספר גדול של קבצים. הגדרה אופיינית לעומסי קבצים קטנים:

[mds]
mds_cache_memory_limit = 8589934592 # 8 GB
mds_log_max_segments = 128
mds_tick_interval = 5
mds_dir_max_commit_size = 10485760 # 10 MB
mds_session_timeout = 60

MDS multi-active (2 או יותר) מפצל את מרחב השמות לפי ספרייה — עוזר עם נקודות חמות אבל לא מתקפל לינארית. נטרו את ה-latency: accessModes: ReadWriteMany — אם >100 ms, הרחיבו MDS או אופטימיזציה של pool המטא-דאטה. בבenchmarks הפנימיים שלנו, לקוח ה-kernel עולה על ceph-fuse עד פי 3 בקריאות רציפות. בהשוואה ל-NFS, CephFS מספק עד פי 5 throughput גבוה יותר לכתיבה במקביל בתרחיש רב-לקוחות.

ניטור CephFS: מדדים מרכזיים ו-Dashboards

לפעילות ייצור, אנו משתמשים ב-Prometheus + Grafana. מדדים מרכזיים:

מדד תיאור סף התראה
ceph_mds_request_latency_sum Latency של פעולות מטא-דאטה >100 ms
ceph_mds_server_handle_client_request בקשות בשנייה >10000 req/s
ceph_pool_used_bytes שטח בשימוש ב-pool הנתונים <80% קיבולת

אנו מגדירים התראות ב-Alertmanager ויוצרים dashboards עם SLO/SLI.

מקרה אמיתי: פריסה בחברת מדיה

בפרויקט אחד לחברת מדיה (הלקוח שלנו), פרסנו CephFS על 50 שרתים. בתחילה, latency המטא-דאטה היה 150ms בגלל pool מטא-דאטה מבוסס HDD. לאחר מעבר ל-NVMe וכוונון מטמון MDS, ה-latency ירד ל-30ms. הלקוח מריץ כעת מעל 1000 עבודות CI/CD במקביל ללא צווארי בקבוק. האשכול מטפל כעת במעל 10,000 פעולות מטא-דאטה בשנייה עם latency מתחת ל-30ms. פרויקט זה הדגים את ההשפעה של מיקום מטא-דאטה נכון וגודל MDS מתאים. מקרה זה הוא מהפרקטיקה שלנו, המדגים את המומחיות המעשית שלנו.

בעיות אופייניות ופתרונותיהן (Postmortem)

  • apiVersion: v1 kind: PersistentVolumeClaim metadata: name: shared-cache spec: accessModes: - ReadWriteMany storageClassName: ceph-cephfs resources: requests: storage: 100Gi מציג שטח פנוי שגוי? CephFS מדווח על קיבולת אשכול כוללת. השתמשו בתכונות # Создаём subvolumegroup ceph fs subvolumegroup create cephfs kubernetes # Subvolume с квотой ceph fs subvolume create cephfs pvc-build-cache kubernetes --size 50GiB עם מכסות לשימוש מדויק לכל ספרייה.
  • לקוח NFS לא רואה שינויים? השביתו שמירת ספריות במטמון עם ceph.quota.max_bytes בזמן ההתקנה, אבל צפו לירידת ביצועים של 15–20%.
  • MDS לא עובר ל-standby? בדקו את ceph.quota.max_files — לעתים קרובות ה-standby לא יכול להגיע ל-MON. ודאו גישת רשת והגדרת rank.

לוחות זמנים ועלות משוערים

תרחיש לוח זמנים
CephFS על אשכול קיים (MDS, pools, לקוחות) 2–3 ימים
+ Kubernetes CSI, subvolumes, מכסות 3–5 ימים
+ MDS multi-active, כוונון, ניטור 5–7 ימים

העלות מחושבת באופן אישי לאחר ביקורת. עלויות פרויקט אופייניות נעות בין $5,000 ל-$20,000, תלוי בהיקף ובמורכבות. צרו קשר לייעוץ והערכת פרויקט. הזמינו פריסת CephFS סוהר לתשתית שלכם. המהנדסים שלנו עם 5+ שנות ניסיון יעזרו לכם ליישם מערכת אחסון סובלנית לתקלות עם אחריות.