בדף הזה מתוארות אפשרויות להרכבת Linux NFS שמשפיעות על הביצועים ועל ההתנהגות כשמרכיבים נפחי NetApp שיוצאו. אתם מגדירים את האפשרויות האלה כשמריצים את הפקודה mount או כשמוסיפים אותן ל-/etc/fstab.
כדי לקבל מידע על סדר ההגדרה המומלץ ועל האינטראקציה בין אפשרויות ההרכבה לבין מקביליות הליבה והקריאה מראש, אפשר לעיין במאמר בנושא אופטימיזציה של לקוחות NFS ב-Linux.
דוגמאות לפקודות mount ולגישת ייצוא מופיעות במאמר חיבור לקוחות NFS.
לפני שמתחילים
לפני שמבצעים Mount של NetApp Volumes, צריך לעמוד בדרישות הבאות:
אפשר להשתמש בפקודת הטעינה מההוראות לטעינה של Google Cloud המסוף, אלא אם עומס העבודה שלכם דורש אפשרויות שונות.
אם אתם משנים את הגדרות הבו-זמניות באמצעות טבלת משבצות או משבצות סשן, אתם צריכים להגדיר את ההגדרות האלה לפני הטעינה. מידע נוסף מופיע במאמר בנושא בו זמניות של Linux NFS.
מומלץ לבדוק את השינויים בסביבה שאינה סביבת ייצור. ההשפעה של אפשרויות ההרכבה עשויה להשתנות בהתאם לעומס העבודה, לגרסת Linux ולזמן האחזור ברשת.
הסבר מהיר
בטבלה הבאה מפורטות אפשרויות נפוצות להרכבה בהתאם ליעדי העומס שלכם:
| מטרה | אפשרויות שכדאי לבדוק | הערות |
|---|---|---|
| לשימוש כללי | שימוש בהוראות להרכבה על הקיר Google Cloud | כולל הגדרות ברירת מחדל שמתאימות לפרוטוקול |
| תפוקה או IOPS גבוהים יותר ממכונה וירטואלית אחת | nconnect=8 עד nconnect=16, כוונון rsize ו-wsize |
קודם מגדירים את טבלת המשבצות. מידע נוסף זמין במאמר בנושא מקביליות של NFS ב-Linux |
| זמן טעינה קצר יותר למסדי נתונים | rsize=262144, wsize=262144, hard, timeo=600, vers=4.1 |
בדיקה של האפליקציה הספציפית |
| ציון גרסת NFS | vers=3 או vers=4.1 |
מערכת Linux מפעילה כברירת מחדל את הגרסה הכי עדכנית שזמינה |
| NFSv3 בלי מנעולי ייעוץ | vers=3, nolock |
הנחיות לגבי חומת אש ומנהל נעילה מפורטות במאמר חיבור לקוחות NFS |
| Kerberos NFSv4.1 | sec=krb5, krb5i או krb5p |
לא לשימוש עם nconnect |
| נתונים שבעיקר קוראים אותם, עם פשרות ידועות לגבי עקביות | nocto, actimeo= |
מתקדם; חשוב להבין קודם את התנהגות המטמון |
תמיד צריך לכלול את tcp כשמפעילים NFSv3. למרות שב-Linux נעשה שימוש ב-TCP לתנועת נתונים של NFS כברירת מחדל, הוספה מפורשת של tcp עוזרת לוודא שתהליך ההרכבה משתמש ב-TCP במקום ב-UDP. כך אפשר לשפר את הביצועים כשמערכות רבות מנסות לבצע פעולת mount בו-זמנית. כדאי להוסיף noatime כדי לצמצם את פעולות המטא-נתונים.
פרופילים מומלצים של מתקנים
פרופילי ההרכבה הבאים מספקים אפשרויות מומלצות על סמך דרישות הביצועים, גרסאות הפרוטוקול והיקף הלקוחות. כשמריצים את הפקודות האלה, מחליפים את VOLUME_IP ואת /export_path בערכים בפועל מההוראות להרכבה במסוף Google Cloud .
פרופיל א': ברירת מחדל (מסוף)
מריצים את פקודת ההרכבה שמופיעה במסוף Google Cloud ללא שינויים.
פרופיל ב': מכוון לביצועים (לקוח Linux יחיד)
דוגמה ל-NFSv3, בהתאם להגדרת הבדיקה של נקודות השוואה לביצועים:
sudo mount -t nfs -o hard,tcp,vers=3,rsize=262144,wsize=262144,nconnect=16 \ VOLUME_IP:/export_path /mnt/volume
נקודות ההשוואה משתמשות ב-nconnect=16 וב-64KiB rsize וב-wsize. עומסי עבודה רבים פועלים היטב עם nconnect=8. בודקים את שני הערכים.
פרופיל ג': NFSv4.1 עם גרסה מפורשת
sudo mount -t nfs -o vers=4.1,hard,rsize=262144,wsize=262144 \ VOLUME_IP:/export_path /mnt/volume
כדי למנוע את ההרכבה האוטומטית של NFSv4.2 כשהיא מופעלת בווליום, צריך לציין vers=4.1. מידע נוסף זמין במאמר חיבור של לקוחות NFS.
פרופיל ד': NFSv3 לחוות מחשוב
אם מחברים מספר גדול של לקוחות לנפח אחסון (לדוגמה, מאות), לא משתמשים ב-nconnect כדי למנוע מיצוי של סשני ה-TCP הזמינים בנפח האחסון.
sudo mount -t nfs -o vers=3,nolock,hard,tcp,rsize=262144,wsize=262144 \ VOLUME_IP:/export_path /mnt/volume
המשך הפעולה ב- /etc/fstab
בדוגמה הבאה מוצגת שורה בקובץ /etc/fstab עבור NFSv4.1:
VOLUME_IP:/export_path /mnt/volume nfs vers=4.1,hard,tcp,rsize=262144,wsize=262144,timeo=600,_netdev 0 0
משתמשים באפשרות _netdev כדי שהמערכת תחכה לחיבור לרשת לפני ההרכבה.
nconnect
אפשרות ההרכבה nconnect מאפשרת לשלוט במספר חיבורי ה-TCP שמופעלים על ידי לקוח ה-NFS לאותה נקודת קצה של אחסון, שהיא כתובת ה-IP של הנפח. כל חיבור מטפל בכמה פעולות NFS בו-זמנית, עד למגבלה מוגדרת. הגדלת מספר החיבורים משפרת את מקביליות הקלט/פלט ואת קצב העברת הנתונים מלקוח יחיד.
המלצות
כדאי לפעול לפי ההמלצות הבאות כשמגדירים את אפשרות ההרכבה nconnect:
בודקים את
nconnect=8ואתnconnect=16. המערכת תומכת בערכים עד 16.מומלץ להשתמש ב-
nconnectרק עבור לקוחות ייעודיים עם ביצועים גבוהים. אם הרבה לקוחות, למשל חוות מחשוב, מתחברים לאותו אחסון, מומלץ להימנע משימוש ב-nconnect.מבצעים את פעולת ההרכבה הראשונה לכתובת IP של נפח נתון כדי להגדיר את הערך
nconnectשל כתובת ה-IP הזו בלקוח הזה. אם מתבצעת טעינה מאוחרת יותר לאותה כתובת IP, נעשה שימוש באותו ערך, גם אם מצוין ערך אחר. צריך להעלות את הייצוא עם הערךnconnectשנבחר קודם, או להשתמש באותה אפשרות לכל ההעלאות לאותו כתובת IP.שימו לב: הגדרת
nconnectלכתובת IP של נפח אחד לא משפיעה על נקודות הגישה לכתובת IP של נפח אחר.לפני שמשתמשים ב-
nconnect, צריך לוודא שהפצת ה-Linux שלכם תומכת בו.
מידע נוסף על מגבלות המשבצות לכל חיבור זמין במאמר בנושא בו זמניות של NFS ב-Linux.
rsize ו-wsize
אפשרויות ההרכבה rsize ו-wsize מגדירות את גודל ההעברה המקסימלי לפעולות קריאה וכתיבה של NFS. אם לא מציינים אותם, הלקוח והשרת מנהלים משא ומתן על הגודל הגדול ביותר ששניהם תומכים בו, שהוא עד 1MiB בלקוחות Linux וב-NetApp Volumes.
המלצות
כשמגדירים את אפשרויות ההרכבה rsize ו-wsize, כדאי להביא בחשבון את ההמלצות הבאות:
כדאי לבדוק את
rsize=262144ואתwsize=262144(256 KiB) כדי לשפר את קצב העברת הנתונים ואת זמן האחזור באפליקציות שרגישות לזמן האחזור.חשוב להשתמש בערכים גדולים מ-256KiB בזהירות, כי הם עלולים להגדיל את זמן האחזור או להקטין את קצב העברת הנתונים עבור חלק מעומסי העבודה. מומלץ למדוד את הביצועים לפני הפריסה.
משתמשים בערכים
rsize=65536ו-wsize=65536(64KiB) לבדיקות NFSv3, כי הערכים האלה שימשו בנקודות השוואה של ביצועים.
שימו לב שההגדרות האלה משפיעות באופן מינימלי על עומסי עבודה אקראיים, שבדרך כלל משתמשים בגדלים קטנים יותר של פעולות מאשר rsize ו-wsize, בעוד שקלט/פלט רציף דרך מטמון הדפים משתמש לעיתים קרובות בגדלים של פעולות עד rsize ו-wsize.
אפשרות הטעינה rsize משפיעה על התנהגות הקריאה מראש. מידע נוסף זמין במאמר בנושא קריאה מראש ב-Linux NFS.
גרסת הפרוטוקול
בטבלה הבאה מפורטים ערכי האפשרויות vers וגרסאות הפרוטוקול התואמות שלהם:
| אפשרות | שימוש |
|---|---|
vers=3 |
NFSv3 |
vers=4.1 |
NFSv4.1 |
vers=4.2 |
NFSv4.2 |
אם לא מגדירים את vers, הפקודה mount ב-Linux משתמשת בגרסת ה-NFS הגבוהה ביותר שהלקוח והנפח תומכים בה. נפחים מסוג Flex Unified, Standard, Premium ו-Extreme עם NFSv4.1 מופעל תומכים גם ב-NFSv4.2. אפשר לטעון NFSv4.2 אלא אם מציינים vers=4.1.
מידע נוסף על מיפוי זהויות ב-NFSv4.1, על Kerberos ועל מזהים מספריים זמין במאמר חיבור לקוחות NFS.
hard, timeo, and retrans
אפשרויות ההרכבה hard, timeo ו-retrans מנהלות את התנהגות הלקוח ואת הלוגיקה של ניסיון חוזר להפעלה כשמתרחשות בעיות בחיבור:
hard: מנסה שוב לשלוח בקשות NFS עד שהן מצליחות. האפשרות הזו טיפוסית לתקינות נתונים בעומסי עבודה של ייצור.
timeo: מציין את הזמן הקצוב לתפוגה בעשיריות של שנייה לפני שמנסים שוב לשלוח בקשה. עומסי עבודה שמתמקדים במסדי נתונים משתמשים לעיתים קרובות בערךtimeo=600(60 שניות).
retrans: מציין את מספר הניסיונות החוזרים. Google Cloud ברירות המחדל של המסוף בדרך כלל מספיקות, אלא אם צוין אחרת בחוברות ההפעלה.
האפשרות NFSv3 nolock
נעילה מייעצת ב-NFSv3 משתמשת ב-Network Lock Manager (NLM) ודורשת rpc.statd בצד הלקוח וכללי חומת אש ליציאות של קריאה חוזרת. אם לא משתמשים בנעילות מייעצות, צריך להשתמש באפשרות nolock בהרכבה כדי להימנע מתנועה של מנהל הנעילה.
ב-NFSv4.1 נעילת הפרוטוקול מיושמת ביציאה 2049, ולכן הלקוחות לא צריכים כללי כניסה נפרדים של מנהל הנעילה.
מידע נוסף על שימוש בנעילה מייעצת עם NFSv3 ועל כללים של חומת אש לגישה לנפחי NFS זמין במאמר חיבור לקוחות NFS.
מטמון ועקביות באמצעות nocto ו-actimeo
לקוח NFS משתמש במודל עקביות רופף. הטיימרים של מטמון המאפיינים קובעים כמה זמן הלקוח סומך על המטא-נתונים של הקובץ והספרייה לפני שהוא יוצר קשר עם השרת. ההגדרה של עקביות בין סגירה לפתיחה (cto) מרעננת את נתוני הקובץ כשפותחים אותו.
nocto: הלקוח לא כופה עקביות של השרת בפתיחה. כך מצמצמים את מספר הקריאות ל-getattr, אבל מגדילים את הסיכון לנתונים לא עדכניים.
actimeo=N: מגדיר את כל טיימרים של מטמון המאפיינים ל-Nשניות (acregmin, acregmax, acdirminו-acdirmax).
כדאי להשתמש בערכים של nocto ומעלה actimeo בתרחישים הבאים:
כותב יחיד או צרכנים לקריאה בלבד שמקבלים עדכונים דרך נתיב אחר.
קבוצות גדולות של נתונים סטטיים, כמו ספריות EDA, תוכן אינטרנט או טקסטורות של עיבוד תמונה, אם אפשר להסתפק בנתונים לא עדכניים.
ברוב המקרים, כדאי להשתמש בברירות המחדל המומלצות של Linux לזיכרון מטמון של מאפיינים:
קבצים רגילים – מינימום ומקסימום:
acregmin=3שניות ו-acregmax=60שניותהמינימום והמקסימום של ספריות:
acdirmin=30שניות ו-acdirmax=60שניות
הורדת הערכים האלה מגדילה את העומס על שרת ה-NFS ועלולה לפגוע בביצועים. כדאי להימנע משימוש ב-actimeo=0 אלא אם מדובר בתרחישי שימוש ספציפיים מאוד שבהם אתם מבינים את ההשפעה.
אפשרויות נפוצות אחרות
אלו אפשרויות נפוצות אחרות להעלאה שזמינות ללקוחות NFS:
rwאוro: טעינה לקריאה וכתיבה או לקריאה בלבד.
noatime: לא לעדכן את זמן הגישה בקריאה, כי זה מצמצם את פעולות המטא-נתונים ומומלץ לעשות את זה.
sec=sys: AUTH_SYS, שהוא ברירת המחדל לייצוא שאינו Kerberos.
_netdev: משתמשים בערך הזה ב-fstabכדי לבצע mount אחרי שהרשת זמינה.