Network File System

מערכת קבצים ברשת (Network File System או בקיצור NFS) הוא פרוטוקול המאפשר למחשב לגשת לקבצים המאוחסנים על מחשב אחר המחובר לרשת כאילו היו מאוחסנים על כונניו המקומיים. הפרוטוקול פותח במקור על ידי חברת סאן מיקרוסיסטמס בשנת 1984 והוגדר במסמכי RFC מספר: , , , ו-.

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

גרסאות 2 ו־3 של הפרוטוקול עשו שימוש ב־UDP (גרסה 3 תומכת גם ב־TCP) ונועדו לשמר את הפרוטוקול חסר מצב, בעזרת ניהול נעילות (לדוגמה) אשר יושמו מחוץ לליבת הפרוטוקול. גרסה 4 כוללת שיפורי ביצועים ומציגה פרוטוקול בעל-מצב.

NFS מקושר לרוב למערכות UNIX, למרות היותו ניתן לשימוש על-גבי כל מערכת הפעלה כגון Mac OS של מחשבי מקינטוש וחלונות של מיקרוסופט. גם התקני NAS כמו NetApp filer ו־Celerra של EMC תומכים בפרוטוקול זה.

המונח "מערכת קבצים ברשת" משמש בנוסף כמונח כללי — ראו מערכת קבצים לדוגמאות נוספות.

== גרסאות ופרוטוקולים קשורים ==
=== גרסה 1 ===

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

=== גרסה 2 ===
גרסה 2 של הפרוטוקול (שהוגדרה ב־, במרץ 1989), השתמשה במקור רק ב־UDP. העיצוב שלה נועד לשמור על הפרוטוקול כחסר מצב, כאשר נעילות (למשל) יושמו מחוץ לליבת הפרוטוקול. האנשים שהיו מעורבים ביצירת גרסה 2 כללו את ראסטי זנדברג, בוב ליון, ביל ג'וי, וסטיב קליימן.

=== גרסה 3 ===
גרסה 3 (הוגדרה ב־, ביוני 1995) הוסיפה:
*תמיכה בקבצים הגדולים מ־2 ג'גה בייט ובמיקומים בתוכם
*תמיכה בכתיבה א-סינכרונית על מנת לשפר את ביצועי הכתיבה
*הוספת החזרת תכונות הקובץ בתגובות רבות, כדי למנוע את הצורך בגישה נוספת לשרת
*תמיכה בקריאת READDIRPLUS, כדי לקבל מצביע לתכונות הקבצים יחד עם שמותיהם בעת סריקת ספרייה
*שיפורים נוספים שונים

בזמן השחרור של גרסה 3 החלה גוברת תמיכת הספקים בשימוש בפרוטוקול מעל TCP. בעוד כמה יצרנים כבר הוסיפו לגרסה 2 תמיכה בפרוטוקול מעל TCP, הרי סאן הוסיפה תמיכה עבור TCP באותו זמן שזאת התווספה בגרסה 3. יתרונה של התמיכה ב־TCP היא בכך שהמימוש של הפרוטוקול ברשתות WAN הוא יותר פשוט מאשר באמצעות UDP.

=== גרסה 4 ===
גרסה 4 (, בדצמבר 2000; תוקן ב־, באפריל 2003), הושפעה מפרוטוקולי AFS ו־CIFS וכוללת שיפורי ביצועים, חיוב אבטחה חזקה וכן פרוטוקול בעל מצב. גרסה 4 היא הגרסה הראשונה שפותחה על ידי IETF אחרי שסאן העבירה לידיו את הפיתוח של פרוטוקולי NFS.

הגרסה המשנית 1 (4.1) אושרה על ידי IESG אבל לא אושרה סופית (נכון לאוקטובר 2009) ולא קיבלה מספר RFC עדיין (המפרט החדש, ב־612 עמודים, הוא הארוך ביותר בין תקני IETF) מלבד תיקוני באגים, מטרת המפרט היא לספק תמיכה להרחבת לחלוקת מערכת קבצים בין מספר שרתים וזאת על ידי פרוטוקול pNFS.

=== הרחבות אחרות ===

WebNFS היא הרחבה של גרסאות 2–3 של פרוטוקול NFS המאפשרת לשלב את התמיכה בפרוטוקול בקלות רבה יותר לתוך דפדפני האינטרנט ולאפשר שימוש בו גם דרך חומות אש.

פרוטוקולים נוספים שהפכו מזוהים עם NFS הם:
*NLM - ניהול נעילת ברשת, פרוטוקול המאפשר סימון טווח נעול בקובץ (נוסף כדי לתמוך בנעילת קבצים עבור ה־API של UNIX System V).
*RQUOTAD - פרוטוקול דיווח מכסת מקום מרחוק (על מנת לאפשר למשתמשים להציג את מכסות אחסון הנתונים שלהם בשרתי NFS).

== פלטפורמות ==
השימוש הנפוץ ביותר ב־NFS הוא עם מערכות Unix אולם גם סביבות אחרות כגון Mac OS, OpenVMS, חלונות, NetWare, ו־AS/400 יכולות להשתמש גם הן בפרוטוקול. פרוטוקולים אלטרנטיביים לגישה מרחוק כוללים את SMB (הידוע גם בשם CIFS), AFP , NCP, ואת מערכת הקבצים של OS/400 (QFileSvr.400). הן SMB והן נפוצות יותר מ־NFS על חלונות; AFP נפוץ יותר מאשר NFS על מערכות מקינטוש; ו־QFileSvr.400 נמצא בדרך כלל במערכות AS/400.

== מימוש טיפוסי ==

בתרחיש שבו מכונת Unix אחת (הלקוח) דורשת גישה לנתונים המאוחסנים במחשב אחר (שרת ה־NFS):
# השרת מיישם תהליכי שרת NFS (רץ בברירת מחדל כ־nfsd) כדי להפוך את הנתונים שלה זמינים ללקוחות באופן כללי
# מפעיל השרת קובע את שמות הספריות המיוצאות ואת הפרמטרים שלהם (בדרך כלל באמצעות הפקודה exportfs המשנה את קובץ התצורה /etc/exports)
# אחראי האבטחה של השרת מקנפג את השרת כך שיוכל לזהות ולאשר את זהות לקוחות
# תצורת הרשת של השרת נקבעת כך שהלקוחות הרצויים יכלו לתקשר עם השרת גם דרך חומות אש, אם קיימות
# הלקוח ניגש לנתונים המיוצאים, בדרך כלל על ידי ביצוע פקודת mount. הלקוח שואל את השרת באמצעות rpcbind באיזו יציאה תהליך ה־NFS משתמש, הלקוח מתחבר לתהליך nfsd שמעביר את הבקשה לתהליך mountd.
# אם הכל הולך כשורה, ניתן במחשב הלקוח להשתמש במערכת הקבצים על פי הפרמטרים שנקבעו בייצוא

ניתן לבצע אוטומציה של התהליך - באמצעות <span dir="ltr">/etc/fstab</span> או באמצעות תכונות automount.

== קישורים חיצוניים ==
* - NFS Version 4 Protocol Specification
* - NFS Version 3 Protocol Specification
* - NFS Version 2 Protocol Specification

קטגוריה:מערכות קבצים
קטגוריה:תקנים בתקשורת מחשבים