אופטימיזציה של לקוחות NFS ב-Linux

בדף הזה מוסבר איך לכוונן לקוחות NFS של Linux שמבצעים mount לייצוא של NetApp Volumes. ברוב עומסי העבודה, אין צורך בכווננון. אלא אם אתם צריכים תפוקה גבוהה יותר, יותר IOPS, עומס מטא-נתונים נמוך יותר בנפח או התנהגות ספציפית של שמירת נתונים במטמון, כדאי להשתמש בפקודת ה-mount מGoogle Cloud המסוף.

מידע נוסף על שלבי החיבור, על הגדרת מדיניות הייצוא ועל פקודות ההרכבה זמין במאמר חיבור של לקוחות NFS.

הגדרת לקוחות

מגדירים את הגדרות Linux NFS לפי הסדר הבא:

  1. מקביליות של ליבת המערכת: לפני הרכבת מערכת הקבצים, מגדירים את מספר משבצות הבקשות של NFS (רשומות בטבלת המשבצות עבור NFSv3 או משבצות סשן עבור NFSv4.1). אם משנים את ההגדרות, צריך להרכיב מחדש את מערכת הקבצים. מידע נוסף זמין במאמר בנושא בו זמניות של Linux NFS.

  2. אפשרויות הרכבה: בוחרים את גרסת הפרוטוקול, גודל הקלט/פלט, מספר חיבורי ה-TCP, נעילה ואפשרויות שקשורות למטמון בזמן ההרכבה. מידע נוסף זמין במאמר בנושא אפשרויות להרכבת Linux NFS.

  3. קריאה מראש: שינוי של קריאה מראש של נתונים רציפים לכל נקודת הרכבה אחרי שהנפח מורכב. מידע נוסף זמין במאמר בנושא קריאה מראש של Linux NFS.

הטבלה הבאה מסכמת את שלבי ההגדרה האלה:

שלב מתי מה אפשר לקבוע איפה מגדירים מדריך
1 לפני ההרכבה הראשונה או לפני הרכבה מחדש פעולות RPC בהמתנה לכל חיבור TCP; פקודות NFSv4.1 לכל סשן /etc/sysctl.conf,
/etc/modprobe.d/
מקביליות ב-Linux NFS
2 בזמן ההתקנה פרוטוקול, גודל העברה של קלט/פלט, מספר החיבורים, נעילה ומטמון מאפיינים mount -o, /etc/fstab אפשרויות טעינה של NFS ב-Linux
3 אחרי הטעינה שליפה מראש של קריאה רציפה ‫/sys/class/bdi/.../read_ahead_kb, udev rules קריאה מראש ב-Linux NFS

איך ההגדרות פועלות יחד

ליבת Linux מגדירה מקביליות לכל חיבור (שלב 1 בטבלה הקודמת). אפשרות ההרכבה nconnect (שלב 2 בטבלה שלמעלה) מאפשרת לכם לפתוח כמה חיבורי TCP מלקוח אחד לאותה כתובת IP של נפח האחסון.

הנוסחה לחישוב מספר החיבורים המקבילים המשוער ללקוח אחד:

(slots per connection) x (nconnect value)

כל חיבור TCP לנקודת קצה של NetApp Volumes NFS תומך בעד 128 פעולות מצטברות לכל חיבור ל-NFSv3. בנוסף, NFSv4.1 מנהל משא ומתן על מגבלות ברמת הסשן. חיבור TCP יחיד יכול להגביל את יעילות ההפעלה בו-זמנית מתחת למקסימום של הסשן. מידע נוסף זמין במאמר בנושא הפעלה בו-זמנית של Linux NFS.

אם כמה לקוחות מטמיעים את אותה כתובת IP של נפח אחסון, צריך להשתמש במגבלת משבצות נמוכה יותר לכל לקוח, כדי שהמספר הכולל של פעולות בהמתנה בכל צי הלקוחות יישאר בגבולות המומלצים.

מגדירים קריאה מראש לכל נקודת טעינה (שלב 3 בטבלה הקודמת). זה תלוי באפשרות ההרכבה rsizeובברירות המחדל של הפצת Linux. חלק מההפצות משתמשות בזיכרון מטמון קבוע של 128KiB לקריאה מראש, ללא קשר ל-rsize, מה שיכול להפחית את הביצועים של קריאה רציפה עד שתבצעו התאמה.

אפשרויות ההרכבה והגדרות הליבה לא משנות את מדיניות הייצוא, את הגדרות Kerberos, את הדרישות של חומת האש או את התפוקה ברמת השירות ואת מגבלות ה-IOPS של נפח האחסון.

נקודות התחלה של עומסי עבודה

בטבלה הבאה מפורטים נקודות התחלה. בודקים את ההגדרות באמצעות האפליקציה, הפצת Linux ונתיב הרשת.

עומס עבודה בו-זמניות (concurrency) של ליבה אפשרויות הרכבה קריאה מראש
לשימוש כללי ברירת המחדל של מערכת ההפעלה שימוש בהוראות הטעינה ממסוף Google Cloud ברירת המחדל של מערכת ההפעלה
מכונה וירטואלית יחידה, תפוקה גבוהה/IOPS
  • הגבלת מספר המשבצות לכל חיבור ל-128 או פחות
  • ‫NFSv4.1, מגדירים את max_session_slots עד למקסימום של השרת
  • משתמשים ב-nconnect=2 ומעלה אם אתם צריכים יותר מ-128 פעולות בהמתנה
  • nconnect=8 עד nconnect=16
  • שינוי ההגדרות של rsize ושל wsize
כוונון אם עומסי העבודה מוגבלים לקריאה רציפה
לקוחות רבים (EDA/HPC/render farm)
  • מספר נמוך של משבצות זמן לכל לקוח (לדוגמה, 8)
  • לא לחרוג מהמגבלות המומלצות של מספר המשבצות הכולל לכל כתובת IP של נפח
  • לרוב NFSv3
  • לא nconnect
  • כדי להגדיל את נפח הקיבולת, כדאי לפצל את הלקוחות בין כמה כתובות IP בכמות גדולה
לרוב גבוה יותר במערכי נתונים גדולים וסטטיים
‫Kerberos NFSv4.1
  • התאמה אישית max_session_slots
  • אל תסתמכו על nconnect כדי לשפר את הביצועים
  • ‫sec=krb5, ‏krb5i או krb5p
  • לא לשלב עם nconnect
לפי הצורך לקריאות רצופות
‫NFSv3 בלי מנעולי ייעוץ ברירת המחדל של מערכת ההפעלה לפי הצורך

מדידה ואימות של הכוונון

אחרי שמעדכנים את הגדרות הלקוח, מבצעים את השלבים הבאים:

  • מריצים את nfsiostat,‏ mountstats ו-nfsstat בלקוח. מידע נוסף מופיע במאמר בנושא מעקב אחרי ביצועים.

  • משווים את התוצאות לנקודות השוואה של ביצועים. נקודות ההשוואה האלה מבוססות על nconnect=16,‏ rsize=65536 ו-wsize=65536 בחלק מהבדיקות של NFSv3 ב-Red Hat Enterprise Linux 9.

התאמה של הלקוח משפרת את היעילות של השימוש בנתיב הרשת לנפח של מכונה וירטואלית (VM). קיבולת הנפח, רמת השירות, מגבלות מאגר האחסון וגודל המכונה הווירטואלית ב-Compute Engine עדיין עשויים להגביל את התוצאות.

המאמרים הבאים