ระบบไฟล์ NFS

หา เครือข่าย

ระบบไฟล์ ฟังก์ชั่นที่มีประโยชน์ที่สุดอย่างหนึ่งที่สามารถทำได้โดยใช้เครือข่ายคือการแชร์ไฟล์ผ่านระบบไฟล์เครือข่าย โดยทั่วไปจะมีระบบที่เรียกว่าไฟล์เครือข่าย

System หรือ NFS ซึ่งพัฒนาโดย Sun Corporation

เมื่อทำงานกับระบบไฟล์เครือข่าย การดำเนินการใดๆ กับไฟล์ที่ทำบนเครื่องคอมพิวเตอร์จะถูกส่งผ่านเครือข่ายไปยังเครื่องระยะไกล เมื่อระบบไฟล์เครือข่ายกำลังทำงาน โปรแกรมจะเชื่อว่าไฟล์ทั้งหมดบนคอมพิวเตอร์ระยะไกลนั้นอยู่ที่คอมพิวเตอร์ที่ระบบกำลังทำงานอยู่ ดังนั้นการแยกข้อมูลผ่านระบบดังกล่าวจึงไม่จำเป็นต้องมีการเปลี่ยนแปลงโปรแกรมใดๆ

จดหมาย อีเมลเป็นวิธีการสื่อสารที่สำคัญที่สุดระหว่างคอมพิวเตอร์อีเมล

เก็บไว้ในไฟล์เดียวในรูปแบบพิเศษ ใช้โปรแกรมพิเศษในการอ่านและส่งจดหมาย ผู้ใช้แต่ละคนมีกล่องจดหมายแยกต่างหากซึ่งเป็นไฟล์ที่เก็บข้อมูลในรูปแบบพิเศษจดหมายขาเข้า

- หากมีจดหมายมาถึงคอมพิวเตอร์ โปรแกรมประมวลผลเมลจะค้นหาไฟล์กล่องจดหมายของผู้ใช้ที่เกี่ยวข้องและเพิ่มจดหมายที่ได้รับที่นั่น หากกล่องจดหมายของผู้ใช้อยู่ในคอมพิวเตอร์เครื่องอื่น จดหมายนั้นจะถูกเปลี่ยนเส้นทางไปยังคอมพิวเตอร์เครื่องนี้ซึ่งจะมีการประมวลผลเพิ่มเติม ระบบเมลประกอบด้วยโปรแกรมต่างๆ มากมาย การส่งจดหมายไปยังกล่องจดหมายในพื้นที่หรือระยะไกลนั้นดำเนินการโดยโปรแกรมเดียว (เช่น sendmail หรือ smail) ในขณะที่ใช้การส่งหรือดูจดหมายปกติจำนวนมาก โปรแกรมต่างๆ (เช่น Pine หรือ elm) ไฟล์กล่องจดหมาย

มักจะเก็บไว้ในไดเร็กทอรี /var/spool/mail

คำถาม

1. NOS คืออะไร และมีวัตถุประสงค์อะไร

2. ระบบปฏิบัติการเครือข่ายทำหน้าที่อะไรบ้าง?

3. โครงสร้าง NOS ประกอบด้วยส่วนใดบ้าง?

4. ตัวเปลี่ยนเส้นทางคืออะไร?

5. ระบบปฏิบัติการเครือข่ายแบ่งตามสิทธิในการเข้าถึงทรัพยากรอย่างไร?

6. ระบบปฏิบัติการเครือข่ายแบ่งตามขนาดของเครือข่ายอย่างไร?

7. คุณสมบัติของระบบปฏิบัติการเครือข่ายขึ้นอยู่กับขนาดของเครือข่ายอย่างไร?

8. อธิบายระบบปฏิบัติการเครือข่าย NetWare จาก Novell

10. อธิบายระบบไฟล์ของระบบปฏิบัติการเครือข่าย NetWare

11. ระบบปฏิบัติการเครือข่ายรองรับโปรโตคอลระดับใด? ระบบเน็ตแวร์?

12. แสดงรายการฟังก์ชั่นของโปรโตคอล IPX, SPX

13. อธิบายระบบปฏิบัติการเครือข่าย Windows NT

14. แสดงรายการงานของระบบปฏิบัติการเครือข่าย Windows NT

15. โครงสร้างของระบบปฏิบัติการเครือข่าย Windows NT ประกอบด้วยองค์ประกอบใดบ้าง?

16. อธิบายระบบไฟล์ของระบบปฏิบัติการเครือข่าย Windows NT

17. หลักการรักษาความปลอดภัยใดบ้างที่ใช้ในระบบปฏิบัติการเครือข่าย Windows NT?

18. แสดงรายการคุณสมบัติของระบบปฏิบัติการเครือข่าย Windows NT จากมุมมองของการใช้เครื่องมือเครือข่าย

19. ตั้งชื่อคุณสมบัติของระบบปฏิบัติการเครือข่าย Windows NT

20. โซนอะไรบ้าง ใช้วินโดวส์ NT?

21. อธิบายระบบปฏิบัติการเครือข่าย UNIX

22. แสดงรายการฟังก์ชันของระบบปฏิบัติการเครือข่าย UNIX

23. กำหนดลักษณะระบบไฟล์ของระบบปฏิบัติการเครือข่าย UNIX

24. UNIX ใช้หลักการรักษาความปลอดภัยอะไรบ้าง?

25. ให้ภาพรวมของระบบปฏิบัติการเครือข่าย Linux

Network File System (NFS) เป็นโซลูชันการแชร์ไฟล์สำหรับองค์กรที่มีสภาพแวดล้อมเครื่อง Windows และ Unix/Linux ผสมกัน ระบบไฟล์ NFS ช่วยให้คุณสามารถเปิดได้ การเข้าถึงทั่วไปไปยังไฟล์ระหว่างแพลตฟอร์มต่างๆ ที่ระบุในขณะที่ระบบปฏิบัติการกำลังทำงาน วินโดวส์เซิร์ฟเวอร์ 2012: บริการ NFS ใน Windows Server 2012 มีคุณสมบัติและการปรับปรุงต่อไปนี้

1. ค้นหาใน ไดเรกทอรีที่ใช้งานอยู่. คุณมีโอกาสที่จะสมัคร Windows ใช้งานอยู่ไดเร็กทอรีสำหรับการเข้าถึงไฟล์ ส่วนขยาย Identity Management สำหรับ Unix schema สำหรับ Active Directory มีฟิลด์ Unix user identifier (UID) และ group identifier (GID) ซึ่งช่วยให้เซิร์ฟเวอร์สำหรับ NFS และไคลเอ็นต์สำหรับบริการ NFS สามารถดูการแมปบัญชีได้ ผู้ใช้วินโดวส์บน Unix โดยตรงจากบริการ โดเมนใช้งานอยู่ไดเร็กทอรี (บริการโดเมน Active Directory) การจัดการข้อมูลประจำตัวสำหรับ Unix ทำให้ง่ายต่อการจัดการการแมปบัญชีผู้ใช้ Windows บน Unix กับ Active Directory Domain Services

2. ปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์บริการสำหรับ NFS มีไดรเวอร์ตัวกรองไฟล์ที่ช่วยลดเวลาแฝงโดยรวมลงอย่างมากเมื่อเข้าถึงไฟล์บนเซิร์ฟเวอร์

3. รองรับอุปกรณ์ Unix พิเศษบริการสำหรับ NFS รองรับอุปกรณ์ Unix พิเศษ (mknod)

4. ขยายการสนับสนุน Unixบริการสำหรับ NFS รองรับ Unix เวอร์ชันต่อไปนี้: Sun Microsystems Solaris เวอร์ชัน 9, Red หมวกลินุกซ์เวอร์ชัน 9, IBM AIX เวอร์ชัน 5L 5.2 และ ฮิวเลตต์ แพ็กการ์ด HP-UX เวอร์ชัน 11i รวมถึง Linux รุ่นใหม่หลายรุ่น

หนึ่งในสถานการณ์ทั่วไปที่สร้างความต้องการ NFS เกี่ยวข้องกับการเปิดเผยระบบการวางแผนทรัพยากรองค์กร (ERP) ที่ใช้ Unix ให้กับผู้ใช้ Windows ขณะอยู่ในระบบ ERP ผู้ใช้สามารถสร้างรายงานและ/หรือส่งออกข้อมูลทางการเงินไปยัง Microsoft Excel เพื่อการวิเคราะห์เพิ่มเติมได้ ระบบไฟล์ NFS ช่วยให้สามารถเข้าถึงไฟล์เหล่านี้ได้ในขณะที่ยังอยู่ในสภาพแวดล้อม Windows ซึ่งช่วยลดความจำเป็นในการใช้ทักษะทางเทคนิคเฉพาะทาง และเวลาที่ใช้ในการส่งออกไฟล์โดยใช้สคริปต์ Unix จากนั้นจึงนำเข้าไฟล์เหล่านั้นไปยังแอปพลิเคชัน Windows ที่เฉพาะเจาะจง

อาจมีสถานการณ์ที่คุณมีระบบ Unix ที่ใช้ในการจัดเก็บไฟล์บน Storage Area Network (SAN) บางประเภท การเรียกใช้บริการ NFS บนเครื่อง Windows Server 2012 ช่วยให้ผู้ใช้ในองค์กรสามารถเข้าถึงไฟล์ที่เก็บไว้ที่นั่นได้โดยไม่มีค่าใช้จ่ายในการเขียนสคริปต์ฝั่ง Unix

ก่อนที่จะติดตั้ง NFS Services คุณต้องลบรายการก่อนหน้านี้ออก ส่วนประกอบที่ติดตั้ง NFS เช่นส่วนประกอบ NFS ที่รวมอยู่ในบริการสำหรับ Unix

ส่วนประกอบบริการ NFS

คอมโพเนนต์บริการ NFS สองรายการต่อไปนี้พร้อมใช้งาน

1. เซิร์ฟเวอร์สำหรับ NFS(เซิร์ฟเวอร์สำหรับ NFS) โดยทั่วไปแล้ว คอมพิวเตอร์ที่ใช้ Unix จะไม่สามารถเข้าถึงแฟ้มที่อยู่บนคอมพิวเตอร์ที่ใช้ Windows ได้ อย่างไรก็ตามคอมพิวเตอร์ที่ใช้ Windows Server 2012 R2 และ ส่วนประกอบเซิร์ฟเวอร์สำหรับ NFS สามารถทำหน้าที่เป็นเซิร์ฟเวอร์ไฟล์สำหรับคอมพิวเตอร์ Windows และ Unix

2. ลูกค้าสำหรับ NFS(ไคลเอนต์สำหรับ NFS) โดยทั่วไปแล้ว คอมพิวเตอร์ที่ใช้ Windows จะไม่สามารถเข้าถึงไฟล์ที่อยู่บนคอมพิวเตอร์ที่ใช้ Unix ได้ อย่างไรก็ตาม คอมพิวเตอร์ที่ใช้ Windows Server 2012 R2 และไคลเอ็นต์สำหรับคุณลักษณะ NFS สามารถเข้าถึงไฟล์ที่จัดเก็บไว้ในเซิร์ฟเวอร์ NFS ที่ใช้ Unix ได้

การติดตั้งเซิร์ฟเวอร์สำหรับ NFS โดยใช้ PowerShell

มาดูวิธีใช้ PowerShell เพื่อติดตั้งบทบาท NFS บนเซิร์ฟเวอร์และสร้างการแชร์ไฟล์ NFS

1. เปิด หน้าต่างวินโดวส์ PowerShell ผ่านทาสก์บาร์ในฐานะบัญชีผู้ดูแลระบบ

2. ป้อนคำสั่งต่อไปนี้เพื่อติดตั้งบทบาท NFS บนเซิร์ฟเวอร์:

PS C:\> นำเข้าโมดูล ServerManager PS C:\> Add-WindowsFeature FS-NFS-Services PS C:\> นำเข้าโมดูล NFS

3. ป้อนคำสั่งด้านล่างเพื่อสร้างการแชร์ไฟล์ NFS ใหม่:

PS C:\> ใหม่-NfsShare - ชื่อ "ทดสอบ" - เส้นทาง "C:\Shares\Test"

4. หากต้องการดู PowerShell cmdlets เฉพาะ NFS ใหม่ทั้งหมดที่พร้อมใช้งานใน Windows Server 2012 R2 ให้เรียกใช้คำสั่งต่อไปนี้:

PS C:\>รับคำสั่ง -โมดูล NFS

5. คลิกขวาที่โฟลเดอร์ C:\Shares\Test เลือก “properties” จากนั้นไปที่แท็บ NFS Sharing คลิกที่ปุ่มจัดการการแบ่งปัน NFS การเข้าถึง NFS) ในกล่องโต้ตอบที่ปรากฏขึ้น คุณสามารถจัดการสิทธิ์ในการเข้าถึงโฟลเดอร์ อนุญาตการเข้าถึงโดยไม่ระบุชื่อ และกำหนดการตั้งค่าการเข้ารหัสไฟล์ได้ คุณสามารถแชร์โฟลเดอร์ผ่าน NFS โดยใช้กล่องโต้ตอบการแชร์ขั้นสูงของ NFS ได้โดยไม่ต้องใช้ PowerShell

การตั้งค่าความละเอียดมาตรฐาน

ตอนนี้เราจะต้องเปิดพอร์ตไฟร์วอลล์บางส่วนเพื่อให้ NFS ทำงานได้ พอร์ตที่จำเป็นสำหรับบริการ NFS เพื่อให้ทำงานได้อย่างถูกต้องแสดงอยู่ในตารางด้านล่าง

ส่วนประกอบที่สำคัญที่สุดของระบบแบบกระจายคือระบบไฟล์ ซึ่งในกรณีนี้ก็จะถูกกระจายเช่นกัน เช่นเดียวกับในระบบรวมศูนย์ หน้าที่ของระบบไฟล์คือการจัดเก็บโปรแกรมและข้อมูลและให้การเข้าถึงไคลเอนต์ ระบบไฟล์แบบกระจายได้รับการดูแลโดยคอมพิวเตอร์ตั้งแต่หนึ่งเครื่องขึ้นไปที่เก็บไฟล์ โดยทั่วไปไฟล์เซิร์ฟเวอร์จะมีระบบไฟล์แบบลำดับชั้น โดยแต่ละระบบมีไดเร็กทอรีรากและไดเร็กทอรีระดับล่าง ในระบบไฟล์เครือข่ายจำนวนมาก คอมพิวเตอร์ไคลเอนต์สามารถแนบและติดตั้งระบบไฟล์เหล่านี้เข้ากับระบบไฟล์ในเครื่องได้ ทำให้ผู้ใช้สามารถเข้าถึงไดเร็กทอรีและไฟล์ระยะไกลได้อย่างสะดวก ในกรณีนี้ ข้อมูลของไฟล์ที่เมาท์จะไม่ย้ายไปที่ใดเลย โดยจะคงอยู่บนเซิร์ฟเวอร์

จากมุมมองของซอฟต์แวร์ ระบบไฟล์แบบกระจาย (FS) คือบริการเครือข่ายที่รวมโปรแกรมเซิร์ฟเวอร์และโปรแกรมไคลเอนต์ที่โต้ตอบระหว่างกันโดยใช้โปรโตคอลเฉพาะ บริการไฟล์ในระบบไฟล์แบบกระจายมีสองส่วนที่แตกต่างกันตามหน้าที่: บริการไฟล์เองและบริการไดเร็กทอรีระบบไฟล์ ข้อตกลงแรกกับการดำเนินงานเกี่ยวกับ แยกไฟล์เช่นการอ่าน การเขียน หรือการเพิ่ม (แก้ไข) และอย่างที่สอง - ด้วยการสร้างและจัดการไดเร็กทอรี การเพิ่มและลบไฟล์ออกจากไดเร็กทอรี เป็นต้น

ในระบบกระจายที่มีการจัดการอย่างดี ผู้ใช้จะไม่ทราบว่าระบบไฟล์ถูกนำไปใช้อย่างไร (มีไฟล์เซิร์ฟเวอร์กี่ไฟล์ อยู่ที่ไหน ทำงานอย่างไร) ตามหลักการแล้ว สำหรับผู้ใช้ ระบบไฟล์เครือข่ายควรมีลักษณะเหมือนของตัวเองบนคอมพิวเตอร์ นั่นคือ โปร่งใสโดยสมบูรณ์ อย่างไรก็ตาม ในความเป็นจริงแล้ว ระบบไฟล์เครือข่ายยังไม่สามารถบรรลุอุดมคตินี้ได้อย่างสมบูรณ์

โดยทั่วไประบบไฟล์เครือข่ายจะมีองค์ประกอบดังต่อไปนี้:

ระบบไฟล์โลคัล

อินเทอร์เฟซระบบไฟล์โลคัล

เซิร์ฟเวอร์ระบบไฟล์เครือข่าย

ไคลเอ็นต์ระบบไฟล์เครือข่าย

อินเทอร์เฟซระบบไฟล์เครือข่าย

โปรโตคอลไคลเอ็นต์-เซิร์ฟเวอร์ระบบไฟล์เครือข่าย

ไคลเอนต์ Network FS คือโปรแกรมที่ทำงานบนคอมพิวเตอร์หลายเครื่องที่เชื่อมต่อกับเครือข่าย โปรแกรมเหล่านี้ตอบสนองคำขอของแอปพลิเคชันเพื่อเข้าถึงไฟล์ที่จัดเก็บไว้ในคอมพิวเตอร์ระยะไกล ไคลเอนต์ FS เครือข่ายส่งคำขอผ่านเครือข่ายไปยังส่วนประกอบซอฟต์แวร์อื่น - เซิร์ฟเวอร์ FS เครือข่ายที่ทำงานบนคอมพิวเตอร์ระยะไกล เมื่อได้รับคำขอแล้ว เซิร์ฟเวอร์สามารถดำเนินการได้เอง หรือซึ่งเป็นเรื่องปกติมากกว่า จะส่งคำขอไปยังระบบไฟล์ในเครื่องเพื่อประมวลผล หลังจากได้รับการตอบกลับจาก FS ท้องถิ่นแล้ว เซิร์ฟเวอร์จะส่งข้อมูลดังกล่าวผ่านเครือข่าย__

ไคลเอนต์และเซิร์ฟเวอร์ FS เครือข่ายโต้ตอบกันผ่านเครือข่ายโดยใช้โปรโตคอลเฉพาะ หากอินเทอร์เฟซ FS ท้องถิ่นและเครือข่ายตรงกัน โปรโตคอลนี้อาจค่อนข้างง่าย กลไกหนึ่งที่ใช้เพื่อจุดประสงค์นี้อาจเป็นกลไก RPC

ในระบบปฏิบัติการ Windows บริการไฟล์เครือข่ายหลักคือโปรโตคอล SMB (Server Message Block) ซึ่งได้รับการพัฒนาร่วมกันโดย Microsoft, Intel และ IBM เวอร์ชันขยายล่าสุดเรียกว่า Common Internet File System, CIFS

โปรโตคอลใช้งานได้ ระดับการใช้งานแบบจำลอง OSI SMB ใช้โปรโตคอลการขนส่งที่หลากหลายเพื่อส่งข้อความผ่านเครือข่าย ในอดีต โปรโตคอลแรกคือ NetBIOS (และเวอร์ชันใหม่กว่าคือ NetBEUI) แต่ตอนนี้ข้อความ SMB สามารถส่งผ่านโปรโตคอลอื่นได้ (TCP/UDP และ IPX)

SMB อยู่ในคลาสของโปรโตคอลเชิงการเชื่อมต่อ งานเริ่มต้นด้วยการที่ไคลเอนต์ส่งข้อความพิเศษไปยังเซิร์ฟเวอร์เพื่อขอการเชื่อมต่อ หากเซิร์ฟเวอร์พร้อมที่จะสร้างการเชื่อมต่อ เซิร์ฟเวอร์จะตอบกลับด้วยข้อความยืนยัน เมื่อสร้างการเชื่อมต่อแล้ว ไคลเอนต์สามารถติดต่อเซิร์ฟเวอร์โดยส่งคำสั่งเพื่อจัดการไฟล์และไดเร็กทอรีในข้อความ SMB ในระหว่างการดำเนินการ อาจมีสถานการณ์หลายประการเกิดขึ้นซึ่งอาจส่งผลต่อประสิทธิภาพของการเข้าถึงไฟล์จากระยะไกล:

1. ความล้มเหลวของคอมพิวเตอร์ที่ใช้เซิร์ฟเวอร์ระบบไฟล์เครือข่ายในระหว่างเซสชันการสื่อสารกับไคลเอนต์ ระบบไฟล์ในเครื่องจะจดจำสถานะของการดำเนินการต่อเนื่องที่แอปพลิเคชันดำเนินการกับไฟล์เดียวกันโดยการรักษาตารางภายใน เปิดไฟล์(การเรียกของระบบเปิด อ่าน เขียน เปลี่ยนสถานะของตารางนี้) เมื่อระบบล่ม ตารางของไฟล์ที่เปิดอยู่จะหายไปหลังจากรีบูตคอมพิวเตอร์เซิร์ฟเวอร์ ในกรณีนี้ แอปพลิเคชันที่ทำงานบนคอมพิวเตอร์ไคลเอนต์ไม่สามารถทำงานกับไฟล์ที่เปิดอยู่ก่อนที่จะเกิดข้อผิดพลาดต่อไปได้

วิธีแก้ไขปัญหาอย่างหนึ่งคือการถ่ายโอนฟังก์ชันการดูแลและจัดเก็บตารางไฟล์ที่เปิดจากเซิร์ฟเวอร์ไปยังไคลเอนต์ ด้วยองค์กรนี้ โปรโตคอลไคลเอ็นต์-เซิร์ฟเวอร์จะง่ายขึ้น เนื่องจากการรีบูตเซิร์ฟเวอร์จะทำให้บริการหยุดชั่วคราวเท่านั้น

2. การบริการล่าช้าอย่างมากเนื่องจากการร้องขอเครือข่ายและไฟล์เซิร์ฟเวอร์รีบูตเมื่อมีไคลเอนต์จำนวนมากเชื่อมต่อ วิธีแก้ไขปัญหาอาจเป็นการแคชไฟล์ (บางส่วนหรือทั้งหมด) บนฝั่งไคลเอ็นต์ อย่างไรก็ตาม ในกรณีนี้ โปรโตคอลจะต้องคำนึงถึงความเป็นไปได้ของการสร้างสำเนาหลายชุดของไฟล์เดียวกัน ซึ่งสามารถแก้ไขได้โดยผู้ใช้ที่แตกต่างกัน เช่น โปรโตคอลจะต้องรับประกันความสอดคล้องระหว่างสำเนาของไฟล์ที่มีอยู่ในคอมพิวเตอร์เครื่องอื่น

3. การสูญหายของข้อมูลและการทำลายความสมบูรณ์ของระบบไฟล์ระหว่างความล้มเหลวและความล้มเหลวของคอมพิวเตอร์ที่ทำหน้าที่เป็นเซิร์ฟเวอร์ไฟล์ เมื่อต้องการเพิ่มความทนทานต่อข้อบกพร่องของ FS เครือข่าย คุณสามารถจัดเก็บสำเนาหลายชุดของแต่ละไฟล์ (หรือ FS ทั้งหมด) บนเซิร์ฟเวอร์หลายเครื่องได้ สำเนาของไฟล์ดังกล่าวเรียกว่าสำเนา

การจำลองแบบไฟล์ไม่เพียงปรับปรุงความทนทานต่อข้อผิดพลาด แต่ยังแก้ปัญหาการโอเวอร์โหลดไฟล์เซิร์ฟเวอร์ด้วยการกระจายคำขอไฟล์ไปยังเซิร์ฟเวอร์หลายเครื่อง ซึ่งช่วยปรับปรุงประสิทธิภาพของระบบไฟล์

4. การตรวจสอบความถูกต้องจะดำเนินการบนคอมพิวเตอร์เครื่องหนึ่ง เช่น บนไคลเอนต์ และการอนุญาต เช่น การตรวจสอบสิทธิ์การเข้าถึงไดเร็กทอรีหรือไฟล์ จะดำเนินการบนคอมพิวเตอร์อีกเครื่องหนึ่ง โดยทำหน้าที่เป็นเซิร์ฟเวอร์ไฟล์ ปัญหาทั่วไปของบริการเครือข่ายทั้งหมดจะต้องคำนึงถึงโดยโปรโตคอลสำหรับการสื่อสารระหว่างไคลเอนต์บริการไฟล์และเซิร์ฟเวอร์

ปัญหาที่แสดงได้รับการแก้ไขอย่างครอบคลุมโดยการสร้างบริการสำหรับการรับรองความถูกต้องแบบรวมศูนย์ การจำลองแบบ การแคช ฯลฯ สิ่งเหล่านี้ บริการเพิ่มเติมสะท้อนให้เห็นในโปรโตคอลสำหรับการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์ซึ่งเป็นผลมาจากการสร้างโปรโตคอลหลายประเภทประเภทนี้ที่รองรับฟังก์ชันเพิ่มเติมหนึ่งชุดหรือชุดอื่น ดังนั้นสำหรับ FS ท้องถิ่นเดียวกันอาจมีโปรโตคอล FS เครือข่ายที่แตกต่างกัน (รูปที่ 5.30) ดังนั้นในปัจจุบันคุณสามารถเข้าถึงระบบไฟล์ NTFS ได้โดยใช้ SMB, NCP (NetWare Control Protocol) และ NFS (Network File System - โปรโตคอลระบบไฟล์เครือข่ายจาก Sun Microsystems ซึ่งใช้ในระบบปฏิบัติการ UNIX เวอร์ชันต่างๆ)

ในทางกลับกัน การเข้าถึง FS ภายในเครื่องจากระยะไกลสามารถทำได้โดยใช้โปรโตคอลเดียวกัน ประเภทต่างๆ- ตัวอย่างเช่น โปรโตคอล SMB ใช้เพื่อเข้าถึงไม่เพียงแต่ระบบไฟล์ FAT แต่ยังรวมถึงระบบไฟล์ NTFS และ HPFS ด้วย (รูปที่ 5.31) ระบบไฟล์เหล่านี้สามารถอยู่ในตำแหน่งอื่นหรือบนคอมพิวเตอร์เครื่องเดียวกัน__

คำถามทดสอบสำหรับบทที่ 5

1. เครือข่ายมีข้อได้เปรียบเหนือการใช้คอมพิวเตอร์แยกกันอย่างไร

2. โทโพโลยีเครือข่ายแบบฟิสิคัลและโลจิคัลเหมือนกันเสมอไปหรือไม่

3. โครงข่ายแบ่งตามขนาดพื้นที่ครอบคลุมอย่างไร?

4. คอมพิวเตอร์เครื่องใดที่สามารถทำหน้าที่เป็นเซิร์ฟเวอร์บนเครือข่ายได้?

5. ไฟล์เซิร์ฟเวอร์และเซิร์ฟเวอร์การพิมพ์คืออะไร?

6. เซิร์ฟเวอร์การลงทะเบียนทำหน้าที่อะไรบ้าง?

7. เซิร์ฟเวอร์การเข้าถึงระยะไกลทำหน้าที่อะไร?

8. พร็อกซีเซิร์ฟเวอร์คืออะไร?

9. แสดงรายการไคลเอนต์ที่เป็นไปได้ของเครือข่ายคอมพิวเตอร์

10. ไคลเอนต์ "หนา" และ "บาง" ในเครือข่ายคอมพิวเตอร์คืออะไร?

11. คุณเข้าใจคำว่า "การแบ่งส่วน" ของเครือข่ายได้อย่างไร

12. ที่อยู่ MAC คืออะไร?

13. OS แบบกระจายแตกต่างจากระบบปฏิบัติการแบบเครือข่ายอย่างไร? ปัจจุบันระบบเครือข่ายแบบกระจายมีอยู่จริงหรือไม่?

14. แสดงรายการส่วนประกอบหลักของระบบปฏิบัติการเครือข่าย บริการเครือข่ายคืออะไร? คุณสามารถตั้งชื่อบริการเครือข่ายใดได้บ้าง

15. บริการเครือข่ายบางอย่างไม่ได้มุ่งเป้าไปที่ผู้ใช้ แต่มุ่งเป้าไปที่ผู้ดูแลระบบ บริการเหล่านี้คืออะไร?

16. ระบบปฏิบัติการเครือข่ายระบบแรกคืออะไร? ปัจจุบันมีการใช้แนวทางใดในการสร้างระบบปฏิบัติการเครือข่าย?

17. ตั้งชื่อคุณลักษณะเฉพาะของเครือข่ายเพียร์ทูเพียร์ คุณสมบัติหลักของเครือข่ายแบบหลายเพียร์คืออะไร?

18. ระบบปฏิบัติการเซิร์ฟเวอร์คืออะไร? พวกเขาคืออะไร? ระบบปฏิบัติการเซิร์ฟเวอร์แตกต่างจากระบบปฏิบัติการไคลเอนต์อย่างไร

19. แผนสองระดับที่ใช้ในการประมวลผลแอปพลิเคชันแบบกระจายมีกี่รูปแบบ?

20. การประมวลผลแอปพลิเคชันแบบสองชั้นจะดีอย่างไรเมื่อเซิร์ฟเวอร์และไคลเอนต์ร่วมมือกัน?

21. โครงการประมวลผลใบสมัครแบบสามชั้นมีข้อดีอะไรบ้าง

22. กระบวนการสามารถโต้ตอบในระบบแบบกระจายได้อย่างไร?

23. พื้นฐานหลักที่ใช้ในระบบการขนส่งระบบปฏิบัติการเครือข่ายคืออะไร?

24. การซิงโครไนซ์กระบวนการบนเครือข่ายมีการจัดการอย่างไร?

25. การเรียกขั้นตอนระยะไกลหมายถึงอะไร?

คอนสแตนติน เปียนซิน

คุณสมบัติหลักของระบบไฟล์ NFS บนแพลตฟอร์ม UNIX

ความสุขคือเมื่อความปรารถนาของเราตรงกับความสามารถของผู้อื่น

"วเรเมคโก้"

ระบบไฟล์เครือข่ายได้เล่น กำลังเล่น และจะยังคงมีบทบาทสำคัญในโครงสร้างพื้นฐานข้อมูลต่อไป แม้ว่าแอปพลิเคชันเซิร์ฟเวอร์จะได้รับความนิยมเพิ่มขึ้น แต่บริการไฟล์ยังคงเป็นวิธีการสากลในการจัดการการเข้าถึงข้อมูลโดยรวม นอกจากนี้ แอปพลิเคชันเซิร์ฟเวอร์จำนวนมากยังทำหน้าที่เป็นเซิร์ฟเวอร์ไฟล์อีกด้วย

ระบบปฏิบัติการ UNIX กำลังประสบกับบางสิ่งในยุคฟื้นฟูศิลปวิทยา และเป็นผลจากความสนใจที่เพิ่มขึ้นอย่างมากจากระบบปฏิบัติการ Linux ที่เปิดให้ใช้งานได้ฟรี อย่างไรก็ตามคอมพิวเตอร์ตั้งโต๊ะใช้งานต่างๆ ตัวเลือกวินโดวส์ก่อนอื่น Windows 9x และ Windows NT/2000 แม้ว่าที่นี่ UNIX ที่เผยแพร่อย่างเสรีต่างๆ ก็ค่อยๆ ได้รับสัญชาติเช่นกัน

สำหรับหลายองค์กร การโฮสต์บริการไฟล์บนเครือข่ายบนคอมพิวเตอร์ UNIX ถือเป็นโซลูชั่นที่น่าสนใจมาก โดยมีเงื่อนไขว่าบริการดังกล่าวมี ประสิทธิภาพเพียงพอและความน่าเชื่อถือ เมื่อพิจารณาถึงความแตกต่างมากมายในระบบไฟล์ UNIX และ Windows โดยหลักๆ ในรูปแบบการตั้งชื่อไฟล์ สิทธิ์การเข้าถึง การล็อค และ การโทรของระบบเมื่อเข้าถึงไฟล์ การตรวจสอบความโปร่งใสในการเข้าถึงในสภาพแวดล้อม UNIX/Windows ที่ต่างกันถือเป็นสิ่งสำคัญเป็นพิเศษ นอกจากนี้ ไฟล์เซิร์ฟเวอร์ UNIX มักจะได้รับการติดตั้งเป็นส่วนเสริมจากเซิร์ฟเวอร์ Windows NT และ NetWare ที่มีอยู่

สำหรับระบบปฏิบัติการ UNIX มีการใช้งานระบบไฟล์เครือข่ายยอดนิยมทั้งหมดไม่มากก็น้อย รวมถึงระบบที่ใช้ในเครือข่าย Microsoft (SMB), NetWare (NCP), Macintosh (AFP) แน่นอนว่าเครือข่าย UNIX มีโปรโตคอลของตัวเอง โดยเฉพาะ NFS และ DFS โปรดทราบว่าเซิร์ฟเวอร์ UNIX ใดๆ สามารถให้บริการ NFS และ SMB ได้พร้อมกัน (เช่นเดียวกับ NCP และ AFP) และให้ความยืดหยุ่นเพิ่มเติมเมื่อสร้างโครงสร้างพื้นฐานเครือข่าย

แม้จะมีระบบไฟล์เครือข่าย UNIX ที่หลากหลาย แต่ผู้นำที่ไม่มีปัญหาคือระบบ NFS (ระบบไฟล์เครือข่าย การแปลตามตัวอักษร - ระบบไฟล์เครือข่าย) และระบบ SMB (บล็อกข้อความบริการ) บทความนี้จะกล่าวถึงความสามารถของ NFS ในเวลาเดียวกัน ในประเด็นหนึ่งที่กำลังจะเกิดขึ้น เราวางแผนที่จะพิจารณาคุณลักษณะของงาน SMB แพลตฟอร์มยูนิกซ์และประการแรกคือผลิตภัณฑ์ Samba ซึ่งพิสูจน์ตัวเองได้ดีบนเครือข่าย UNIX/Windows

เวอร์ชัน NFS

การใช้งานระบบไฟล์เครือข่าย NFS ครั้งแรกได้รับการพัฒนาโดย Sun Microsystems ย้อนกลับไปในปี 1985 ตั้งแต่นั้นมา NFS ก็แพร่หลายในโลกของ UNIX โดยมีการติดตั้งหลายสิบล้านครั้ง นอกจาก UNIX แล้ว ระบบ NFS ซึ่งเป็นแพลตฟอร์มเซิร์ฟเวอร์ยังพบแอปพลิเคชันอีกด้วย ระบบปฏิบัติการ VMS, MVS และแม้แต่ Windows

NFS คือระบบไฟล์ดั้งเดิมสำหรับ UNIX และเป็นไปตามตรรกะของการทำงานของไฟล์ UNIX ที่ไม่เหมือนใคร สิ่งนี้ใช้กับเนมสเปซไฟล์และการอนุญาต นอกจากนี้ การสนับสนุน NFS ยังถูกสร้างขึ้นในเคอร์เนลของระบบปฏิบัติการที่คล้ายกับ UNIX เวอร์ชันยอดนิยมทั้งหมด

ปัจจุบัน NFS นำเสนอในเวอร์ชันที่สองและสาม (เวอร์ชันแรกของ NFS ไม่เคยปรากฏในตลาด) แม้จะมีข้อจำกัดหลายประการ NFS v2 ก็ได้รับความนิยมอย่างมาก มันเป็นส่วนหนึ่งของ UNIX ที่เผยแพร่อย่างเสรี (โดยเฉพาะ Linux) รวมถึง UNIX เชิงพาณิชย์บางตัว

NFS เวอร์ชันที่สามได้รับการพัฒนาในช่วงกลางทศวรรษที่ 90 โดยความพยายามร่วมกันของ Sun, IBM, Digital และบริษัทอื่นๆ เพื่อปรับปรุงประสิทธิภาพ ความปลอดภัย และความสะดวกในการบริหารจัดการระบบไฟล์เครือข่าย NFS v3 เข้ากันได้กับข้อกำหนด NFS ก่อนหน้า เช่น เซิร์ฟเวอร์ NFS v3 สามารถให้บริการได้ไม่เพียงแต่ไคลเอนต์ NFS v3 เท่านั้น แต่ยังรวมถึงไคลเอนต์ NFS v2 อีกด้วย

แม้ว่าจะมีการแสดงตนในตลาดมายาวนาน แต่ NFS v3 ก็ยังด้อยกว่า NFS v2 ในแง่ของจำนวนการติดตั้ง จากการพิจารณาเหล่านี้ อันดับแรกเราจะเน้นไปที่คุณลักษณะหลักของ NFS v2 จากนั้นจึงทำความคุ้นเคยกับนวัตกรรมใน NFS เวอร์ชันที่สาม

โปรดทราบว่าการใช้งานเฉพาะของ NFS เวอร์ชันเดียวกันอาจแตกต่างกันเล็กน้อย ความแตกต่างส่วนใหญ่เกี่ยวข้องกับองค์ประกอบของปีศาจ ชื่อ สถานที่ และตำแหน่ง ไฟล์การกำหนดค่าอฟส. นอกจากนี้ การใช้งาน NFS ยังขึ้นอยู่กับความสามารถและคุณลักษณะของ UNIX เอง ตัวอย่างเช่น NFS v2 รองรับ ACL แต่เฉพาะในรสชาติของ UNIX ที่มีการรองรับดังกล่าวในเคอร์เนลเท่านั้น ดังนั้นเมื่อ คำอธิบาย NFSเราจะพิจารณาเป็นกรณีทั่วไปที่สุด

โปรโตคอล NFS V2

รูปที่ 1 แสดงโมเดลเครือข่าย NFS v2 ตามข้อมูลอ้างอิง แบบจำลองโอเอสไอ- ไม่เหมือนกับบริการเครือข่าย TCP/IP ส่วนใหญ่ NFS ใช้โปรโตคอลการนำเสนอและเซสชันอย่างชัดเจน NFS ทำงานตามแนวคิดของการเรียกขั้นตอนระยะไกล (RPC) ตามแนวคิดนี้เมื่อเข้าถึง ทรัพยากรระยะไกล(เช่นไปยังไฟล์) โปรแกรมบนคอมพิวเตอร์ในระบบทำการเรียกระบบตามปกติ (สมมติว่าเป็นการเรียกฟังก์ชันเปิดไฟล์) แต่ในความเป็นจริงแล้วขั้นตอนจะดำเนินการจากระยะไกล - บนเซิร์ฟเวอร์ทรัพยากร ในกรณีนี้ กระบวนการผู้ใช้ไม่สามารถระบุได้ว่าการโทรนั้นเกิดขึ้นภายในเครื่องหรือจากระยะไกล หลังจากกำหนดว่ากระบวนการกำลังเข้าถึงทรัพยากรบนคอมพิวเตอร์ระยะไกลที่ทำหน้าที่เป็นเซิร์ฟเวอร์ เคอร์เนลหรือดีมอนพิเศษของระบบจะแพ็คอาร์กิวเมนต์ของขั้นตอนพร้อมกับตัวระบุลงในแพ็กเก็ตเครือข่าย เปิดเซสชันการสื่อสารกับเซิร์ฟเวอร์และ ส่งต่อไปยังมัน แพ็คเกจนี้- เซิร์ฟเวอร์จะคลายแพ็กเก็ตที่ได้รับ กำหนดขั้นตอนและอาร์กิวเมนต์ที่ร้องขอ จากนั้นจึงดำเนินการตามขั้นตอน ถัดไป เซิร์ฟเวอร์จะส่งโค้ดส่งคืนโพรซีเดอร์ไปยังไคลเอ็นต์ ซึ่งส่งต่อไปยังกระบวนการของผู้ใช้ ดังนั้น RPC จึงสอดคล้องกับเลเยอร์เซสชันของโมเดล OSI อย่างสมบูรณ์

คำถามที่ยุติธรรมเกิดขึ้น: ทำไม โมเดลเครือข่าย NFS จำเป็นต้องมีโปรโตคอลชั้นการนำเสนอพิเศษหรือไม่ ประเด็นก็คือ Sun อาศัยการใช้ NFS อย่างชาญฉลาดในเครือข่ายที่แตกต่างกัน โดยที่คอมพิวเตอร์มีสถาปัตยกรรมระบบที่แตกต่างกัน รวมถึงการเรียงลำดับไบต์ที่แตกต่างกันในคำของเครื่อง การแสดงจุดลอยตัวที่แตกต่างกัน ขอบเขตการจัดตำแหน่งโครงสร้างที่เข้ากันไม่ได้ เป็นต้น เนื่องจากเนื่องจากโปรโตคอล RPC เกี่ยวข้องกับการส่ง ข้อโต้แย้งของขั้นตอน เช่น ข้อมูลที่มีโครงสร้าง การมีอยู่ของโปรโตคอลระดับการนำเสนอถือเป็นความจำเป็นเร่งด่วนในสภาพแวดล้อมที่ต่างกัน นี่คือโปรโตคอลการแสดงข้อมูลภายนอก (eXternal Data Representation, XDR) โดยอธิบายสิ่งที่เรียกว่าการแสดงข้อมูลในรูปแบบมาตรฐาน ซึ่งไม่ขึ้นอยู่กับสถาปัตยกรรมระบบโปรเซสเซอร์ เมื่อส่งแพ็กเก็ต RPC ไคลเอนต์จะแปลข้อมูลในเครื่องเป็นรูปแบบมาตรฐาน และเซิร์ฟเวอร์จะดำเนินการตรงกันข้าม ก็ควรจะจำไว้ว่า รูปแบบบัญญัติ XDR สอดคล้องกับการแสดงข้อมูลที่นำมาใช้สำหรับตระกูลโปรเซสเซอร์ SPARC และ Motorola ในเซิร์ฟเวอร์ที่ใช้รูปแบบการนำเสนอข้อมูลที่คล้ายกัน สิ่งนี้จะช่วยให้ได้รับความได้เปรียบด้านประสิทธิภาพบางอย่าง (แม้ว่าจะมีแนวโน้มว่าจะเป็นระดับจุลภาค) เหนือคู่แข่งในกรณีที่มีการเข้าถึงไฟล์เซิร์ฟเวอร์อย่างเข้มข้น

ใน NFS v2 เป็น โปรโตคอลการขนส่งเลือก UDP แล้ว นักพัฒนาอธิบายสิ่งนี้โดยข้อเท็จจริงที่ว่าเซสชัน RPC กินเวลาในช่วงเวลาสั้น ๆ นอกจากนี้ จากมุมมองของการดำเนินการขั้นตอนระยะไกล แต่ละแพ็กเก็ต RPC นั้นมีอยู่ในตัวเอง นั่นคือ แต่ละแพ็กเก็ตมีข้อมูลที่ครบถ้วนเกี่ยวกับสิ่งที่ต้องทำบนเซิร์ฟเวอร์ หรือเกี่ยวกับผลลัพธ์ของขั้นตอน โดยทั่วไปบริการ RPC จะไม่มีการเชื่อมต่อ ซึ่งหมายความว่าเซิร์ฟเวอร์จะไม่จัดเก็บข้อมูลเกี่ยวกับคำขอของไคลเอ็นต์ที่ได้รับการประมวลผลในอดีต เช่น ตำแหน่งในไฟล์ที่ไคลเอ็นต์อ่านข้อมูลครั้งล่าสุด สำหรับระบบไฟล์เครือข่าย นี่เป็นข้อได้เปรียบที่ชัดเจนในแง่ของความน่าเชื่อถือ เนื่องจากไคลเอ็นต์สามารถดำเนินการกับไฟล์ต่อไปได้ทันทีหลังจากรีบูตเซิร์ฟเวอร์ แต่รูปแบบนี้เต็มไปด้วยปัญหาเมื่อเขียนและล็อคไฟล์และเพื่อที่จะหลีกเลี่ยงปัญหาเหล่านี้ นักพัฒนา NFS จึงถูกบังคับให้ใช้วิธีการแก้ไขปัญหาต่างๆ (การใช้ UDP ก่อให้เกิดปัญหาเฉพาะชุดอื่น แต่เราจะพูดถึงในภายหลัง)

ข้อแตกต่างที่สำคัญระหว่างบริการ RPC ที่รวมอยู่ใน NFS และบริการเซิร์ฟเวอร์เครือข่ายอื่นๆ ก็คือ บริการเหล่านี้ไม่ได้ใช้ inetd super daemon บริการเครือข่ายทั่วไป เช่น telnet หรือ rlogin มักจะไม่เปิดใช้งานเป็น daemons เมื่อเริ่มต้นระบบ แม้ว่าจะไม่ได้เป็นสิ่งต้องห้ามก็ตาม ส่วนใหญ่มักจะใช้สิ่งที่เรียกว่า super daemon inetd ซึ่ง "ฟัง" บนพอร์ตซอฟต์แวร์ โปรโตคอล TCPและยูดีพี บริการต่างๆ ระบุไว้ในไฟล์กำหนดค่าของ superdaemon (โดยปกติคือ /etc/inetd.conf) เมื่อได้รับคำขอบนพอร์ตซอฟต์แวร์จากไคลเอนต์ inetd จะเปิดตัวบริการเครือข่ายที่เกี่ยวข้อง (เช่น in.rlogind) เป็นกระบวนการลูกซึ่งประมวลผลคำขอ

บริการ RPC ไม่ได้ใช้ inetd super daemon เนื่องจากตามที่ระบุไว้ เซสชัน RPC จะคงอยู่เพียงระยะเวลาสั้นมากเท่านั้น จริงๆ แล้วเป็นเพียงช่วงระยะเวลาของคำขอเดียวเท่านั้น นั่นคือ สำหรับแต่ละคำขอ inetd จะถูกบังคับให้เรียกใช้กระบวนการลูกใหม่ของบริการ RPC ซึ่งมีราคาแพงมากสำหรับ UNIX ด้วยเหตุผลที่คล้ายกัน กระบวนการ RPC ไม่สามารถสร้างกระบวนการใหม่ได้ และไม่สามารถให้บริการหลายคำขอพร้อมกันได้ ดังนั้น เพื่อปรับปรุงประสิทธิภาพ บริการ RPC จึงทำงานเป็นอินสแตนซ์ daemon หลายรายการที่ทำงานพร้อมกัน อย่างไรก็ตาม จำนวนอินสแตนซ์ของ daemon เฉพาะไม่เกี่ยวข้องโดยตรงกับจำนวนไคลเอ็นต์ แม้แต่ daemon ตัวเดียวก็สามารถให้บริการไคลเอ็นต์ได้จำนวนมาก แต่ในแต่ละครั้งสามารถประมวลผลคำขอเดียวได้ ส่วนที่เหลือจะถูกวางไว้ในคิว

อีกสิ่งหนึ่ง ความแตกต่างที่สำคัญความแตกต่างระหว่างบริการ RPC และบริการเครือข่ายทั่วไปคือ ไม่ได้ใช้พอร์ต UDP ของซอฟต์แวร์ที่กำหนดไว้ล่วงหน้า จะใช้สิ่งที่เรียกว่าระบบการแมปพอร์ตแทน เพื่อสนับสนุน portmap daemon พิเศษจะถูกเตรียมใช้งานเมื่อระบบบู๊ต ในฐานะที่เป็นส่วนหนึ่งของระบบการแปลพอร์ต บริการ RPC แต่ละรายการจะได้รับการกำหนดหมายเลขโปรแกรม หมายเลขเวอร์ชัน หมายเลขขั้นตอน และโปรโตคอล (UDP หรือ TCP) หมายเลขโปรแกรมระบุบริการ RPC ที่เฉพาะเจาะจงโดยไม่ซ้ำกัน ความสัมพันธ์ระหว่างชื่อเซอร์วิส RPC และหมายเลขโปรแกรมสามารถตรวจสอบได้จากเนื้อหาของไฟล์ /etc/rpc โปรแกรม RPC แต่ละโปรแกรมรองรับขั้นตอนต่างๆ มากมาย ซึ่งระบุด้วยหมายเลขขั้นตอน หมายเลขขั้นตอนสามารถพบได้ในไฟล์ส่วนหัวที่เกี่ยวข้อง: ตัวอย่างเช่น สำหรับเซอร์วิส NFS หมายเลขขั้นตอนจะระบุไว้ในไฟล์ /usr/include/nfs/nfs.h

โดยเฉพาะอย่างยิ่ง บริการ NFS มีหมายเลขโปรแกรม 100003 และมีขั้นตอนต่างๆ เช่น “เปิดไฟล์” “บล็อกการอ่าน” “สร้างไฟล์” ฯลฯ เมื่อเรียกขั้นตอนระยะไกล หมายเลขโปรแกรมบริการจะถูกส่งไปพร้อมกับอาร์กิวเมนต์ของขั้นตอนใน แพ็กเก็ต RPC หมายเลขขั้นตอน และหมายเลขเวอร์ชัน หมายเลขเวอร์ชันใช้เพื่อระบุความสามารถของบริการ ความจริงก็คือนักพัฒนาปรับปรุงบริการ NFS อย่างต่อเนื่องและแต่ละเวอร์ชันใหม่สามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้อย่างสมบูรณ์

หลักการทำงานของตัวแปล portmap นั้นค่อนข้างง่าย เมื่อมีการเตรียมใช้งานบริการ RPC ใดๆ (โดยเฉพาะอย่างยิ่ง ณ เวลาที่ระบบปฏิบัติการบูท) บริการดังกล่าวจะถูกลงทะเบียนโดยใช้ portmap daemon เมื่อเปิดใช้งานบนเซิร์ฟเวอร์ บริการ RPC จะค้นหาพอร์ตซอฟต์แวร์ที่ว่าง สงวนไว้สำหรับตัวมันเอง และรายงานหมายเลขพอร์ตไปยัง portmap daemon ในการสื่อสารกับเซิร์ฟเวอร์ ไคลเอ็นต์ RPC จะต้องติดต่อพอร์ตแมปของเซิร์ฟเวอร์ก่อน และสอบถามว่าพอร์ตซอฟต์แวร์ใดถูกครอบครองโดยบริการ RPC เฉพาะบนเซิร์ฟเวอร์ จากนั้นลูกค้าจึงจะสามารถติดต่อบริการได้โดยตรง ในบางกรณี ไคลเอนต์สื่อสารกับบริการที่ต้องการโดยอ้อม นั่นคือ ขั้นแรกจะติดต่อกับ portmap daemon ซึ่งร้องขอบริการ RPC ในนามของไคลเอนต์ ต่างจากบริการ RPC ตัวแปลพอร์ต portmap จะถูกผูกไว้กับพอร์ต 111 ที่กำหนดไว้ล่วงหน้าเสมอ เพื่อให้ไคลเอ็นต์สื่อสารกับ portmap ด้วยวิธีมาตรฐาน

องค์ประกอบของ NFS V2

โดยทั่วไป นอกเหนือจาก portmap แล้ว เซิร์ฟเวอร์ NFS ยังมี rpc.mountd, nfsd, rpc.lockd, rpc.statd daemons เครื่องไคลเอ็นต์ NFS ที่รันบนแพลตฟอร์ม UNIX ต้องมี biod (ทางเลือก), rpc.lockd และ rpc.statd daemons ทำงานอยู่

ดังที่ได้กล่าวไว้ก่อนหน้านี้ การสนับสนุน NFS ถูกนำไปใช้ที่ระดับเคอร์เนลใน UNIX ดังนั้นจึงไม่จำเป็นต้องใช้ daemons ทั้งหมด แต่สามารถปรับปรุงประสิทธิภาพการทำงานของไฟล์ได้อย่างมาก และอนุญาตให้มีการล็อคการเขียนไฟล์

rpc.mountd daemon จัดการคำร้องขอของไคลเอ็นต์เพื่อเมานต์ระบบไฟล์ บริการเมานต์ถูกนำมาใช้เป็น daemon ที่แยกต่างหาก เนื่องจากไม่มีโปรโตคอลเมานต์ ส่วนหนึ่งของ NFS- เนื่องจากการดำเนินการเมานต์นั้นเชื่อมโยงกับไวยากรณ์การตั้งชื่อไฟล์อย่างแน่นหนา และหลักการตั้งชื่อไฟล์ระหว่าง UNIX และ VMS ก็แตกต่างกัน

nfsd daemon ยอมรับและให้บริการคำร้องขอ NFS RPC โดยทั่วไป เพื่อปรับปรุงประสิทธิภาพ จะมีการเรียกใช้ nfsd หลายอินสแตนซ์บนเซิร์ฟเวอร์

rpc.lockd daemon ทำงานบนทั้งไคลเอนต์และเซิร์ฟเวอร์ ได้รับการออกแบบมาเพื่อล็อคไฟล์ ในขณะที่ rpc.statd daemon (ยังทำงานบนเซิร์ฟเวอร์และไคลเอนต์ด้วย) จะเก็บสถิติการล็อคไว้ในกรณีที่จำเป็นต้องกู้คืนโดยอัตโนมัติหาก บริการ NFS ล้มเหลว

biod daemon ที่รันบนไคลเอ็นต์มีความสามารถในการดำเนินการอ่านล่วงหน้าและการเขียนแบบ Lazy-write ซึ่งปรับปรุงประสิทธิภาพอย่างมาก อย่างไรก็ตาม ลูกค้าสามารถทำงานได้ไม่จำเป็นต้องมี biod เพื่อปรับปรุงประสิทธิภาพให้ดียิ่งขึ้น สามารถโหลด biod daemons หลายตัวบนเครื่องไคลเอ็นต์ได้

daemon อื่นที่ทำงานบนเซิร์ฟเวอร์มีหน้าที่รับผิดชอบในการรับรองความถูกต้องและบริการการพิมพ์สำหรับไคลเอนต์ DOS/Windows ในบางระบบจะมีชื่อว่า pcnfsd ส่วนระบบอื่นๆ เป็น in.pcnfsd

นอกจากนี้ แพ็คเกจ NFS ยังรวมถึงยูทิลิตี้ระบบและโปรแกรมวินิจฉัยต่างๆ (showmount, rpcinfo, Exportfs, nfsstat)

กฎการส่งออก

ระบบไฟล์และไดเร็กทอรีที่ไคลเอ็นต์สามารถติดตั้งแบบรีโมตบนเซิร์ฟเวอร์ NFS จะต้องได้รับการระบุอย่างชัดเจน ขั้นตอนนี้เรียกว่า "การส่งออก" ทรัพยากรใน NFS ในเวลาเดียวกัน เซิร์ฟเวอร์ NFS ต่างจากเซิร์ฟเวอร์ SMB ตรงที่ไม่ออกอากาศรายการทรัพยากรที่ส่งออก อย่างไรก็ตาม ไคลเอ็นต์สามารถร้องขอรายการดังกล่าวจากเซิร์ฟเวอร์ได้ บนฝั่งเซิร์ฟเวอร์ rpc.mountd daemon มีหน้าที่รับผิดชอบในการให้บริการคำร้องขอเมาต์

การส่งออกทรัพยากรไฟล์ NFS เป็นไปตามกฎพื้นฐานสี่ข้อ

  1. ระบบไฟล์สามารถส่งออกทั้งหมดหรือบางส่วนได้ เช่น ไดเร็กทอรีและไฟล์ ควรจำไว้ว่าหน่วยที่ส่งออกที่ใหญ่ที่สุดคือระบบไฟล์ หากบนเซิร์ฟเวอร์ ระบบไฟล์บางระบบ (/usr/bin) ถูกเมาท์ในลำดับชั้นด้านล่างระบบไฟล์อื่น (/usr) ดังนั้นการเอ็กซ์พอร์ตระบบ /usr จะไม่ส่งผลกระทบต่อระบบ /usr/bin
  2. คุณสามารถส่งออกเฉพาะท้องถิ่นเท่านั้น ทรัพยากรไฟล์กล่าวอีกนัยหนึ่ง หากระบบไฟล์ของบุคคลอื่นติดตั้งอยู่บนเซิร์ฟเวอร์ ซึ่งก็คือ อยู่บนเซิร์ฟเวอร์อื่น ระบบนั้นจะไม่สามารถส่งออกซ้ำได้
  3. คุณไม่สามารถส่งออกไดเรกทอรีย่อยของระบบไฟล์ที่ส่งออกแล้วได้ เว้นแต่เป็นระบบไฟล์ที่แยกจากกัน
  4. คุณไม่สามารถส่งออกไดเร็กทอรีหลักของไดเร็กทอรีที่ถูกส่งออกแล้ว เว้นแต่ว่าไดเร็กทอรีหลักจะเป็นระบบไฟล์อิสระ

การละเมิดกฎเหล่านี้จะส่งผลให้เกิดข้อผิดพลาดในการดำเนินการ NFS

ตารางทรัพยากรที่ส่งออกจะอยู่ในไฟล์ /etc/exports ขออภัย ไวยากรณ์ของไฟล์นี้เป็นแบบเฉพาะของ UNIX ดังนั้นเราจะใช้ Solaris เป็นตัวอย่าง ไฟล์ /etc/exports ประกอบด้วย สตริงข้อความโดยมีรูปแบบ:

-

ตัวเลือกยอดนิยมบางส่วนแสดงอยู่ในตารางที่ 1 จริงๆ แล้ว ตัวเลือกต่างๆ อธิบายสิทธิ์การเข้าถึงของไคลเอ็นต์ในทรัพยากรที่ส่งออก สิ่งสำคัญคือต้องจำไว้ว่าการอนุญาตที่แสดงระหว่างการส่งออกจะไม่แทนที่การอนุญาตที่ใช้กับระบบไฟล์โดยตรง ตัวอย่างเช่น หากระบบไฟล์ถูกส่งออกแบบเขียนได้และไฟล์ใดไฟล์หนึ่งมีแอตทริบิวต์แบบอ่านอย่างเดียว ก็จะไม่สามารถเปลี่ยนแปลงได้ ดังนั้นเมื่อส่งออก สิทธิ์การเข้าถึงจะทำหน้าที่เป็นตัวกรองเพิ่มเติม ยิ่งไปกว่านั้น หากระบบไฟล์ถูกเอ็กซ์พอร์ตด้วยตัวเลือก ro (อ่านอย่างเดียว) ไคลเอ็นต์ก็มีสิทธิ์เมานต์ด้วยตัวเลือก rw (อ่าน/เขียน) แต่การพยายามเขียนจะส่งผลให้เกิดข้อความแสดงข้อผิดพลาด

ตัวเลือกการเข้าถึงช่วยให้คุณสามารถระบุโฮสต์ที่มีสิทธิ์ในการติดตั้งทรัพยากร ดังนั้น ไม่มีโฮสต์อื่นใด ยกเว้นที่กล่าวถึงในนั้น มีความสามารถในการเมานต์ และดังนั้นจึงดำเนินการกับทรัพยากรได้

รายชื่อโฮสต์ที่สามารถเขียนข้อมูลจะถูกระบุโดยใช้ตัวเลือก rw หากตัวเลือก rw ไม่ได้ระบุรายชื่อโฮสต์ แสดงว่าโฮสต์ใด ๆ ก็มีสิทธิ์เขียน

ตัวเลือกรูทช่วยให้คุณระบุโฮสต์ที่ผู้ใช้ระดับสูงรูทโลคัลได้รับ สิทธิ์รูตเซิร์ฟเวอร์ไปยังทรัพยากรที่ส่งออก มิฉะนั้น แม้ว่าโฮสต์จะได้รับสิทธิ์ rw ผู้ใช้รูทจะเทียบเท่ากับผู้ใช้ none (uid=-2) กล่าวคือ ผู้ใช้ที่มีสิทธิ์การเข้าถึงขั้นต่ำ ข้อมูลข้างต้นใช้เฉพาะกับสิทธิ์การเข้าถึงทรัพยากรระยะไกล และไม่ส่งผลกระทบต่อสิทธิ์การเข้าถึงทรัพยากรไคลเอนต์ในเครื่อง

ตัวเลือกอานนท์และความปลอดภัยจะถูกกล่าวถึงเมื่ออธิบายรูปแบบการตรวจสอบสิทธิ์ NFS

กฎการติดตั้ง

หากสำหรับเซิร์ฟเวอร์ ทรัพยากรที่ส่งออกสามารถทำหน้าที่เป็นระบบไฟล์หรือไดเร็กทอรีแยกต่างหาก สำหรับไคลเอนต์ ทรัพยากรเหล่านั้นจะดูเหมือนระบบไฟล์เสมอ เนื่องจากการรองรับ NFS ถูกสร้างขึ้นในเคอร์เนล UNIX การดำเนินการของการเมาท์ระบบไฟล์ NFS จึงดำเนินการโดยยูทิลิตีการเมานท์มาตรฐาน (ไม่จำเป็นต้องมี daemon แยกต่างหากในการเมานต์ NFS) และคุณเพียงแค่ต้องระบุว่าระบบไฟล์ที่เมานท์คือ NFS อีกวิธีหนึ่งในการติดตั้งคือการใช้ไฟล์ /etc/fstab (/etc/filesystems บน UNIX บางเวอร์ชัน) ใน ในกรณีนี้ ระบบระยะไกล NFS (เช่นเดียวกับโลคัล) จะถูกเมาท์ที่ขั้นตอนการบูตระบบปฏิบัติการ จุดเมานท์อาจเป็นจุดใดก็ได้ รวมถึงการเป็นส่วนหนึ่งของระบบไฟล์ NFS อื่นๆ เช่น ระบบ NFS สามารถ "ร้อยสาย" ทับกันได้

ตัวเลือกการเมาท์ NFS พื้นฐานแสดงอยู่ในตารางที่ 2

ตัวเลือก bg ช่วยให้คุณสามารถเมานต์ได้ พื้นหลังในกรณีนี้ คุณสามารถรันคำสั่งเมานต์อื่นๆ ได้

ตัวเลือกแบบแข็ง/อ่อนดูน่าสนใจมาก ด้วยการเมานต์แบบ "ฮาร์ด" ไคลเอนต์จะพยายามเมานต์ระบบไฟล์โดยเสียค่าใช้จ่ายทั้งหมด หากเซิร์ฟเวอร์ล่ม จะทำให้บริการ NFS ทั้งหมดค้าง: กระบวนการที่เข้าถึงระบบไฟล์จะเข้าสู่สถานะรอให้คำขอ RPC ดำเนินการให้เสร็จสิ้น จากมุมมองของกระบวนการผู้ใช้ ระบบไฟล์จะดูเหมือนดิสก์ในเครื่องที่ช้ามาก เมื่อเซิร์ฟเวอร์กลับมา สภาพการทำงานบริการ NFS จะยังคงทำงานต่อไปราวกับว่าไม่มีอะไรเกิดขึ้น การใช้ตัวเลือก intr ช่วยให้คุณสามารถขัดจังหวะกระบวนการฮาร์ดเมาท์โดยใช้สัญญาณระบบ INTERRUPT

ในระหว่างการติดตั้งแบบซอฟต์ ไคลเอ็นต์ NFS จะพยายามเชื่อมต่อกับเซิร์ฟเวอร์หลายครั้ง ตามที่ระบุไว้โดยอ็อพชัน retans และ timeo (บางระบบยังสนับสนุนอ็อพชันการลองใหม่แบบพิเศษ) หากเซิร์ฟเวอร์ไม่ตอบสนอง ระบบจะแสดงข้อความแสดงข้อผิดพลาดและหยุดการพยายามเมาต์ จากมุมมองของตรรกะของการดำเนินการไฟล์เมื่อเซิร์ฟเวอร์ล้มเหลว การเมาท์แบบ "soft" จะจำลองความล้มเหลวของดิสก์ในเครื่อง หากไม่ได้ระบุตัวเลือก retrans (ลองใหม่) จำนวนครั้งของการลองใหม่จะถูกจำกัดไว้ที่ค่าเริ่มต้นสำหรับระบบ UNIX ที่กำหนด ตัวเลือก retrans และ timeo ไม่เพียงแต่ใช้กับการเมาท์เท่านั้น แต่ยังรวมถึงการดำเนินการ RPC ใดๆ ที่ทำบนระบบไฟล์ NFS ด้วย นั่นคือหากไคลเอนต์ดำเนินการเขียนและขณะนี้มีความล้มเหลวบนเครือข่ายหรือบนเซิร์ฟเวอร์ไคลเอนต์จะพยายามทำซ้ำคำขอ

คำถามที่ว่าโหมดใด "เบา" หรือ "แข็ง" ดีกว่านั้นไม่สามารถตอบได้อย่างชัดเจน หากข้อมูลบนเซิร์ฟเวอร์ต้องสอดคล้องกันเมื่อเกิดความล้มเหลวชั่วคราว ควรติดตั้งแบบ "ฮาร์ด" โหมดนี้ยังขาดไม่ได้ในกรณีที่ระบบไฟล์ที่เมาท์ประกอบด้วยโปรแกรมและไฟล์ที่มีความสำคัญต่อการทำงานของไคลเอ็นต์ โดยเฉพาะสำหรับเครื่องที่ไม่มีดิสก์ ในกรณีอื่นๆ โดยเฉพาะเมื่อ เรากำลังพูดถึงบนระบบแบบอ่านอย่างเดียว ดูเหมือนว่าโหมดซอฟต์เมาท์จะเหมาะกว่า

การรับรองความถูกต้องและความปลอดภัย

ตามที่ระบุไว้ แต่ละแพ็คเกจ RPC มีอยู่ในตัวเอง นอกจากนี้ โดยทั่วไปแล้ว NFS ไม่ได้จัดให้มีสถานะ กล่าวคือ ไม่ได้ติดตามคำขอที่ลูกค้าเคยทำไว้ก่อนหน้านี้ และไม่ได้ติดตามประสิทธิภาพของไคลเอ็นต์ ดังนั้น ในระบบที่ใช้การเรียกขั้นตอนระยะไกล ปัญหาด้านความปลอดภัยจึงมีความเกี่ยวข้องอย่างมาก

ใน NFS การรับรองความถูกต้องจะดำเนินการเฉพาะในขั้นตอนการติดตั้งระบบไฟล์และขึ้นอยู่กับชื่อโดเมน (หรือที่อยู่ IP) ของเครื่องไคลเอนต์เท่านั้น นั่นคือ หากไคลเอนต์ NFS (ในที่นี้เราหมายถึงคอมพิวเตอร์ ไม่ใช่ผู้ใช้คอมพิวเตอร์) ติดต่อเซิร์ฟเวอร์ด้วยคำขอเมานท์ เซิร์ฟเวอร์จะกำหนดสิทธิ์การเข้าถึงโดยใช้ตาราง /etc/exports และไคลเอนต์จะถูกระบุด้วยชื่อ (IP ที่อยู่) ของคอมพิวเตอร์ หากไคลเอนต์ได้รับอนุญาตให้ดำเนินการบางอย่างกับทรัพยากรที่ส่งออก ระบบจะแจ้ง "หมายเลขวิเศษ" (คุกกี้เวทย์มนตร์) ลูกค้าจะต้องรวมหมายเลขนี้ในทุกคำขอ RPC เพื่อพิสูจน์ข้อมูลประจำตัว

อันที่จริงนี่คือชุดเครื่องมือตรวจสอบสิทธิ์ไคลเอนต์แบบง่ายทั้งหมด ซึ่งผู้ใช้จะไม่ได้รับการตรวจสอบสิทธิ์แต่อย่างใด อย่างไรก็ตาม คำขอ RPC แต่ละรายการประกอบด้วย uid ของผู้ใช้ที่เริ่มต้นคำขอและรายการรหัสกลุ่ม gid ที่ผู้ใช้นั้นอยู่ แต่ตัวระบุเหล่านี้ไม่ได้ใช้สำหรับการตรวจสอบสิทธิ์ แต่เพื่อกำหนดสิทธิ์การเข้าถึงไฟล์และไดเร็กทอรีของผู้ใช้เฉพาะ

โปรดทราบว่า uid และ gid ถูกกำหนดบนฝั่งไคลเอ็นต์ ไม่ใช่ฝั่งเซิร์ฟเวอร์ ดังนั้นผู้ดูแลระบบจึงประสบปัญหาในการประสานงานเนื้อหาของ /etc/passwd (และ /etc/group) ระหว่างไคลเอนต์และเซิร์ฟเวอร์ NFS เพื่อให้ผู้ใช้ Vasya บนเซิร์ฟเวอร์ไม่ได้รับการกำหนดสิทธิ์ของผู้ใช้ Petya สำหรับ เครือข่ายขนาดใหญ่สิ่งนี้ทำให้เกิดปัญหาร้ายแรง เพื่อให้มั่นใจถึงความสอดคล้องของฐานข้อมูลผู้ใช้ เช่นเดียวกับไฟล์ระบบ เช่น /etc/hosts, /etc/rpc, /etc/services, /etc/protocols, /etc/aliases ฯลฯ คุณสามารถใช้บริการ Network Information System, NIS) พัฒนาโดย Sun ในปี 1985 และรวมอยู่ใน UNIX เวอร์ชันส่วนใหญ่ (NIS+ เวอร์ชันขั้นสูงกว่านั้นไม่ได้ใช้กันอย่างแพร่หลาย) NIS เป็นบริการข้อมูลที่ชวนให้นึกถึงบริการไดเร็กทอรี Windows NT อย่างหลวม ๆ ซึ่งช่วยให้สามารถจัดเก็บและประมวลผลไฟล์ระบบจากส่วนกลางได้ อย่างไรก็ตาม NIS ถูกสร้างขึ้นบนหลักการเดียวกันกับ NFS โดยเฉพาะการใช้โปรโตคอล RPC และ XDR

คุณลักษณะที่สำคัญอีกประการหนึ่งของ NFS คือคำขอ RPC แต่ละรายการจะมีรายการกลุ่ม Gid ของผู้ใช้ หากต้องการจำกัดขนาดของแพ็กเก็ต RFC การใช้งาน NFS ส่วนใหญ่จะจำกัดจำนวนกลุ่มไว้ที่ 8 หรือ 16 กลุ่ม หากผู้ใช้เป็นสมาชิกของกลุ่มมากกว่านี้ อาจนำไปสู่ข้อผิดพลาดในการพิจารณาสิทธิ์บนเซิร์ฟเวอร์ ปัญหานี้มีความเกี่ยวข้องอย่างมากกับเซิร์ฟเวอร์ไฟล์ขององค์กร วิธีแก้ปัญหาที่รุนแรงคือการใช้ ACL แต่น่าเสียดายที่ UNIX บางรุ่นไม่รองรับ ACL

ระบบการตรวจสอบความถูกต้องที่ NFS นำมาใช้นั้นแย่มากและไม่มีให้ การป้องกันที่เชื่อถือได้- ใครก็ตามที่เคยจัดการกับ NFS จะรู้ดีว่าการเลี่ยงการรักษาความปลอดภัยนั้นง่ายเพียงใด ในการทำเช่นนี้ ไม่จำเป็นต้องใช้วิธีการปลอมแปลงที่อยู่ IP (การปลอมแปลง IP) หรือชื่อ (การปลอมแปลง DNS) ผู้โจมตีเพียงแค่ต้องสกัดกั้น "หมายเลขวิเศษ" และในอนาคตเขาสามารถดำเนินการในนามของลูกค้าได้ นอกจากนี้ "หมายเลขวิเศษ" จะไม่เปลี่ยนแปลงจนกว่าเซิร์ฟเวอร์จะรีบูตครั้งถัดไป

มากมาย เซิร์ฟเวอร์อินเทอร์เน็ตคุณสามารถค้นหาวิธีการแฮ็ก NFS อื่น ๆ รวมถึงวิธีแปลกใหม่ได้ จำนวน “หลุม” ที่ค้นพบมีเป็นพัน ดังนั้น แนะนำให้ใช้ NFS v.2 ภายในเครือข่ายที่ปลอดภัยเท่านั้น

จากการพิจารณาเหล่านี้ Sun ได้พัฒนาโปรโตคอล SecureRPC โดยใช้คีย์การเข้ารหัสทั้งแบบอสมมาตรและแบบสมมาตร ในเวลาเดียวกัน วิธีการเข้ารหัสใช้เพื่อตรวจสอบสิทธิ์ไม่เพียงแต่โฮสต์เท่านั้น แต่ยังรวมถึงผู้ใช้ด้วย อย่างไรก็ตาม ข้อมูลนั้นไม่ได้ถูกเข้ารหัส น่าเสียดาย เนื่องจากข้อจำกัดในการส่งออกของรัฐบาลสหรัฐฯ ทำให้ UNIX บางรุ่นไม่ได้มาพร้อมกับการสนับสนุน SecureRPC ดังนั้นเราจะไม่อาศัยความสามารถของโปรโตคอลนี้ อย่างไรก็ตาม หาก UNIX เวอร์ชันของคุณรองรับ SecureRPC หนังสือของ Hal Stein เรื่อง "Managing NFS and NIS" โดย O'Reilly & Associates จะให้ความช่วยเหลืออันล้ำค่าในการตั้งค่า

ปัญหาอีกประการหนึ่งคือกับไคลเอนต์ NFS บนแพลตฟอร์ม MS-DOS และ Windows 3.x/9x ระบบเหล่านี้เป็นผู้ใช้คนเดียว และไม่สามารถระบุผู้ใช้โดยใช้เครื่องมือ NFS ปกติได้ เพื่อวัตถุประสงค์ในการระบุผู้ใช้ DOS/Windows pcnfsd daemon จะถูกเรียกทำงานบนเซิร์ฟเวอร์ เมื่อเชื่อมต่อ (ติดตั้ง) ดิสก์ NFS บนเครื่องไคลเอนต์ ระบบจะแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่าน ซึ่งไม่เพียงแต่อนุญาตการระบุตัวตนเท่านั้น แต่ยังรวมถึงการตรวจสอบสิทธิ์ผู้ใช้ด้วย

แม้ว่า Windows NT จะเป็นผู้ใช้หลายราย ฐานข้อมูลผู้ใช้และโครงร่างการระบุผู้ใช้จะไม่เข้ากันกับ UNIX ดังนั้นไซต์ไคลเอ็นต์ NFS ที่ใช้ Windows NT จึงถูกบังคับให้ใช้ความสามารถของ pcnfsd ด้วย

นอกจากการตรวจสอบสิทธิ์ผู้ใช้แล้ว pcnfs ยังช่วยให้คุณสามารถพิมพ์ไปยัง UNIX ได้ สถานที่ของลูกค้าดอส/วินโดวส์ จริงอยู่ เดิมที Windows NT รวมโปรแกรม LPR.EXE ไว้ด้วย ซึ่งอนุญาตให้พิมพ์บนเซิร์ฟเวอร์ UNIX ได้ด้วย

หากต้องการเข้าถึงบริการไฟล์และบริการ NFS บนเครื่อง DOS/Windows คุณต้องติดตั้งซอฟต์แวร์ไคลเอ็นต์พิเศษ และราคาของผลิตภัณฑ์เหล่านี้ค่อนข้างสูง

อย่างไรก็ตาม กลับไปที่ตัวเลือกการส่งออกไฟล์ NFS (ดูตารางที่ 1) ตัวเลือก anon จะกำหนดตัวระบุผู้ใช้ uid ในกรณีที่ผู้ใช้ DOS/Windows ไม่สามารถตรวจสอบสิทธิ์ตัวเองได้ (ตั้งรหัสผ่านไม่ถูกต้อง) หรือเมื่อผู้ใช้โฮสต์ที่เชื่อมต่อผ่าน SecureRPC ล้มเหลวในการตรวจสอบสิทธิ์ โดยค่าเริ่มต้น อานนท์มี uid=-2

ตัวเลือกที่ปลอดภัยจะใช้เมื่อมีการใช้โปรโตคอล SecureRPC

คุณสมบัติทางสถาปัตยกรรมของ NFS V2

ระบบไฟล์ NFS ต้องเป็นไปตามเงื่อนไขสองประการ (อย่างไรก็ตาม ข้อกำหนดเดียวกันนี้ใช้ไม่เพียงกับ NFS เท่านั้น แต่ยังรวมถึงระบบไฟล์เครือข่ายอื่นด้วย)

  1. จากมุมมองของลูกค้า โปรแกรมผู้ใช้ระบบไฟล์ NFS ตั้งอยู่ราวกับว่าเปิดอยู่ ดิสก์ภายในเครื่อง- โปรแกรมไม่มีทางแยกความแตกต่างได้ ไฟล์ NFSจากไฟล์ปกติ
  2. ไคลเอนต์ NFS ไม่สามารถระบุได้ว่าแพลตฟอร์มใดที่กำลังถูกใช้เป็นเซิร์ฟเวอร์ ซึ่งอาจเป็น UNIX, MVS หรือแม้แต่ Windows NT ความแตกต่างในสถาปัตยกรรมเซิร์ฟเวอร์ส่งผลต่อการดำเนินการเฉพาะเท่านั้น ไม่ใช่ความสามารถของ NFS สำหรับลูกค้า โครงสร้างไฟล์ NFS คล้ายกับระบบโลคัล

ระดับแรกของความโปร่งใสเกิดขึ้นได้จากการใช้ Virtual File System (VFS) ของ UNIX VFS มีหน้าที่รับผิดชอบในการโต้ตอบไม่เพียงแต่กับ NFS เท่านั้น แต่ยังรวมถึงระบบภายในเครื่อง เช่น UFS, ext2, VxFS เป็นต้น

ระดับที่สองของความโปร่งใสมีให้ผ่านการใช้ที่เรียกว่าโหนดเสมือน (vnodes) โครงสร้างที่สามารถเชื่อมโยงกับ inodes ในระบบไฟล์ UNIX

การดำเนินการกับไฟล์ไฟล์ ระบบเอ็นเอฟเอสเป็นการดำเนินการ VFS ในขณะที่การโต้ตอบกับแต่ละไฟล์และไดเร็กทอรีจะถูกกำหนดโดยการดำเนินการ vnode โปรโตคอล RPC จาก NFS v2 อธิบาย 16 โพรซีเดอร์ที่เกี่ยวข้องกับการดำเนินการ ไม่เพียงแต่ในไฟล์และไดเร็กทอรีเท่านั้น แต่ยังรวมถึงแอ็ตทริบิวต์ด้วย สิ่งสำคัญคือต้องเข้าใจว่าการเรียก RPC และอินเทอร์เฟซ vnode เป็นแนวคิดที่แตกต่างกัน อินเทอร์เฟซ vnode กำหนดบริการระบบปฏิบัติการสำหรับการเข้าถึงระบบไฟล์ ไม่ว่าจะเป็นภายในเครื่องหรือระยะไกล RPC จาก NFS เป็นการใช้งานเฉพาะของหนึ่งในอินเทอร์เฟซ vnode

การดำเนินการอ่าน/เขียนจะถูกแคชไว้บนฝั่งไคลเอ็นต์ กล่าวคือ ไคลเอ็นต์จะแคชเนื้อหาของไฟล์และไดเร็กทอรี โดยทั่วไป ขนาดบัฟเฟอร์แคช NFS คือ 8 KB หาก biod daemons กำลังรันบนไคลเอ็นต์ การอ่านจะเสร็จสิ้นล่วงหน้า และการเขียนจะเสร็จสิ้นในโหมด Lazy ตัวอย่างเช่น หากกระบวนการของผู้ใช้เขียนข้อมูล ข้อมูลจะถูกสะสมในบัฟเฟอร์แคชก่อนที่จะส่งต่อ โดยปกติจะอยู่ในแพ็กเก็ต RPC เดียว เมื่อดำเนินการเขียน เคอร์เนลจะส่งคืนการควบคุมไปยังกระบวนการทันที และฟังก์ชันการส่งต่อคำขอ RPC จะถูกถ่ายโอนไปยัง biod หาก biod daemons ไม่ทำงานและเคอร์เนลไม่รองรับการประมวลผล RPC แบบมัลติเธรด เคอร์เนลจะต้องจัดการการส่งต่อแพ็กเก็ต RPC ในโหมดเธรดเดียว และกระบวนการผู้ใช้จะเข้าสู่สถานะรอให้การส่งต่อเสร็จสมบูรณ์ . แต่ในกรณีนี้ แคช NFS ยังคงใช้อยู่

นอกเหนือจากเนื้อหาของไฟล์และไดเร็กทอรี NFS แล้ว แอ็ตทริบิวต์ของไฟล์และไดเร็กทอรีจะถูกแคชไว้ที่ฝั่งไคลเอ็นต์ และแคชของแอ็ตทริบิวต์จะถูกอัพเดตเป็นระยะ (โดยปกติทุกๆ สองสามวินาที) เนื่องจากค่าของแอตทริบิวต์สามารถใช้เพื่อตัดสินสถานะของไฟล์หรือไดเร็กทอรีได้ ให้เราอธิบายแนวทางนี้พร้อมตัวอย่าง เมื่อผู้ใช้ดำเนินการอ่านจากไฟล์ เนื้อหาของไฟล์จะถูกวางไว้ในแคช NFS แต่คุณลักษณะของไฟล์ (เวลาการสร้าง/อัปเดต ขนาด ฯลฯ) จะถูกวางไว้ในแคชคุณลักษณะด้วย หากในขณะนี้ไคลเอนต์อื่นเขียนไปยังไฟล์เดียวกัน สิ่งนี้อาจทำให้เนื้อหาในแคชของไคลเอนต์ต่างกันไม่ตรงกัน อย่างไรก็ตาม เนื่องจากแคชแอตทริบิวต์ของไคลเอ็นต์แรกได้รับการอัปเดตทุกๆ สองสามวินาที จึงสามารถระบุได้ว่าแอตทริบิวต์มีการเปลี่ยนแปลง (ในกรณีนี้คือเวลาที่อัปเดตไฟล์) ดังนั้นไคลเอ็นต์จะต้องดำเนินการอัปเดตบนแคชเนื้อหาของไฟล์ (การดำเนินการนี้จะดำเนินการโดยอัตโนมัติ)

ในการให้บริการคำขอของไคลเอ็นต์ nfsd daemons จะต้องทำงานบนเซิร์ฟเวอร์ ในกรณีนี้ ข้อมูลแคช daemons เมื่ออ่านจากดิสก์เซิร์ฟเวอร์ daemons ทั้งหมดให้บริการคำขอไคลเอ็นต์ในคิวเดียวกัน ซึ่งช่วยให้สามารถใช้ทรัพยากรตัวประมวลผลได้อย่างเหมาะสมที่สุด

น่าเสียดายที่การกำหนดจำนวน biod และ nfsd daemons ที่เหมาะสมที่สุดนั้นเป็นเรื่องยากมาก ในด้านหนึ่ง ยิ่งจำนวน daemons ที่รันอยู่มากเท่าใด จำนวนคำขอที่สามารถประมวลผลพร้อมกันก็จะยิ่งมากขึ้นเท่านั้น ในทางกลับกัน การเพิ่มจำนวน daemons อาจส่งผลเสียต่อประสิทธิภาพของระบบ เนื่องจากค่าใช้จ่ายในการสลับกระบวนการเพิ่มขึ้น การปรับแต่ง NFS อย่างละเอียดเป็นขั้นตอนที่น่าเบื่อมากและต้องคำนึงถึงไม่เพียงแต่จำนวนไคลเอ็นต์และกระบวนการของผู้ใช้เท่านั้น แต่ยังรวมถึงคุณลักษณะต่างๆ เช่น เวลาสลับระหว่างบริบทของกระบวนการ (เช่น คุณสมบัติสถาปัตยกรรมโปรเซสเซอร์) ขนาด แรมการโหลดระบบ ฯลฯ เป็นการดีกว่าที่จะกำหนดการตั้งค่าดังกล่าวแบบทดลอง แม้ว่าในกรณีส่วนใหญ่ การตั้งค่ามาตรฐานจะทำ (โดยปกติ 8 nfsd daemons รันบนเซิร์ฟเวอร์ และ 4 biod daemons รันบนไคลเอนต์)

รูปที่ 2. การดำเนินการเขียนใน NFS v2

มาก คุณสมบัติที่สำคัญ NFS v2 คือการดำเนินการเขียนไม่ได้ถูกแคชไว้บนฝั่งเซิร์ฟเวอร์ (ดูรูปที่ 2) การดำเนินการนี้เพื่อให้มั่นใจถึงความน่าเชื่อถือสูงของบริการ NFS และช่วยให้คุณรับประกันความสมบูรณ์ของข้อมูลหลังจากเซิร์ฟเวอร์รีบูตในกรณีที่เซิร์ฟเวอร์ล้มเหลว การไม่มีแคชการเขียนคือปัญหาที่ใหญ่ที่สุดของ NFS v2 ในการดำเนินการเขียน NFS นั้นด้อยกว่าเทคโนโลยีคู่แข่งอย่างมาก แม้ว่าในการดำเนินการอ่านจะสูญเสียเพียงเล็กน้อยก็ตาม วิธีเดียวที่จะต่อสู้กับประสิทธิภาพการเขียนต่ำคือการใช้ระบบย่อยของดิสก์ที่มีแคชในตัวที่ไม่ใช้พลังงาน เช่นเดียวกับในอาร์เรย์ RAID ที่มีราคาแพง

เมื่อทำงานในเครือข่ายแบบกระจายและทั่วโลก NFS v2 มีข้อเสียเปรียบอีกประการหนึ่งเนื่องจากการเลือกใช้ UDP เป็นโปรโตคอลการขนส่งสำหรับบริการ ดังที่คุณทราบ UDP ไม่รับประกันการส่งมอบแพ็กเก็ต นอกจากนี้ ลำดับที่ได้รับแพ็กเก็ตอาจไม่สอดคล้องกับลำดับที่ถูกส่ง

สิ่งนี้สามารถนำไปสู่ผลที่ไม่พึงประสงค์สองประการต่อไปนี้: การสูญเสียแพ็กเก็ตและความล่าช้าในการประมวลผลเป็นเวลานาน ลองนึกภาพว่าไคลเอนต์กำลังดำเนินการอ่านไฟล์ขนาดใหญ่ ในกรณีนี้ เซิร์ฟเวอร์จำเป็นต้องส่งแพ็กเก็ตหลายชุดเพื่อเติมบัฟเฟอร์แคชของไคลเอ็นต์ หากแพ็กเก็ตตัวใดตัวหนึ่งหายไป ไคลเอนต์จะถูกบังคับให้ทำซ้ำคำขออีกครั้ง และเซิร์ฟเวอร์จะถูกบังคับให้สร้างการตอบกลับ เป็นต้น

สถานการณ์ความล่าช้าในการประมวลผลคำขอ RPC เนื่องจากเซิร์ฟเวอร์โหลดจำนวนมากหรือปัญหาเครือข่ายก็ไม่เป็นที่พอใจเช่นกัน หากเกินขีดจำกัดเวลาที่กำหนด ไคลเอนต์จะถือว่าแพ็กเก็ตสูญหายและจะพยายามส่งคำขอซ้ำ สำหรับการดำเนินการ NFS จำนวนมาก นี่ไม่ใช่ปัญหา เนื่องจากแม้แต่การดำเนินการเขียนก็สามารถทำซ้ำได้โดยเซิร์ฟเวอร์ แต่การดำเนินการเช่น "ลบไดเรกทอรี" หรือ "เปลี่ยนชื่อไฟล์" ล่ะ? โชคดีที่การใช้งาน NFS ส่วนใหญ่รองรับการแคชฝั่งเซิร์ฟเวอร์ของคำขอที่ซ้ำกัน หากเซิร์ฟเวอร์ได้รับการร้องขอซ้ำสำหรับการดำเนินการใดๆ ภายในระยะเวลาสั้นๆ คำขอดังกล่าวจะถูกละเว้น

ระบบ RPC ไม่ติดตามสถานะการเชื่อมต่อ ซึ่งสร้างปัญหาเมื่อไคลเอนต์หลายรายเข้าถึงไฟล์เดียวกันในเวลาเดียวกัน มีสองปัญหาที่นี่:

  • วิธีล็อคไฟล์โดยเฉพาะเมื่อเขียนลงไป
  • จะรับประกันความสมบูรณ์ของการล็อคในกรณีที่เซิร์ฟเวอร์หรือไคลเอนต์ NFS ขัดข้องและรีบูตได้อย่างไร

เมื่อต้องการทำเช่นนี้ NFS ใช้ daemons พิเศษสองตัว: rpc.lockd รับผิดชอบในการล็อคไฟล์ และ rpc.statd รับผิดชอบในการมอนิเตอร์สถานะของการล็อค (ดูรูปที่ 3) daemons เหล่านี้ทำงานทั้งฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ rpc.lockd และ rpc.statd daemons ถูกกำหนดสองไดเร็กทอรีพิเศษ (sm และ sm.bak) โดยที่ข้อมูลการล็อคถูกเก็บไว้

บริการเพิ่มเติมที่ไม่เหมือนใครและค่อนข้างสะดวก automounter ช่วยให้คุณสามารถเมานต์ระบบไฟล์โดยอัตโนมัติเมื่อผู้ใช้ดำเนินการเข้าถึง ต่อจากนั้น automounter เป็นระยะๆ (ทุกๆ ห้านาทีตามค่าเริ่มต้น) จะพยายามยกเลิกการต่อเชื่อมระบบ หากข้อมูลไม่ว่าง (เช่น ไฟล์เปิดอยู่) แสดงว่าบริการยังคงทำงานต่อไป โหมดปกติ- หากไม่สามารถเข้าถึงระบบไฟล์อีกต่อไป ระบบจะยกเลิกการต่อเชื่อมโดยอัตโนมัติ ฟังก์ชั่น automounter ถูกนำมาใช้โดยหลายโปรแกรม amd และ autofs ได้รับความนิยมเป็นพิเศษในหมู่พวกเขา

คุณสมบัติ NFS V3

NFS เวอร์ชันที่สามสามารถใช้งานร่วมกับเวอร์ชันที่สองได้อย่างสมบูรณ์ เช่น เซิร์ฟเวอร์ NFS v3 “เข้าใจ” ไคลเอ็นต์ NFS v2 และ NFS v3 ในทำนองเดียวกัน ไคลเอ็นต์ NFS v3 สามารถเข้าถึงเซิร์ฟเวอร์ NFS v2 ได้

นวัตกรรมที่สำคัญใน NFS v3 คือการรองรับโปรโตคอลการขนส่ง TCP UDP เหมาะสำหรับเครือข่ายท้องถิ่น แต่ไม่เหมาะสำหรับสายการสื่อสารระดับโลกที่ช้าและไม่น่าเชื่อถือเสมอไป ใน NFS v3 การรับส่งข้อมูลไคลเอ็นต์ทั้งหมดจะถูกมัลติเพล็กซ์เป็นการเชื่อมต่อ TCP เดียว

ใน NFS v3 ขนาดบัฟเฟอร์แคชเพิ่มขึ้นเป็น 64 KB ซึ่งมีประโยชน์ต่อประสิทธิภาพการทำงาน โดยเฉพาะอย่างยิ่งในแง่ของการใช้งานเครือข่ายความเร็วสูงที่ใช้งานอยู่ เทคโนโลยีที่รวดเร็วอีเธอร์เน็ต, กิกะบิตอีเธอร์เน็ต และ ATM นอกจากนี้ NFS v3 ยังช่วยให้คุณจัดเก็บข้อมูลที่แคชไว้บนไคลเอนต์ได้ไม่เฉพาะใน RAM เท่านั้น แต่ยังรวมถึงดิสก์ในเครื่องของไคลเอนต์ด้วย (ตามจริงแล้ว เป็นที่น่าสังเกตว่าการใช้งาน NFS v2 บางตัวก็มีฟีเจอร์นี้เช่นกัน) เทคโนโลยีนี้เรียกว่า CacheFS

รูปที่ 4. การดำเนินการเขียนใน NFS v3

แต่บางทีนวัตกรรมที่สำคัญยิ่งกว่าของ NFS v3 ก็ถือได้ว่าเป็นการเพิ่มประสิทธิภาพในการดำเนินการเขียนอย่างมาก ขณะนี้การแคชข้อมูลที่บันทึกไว้จะดำเนินการบนฝั่งเซิร์ฟเวอร์ด้วย ในขณะที่การลงทะเบียนและการยืนยันข้อเท็จจริงของการเขียนข้อมูลลงดิสก์จะดำเนินการโดยใช้คำขอคอมมิตพิเศษ (ดูรูปที่ 4) เทคโนโลยีนี้เรียกว่าการบันทึกแบบอะซิงโครนัสที่ปลอดภัย หลังจากที่ข้อมูลถูกส่งไปยังแคชของเซิร์ฟเวอร์แล้ว ไคลเอนต์จะส่งคำขอคอมมิต ซึ่งจะเริ่มการดำเนินการเขียนไปยังดิสก์ของเซิร์ฟเวอร์ ในทางกลับกัน หลังจากเขียนข้อมูลลงดิสก์แล้ว เซิร์ฟเวอร์จะส่งคำยืนยันถึงไคลเอ็นต์ว่าการดำเนินการเสร็จสมบูรณ์แล้ว

สิ่งใหม่ใน NFS v3 คือการรองรับระบบไฟล์ 64 บิตและปรับปรุงการรองรับ ACL

ในอนาคต Sun กำลังส่งเสริมเทคโนโลยี WebNFS ซึ่งช่วยให้คุณเข้าถึงระบบไฟล์ได้จากทุกที่ เว็บเบราว์เซอร์หรือผ่านแอปพลิเคชันที่เขียนด้วยภาษา Java ไม่จำเป็นต้องติดตั้งซอฟต์แวร์ไคลเอ็นต์ใดๆ WebNFS (อ้างอิงจาก Sun) มอบประสิทธิภาพที่เพิ่มขึ้นสามถึงห้าเท่าผ่าน ftp หรือ HTTP

บทสรุป

เมื่อทราบหลักการทำงานของโปรโตคอล NFS ผู้ดูแลระบบสามารถกำหนดค่าบริการได้อย่างเหมาะสมที่สุด ระบบไฟล์เครือข่าย NFS เหมาะสำหรับเครือข่าย UNIX เนื่องจากมาพร้อมกับระบบปฏิบัติการนี้เกือบทุกเวอร์ชัน นอกจากนี้ การสนับสนุน NFS ยังถูกนำมาใช้ในระดับเคอร์เนล UNIX เมื่อ Linux เริ่มมีน้ำหนักเพิ่มขึ้นเรื่อยๆ ในระดับเดสก์ท็อป NFS ก็มีโอกาสที่จะได้รับการยอมรับที่นี่เช่นกัน น่าเสียดายที่การใช้ NFS บนคอมพิวเตอร์ไคลเอนต์ Windows ทำให้เกิดปัญหาบางอย่างที่เกี่ยวข้องกับความจำเป็นในการติดตั้งซอฟต์แวร์ไคลเอนต์พิเศษและมีราคาค่อนข้างแพง ในเครือข่ายดังกล่าว การใช้บริการ SMB โดยเฉพาะซอฟต์แวร์ Samba ดูเหมือนจะดีกว่า อย่างไรก็ตาม เราจะกลับสู่ผลิตภัณฑ์ SMB สำหรับ UNIX ในปัญหา LAN ที่กำลังจะเกิดขึ้น

ทุกคนรู้ดีว่าในระบบ UNIX ระบบไฟล์คือชุดของระบบไฟล์ฟิสิคัลที่เชื่อมต่อกับจุดเดียวในทางตรรกะ ในความคิดของฉันข้อดีหลักประการหนึ่งขององค์กรดังกล่าวคือความสามารถในการปรับเปลี่ยนโครงสร้างของระบบไฟล์ที่มีอยู่แบบไดนามิก ด้วยความพยายามของนักพัฒนา วันนี้เราจึงมีโอกาสที่จะเชื่อมต่อระบบไฟล์ได้เกือบทุกประเภทและด้วยวิธีที่สะดวก โดย "วิธีการ" ก่อนอื่นฉันต้องการเน้นย้ำถึงความสามารถของเคอร์เนลระบบปฏิบัติการในการทำงานกับระบบไฟล์ผ่านการเชื่อมต่อเครือข่าย

โปรโตคอลเครือข่ายจำนวนมากทำให้เราสามารถทำงานกับไฟล์ระยะไกลได้ ไม่ว่าจะเป็น FTP, SMB, Telnet หรือ SSH ต้องขอบคุณความสามารถของเคอร์เนลในการไม่ขึ้นอยู่กับประเภทของระบบไฟล์ที่เชื่อมต่อ เราจึงสามารถเชื่อมต่ออะไรก็ได้และไม่ว่าเราต้องการอะไรก็ตามโดยใช้โปรแกรมเมานท์

วันนี้ผมจะมาพูดเกี่ยวกับ NFS - Network File System เทคโนโลยีนี้ช่วยให้คุณเชื่อมต่อจุด FS แต่ละจุดบนคอมพิวเตอร์ระยะไกลกับระบบไฟล์ได้ คอมพิวเตอร์ท้องถิ่น- ตัวฉันเอง โปรโตคอล NFSช่วยให้คุณสามารถดำเนินการกับไฟล์ได้อย่างรวดเร็ว ปลอดภัย และเชื่อถือได้ เราต้องการอะไรอีก? -

สิ่งที่จำเป็นสำหรับสิ่งนี้ในการทำงาน

เพื่อไม่ให้พูดจาโผงผางเป็นเวลานานในหัวข้อเวอร์ชัน NFS และการสนับสนุนในเคอร์เนลต่างๆ เราจะทำการสันนิษฐานทันทีว่าเวอร์ชันเคอร์เนลของคุณไม่ต่ำกว่า 2.2.18 ใน เอกสารอย่างเป็นทางการนักพัฒนาสัญญา การสนับสนุนอย่างเต็มที่ฟังก์ชัน NFS เวอร์ชัน 3 ในเคอร์เนลนี้และเวอร์ชันที่ใหม่กว่า

การติดตั้ง

ในการรันเซิร์ฟเวอร์ NFS ใน Ubuntu 7.10 ของฉัน - Gutsy Gibbon ฉันจำเป็นต้องติดตั้งแพ็คเกจ nfs-common และ nfs-kernel-server หากคุณต้องการเพียงไคลเอนต์ NFS ก็ไม่จำเป็นต้องติดตั้ง nfs-kernel-server

การตั้งค่าเซิร์ฟเวอร์

หลังจากติดตั้งแพ็คเกจทั้งหมดสำเร็จแล้ว คุณต้องตรวจสอบว่า NFS daemon กำลังทำงานอยู่หรือไม่:

/etc/init.d/nfs-kernel-สถานะเซิร์ฟเวอร์

หาก daemon ไม่ทำงาน คุณต้องเริ่มต้นด้วยคำสั่ง

/etc/init.d/nfs-kernel-server เริ่มต้น

หลังจากที่ทุกอย่างเริ่มต้นเรียบร้อยแล้ว คุณสามารถเริ่มส่งออกระบบไฟล์ได้ กระบวนการนี้ง่ายมากและใช้เวลาน้อยที่สุด

ไฟล์คอนฟิกูเรชันเซิร์ฟเวอร์ NFS หลักอยู่ใน /etc/exports และมีรูปแบบต่อไปนี้:

ไดเร็กทอรี เครื่อง 1 (ตัวเลือก 11, ตัวเลือก 12) เครื่อง 2 (ตัวเลือก 21, ตัวเลือก 22)

ไดเรกทอรีเส้นทางที่แน่นอนไปยังไดเร็กทอรีเซิร์ฟเวอร์ FS ที่คุณต้องการให้สิทธิ์การเข้าถึง

เครื่องX— ชื่อ DNS หรือที่อยู่ IP คอมพิวเตอร์ไคลเอนต์ซึ่งอนุญาตให้เข้าถึงได้

ตัวเลือกXX— พารามิเตอร์การส่งออก FS ซึ่งใช้บ่อยที่สุด:

  • โร- การเข้าถึงไฟล์เป็นแบบอ่านอย่างเดียว
  • ร.ร- ให้สิทธิ์การเข้าถึงแบบอ่าน/เขียน
  • no_root_squash— ตามค่าเริ่มต้น หากคุณเชื่อมต่อกับทรัพยากร NFS ในฐานะรูท เพื่อความปลอดภัย เซิร์ฟเวอร์จะเข้าถึงไฟล์ในฐานะผู้ใช้ none เพื่อความปลอดภัย อย่างไรก็ตาม หากคุณเปิดใช้งานตัวเลือกนี้ ไฟล์บนฝั่งเซิร์ฟเวอร์จะเข้าถึงได้ในฐานะรูท ระวังตัวเลือกนี้
  • no_subtree_check— ตามค่าเริ่มต้น หากคุณไม่ได้ส่งออกพาร์ติชันทั้งหมดบนเซิร์ฟเวอร์ แต่ส่งออกเพียงส่วนหนึ่งของระบบไฟล์ daemon จะตรวจสอบว่าไฟล์ที่ร้องขอนั้นอยู่ในพาร์ติชันเดียวกันหรือไม่ หากคุณกำลังส่งออกพาร์ติชันทั้งหมดหรือจุดต่อเชื่อมของระบบไฟล์ที่ส่งออกไม่มีผลกับไฟล์จากฟิสิคัลวอลุ่มอื่น คุณสามารถเปิดใช้งานตัวเลือกนี้ได้ สิ่งนี้จะทำให้คุณได้รับความเร็วเซิร์ฟเวอร์เพิ่มขึ้น
  • ซิงค์— เปิดใช้งานตัวเลือกนี้หากมีความเป็นไปได้ที่จะขาดการเชื่อมต่อกะทันหันหรือไฟฟ้าดับของเซิร์ฟเวอร์ หากไม่ได้เปิดใช้งานตัวเลือกนี้ อาจมีความเสี่ยงสูงที่ข้อมูลจะสูญหายหากเซิร์ฟเวอร์ NFS หยุดทำงานกะทันหัน

สมมติว่าเราจำเป็นต้องให้สิทธิ์การเข้าถึงคอมพิวเตอร์เดสก์ท็อป Ashep แก่ไดเร็กทอรี /var/backups ของคอมพิวเตอร์แล็ปท็อป Ashep จำเป็นต้องเข้าถึงไดเรกทอรีเพื่อคัดลอกไฟล์สำรองจาก ashep-desktop ไฟล์ของฉันกลายเป็นเช่นนี้:

/var/backups ashep-desktop(rw,no_subtree_check,sync)

หลังจากเพิ่มบรรทัดใน /etc/exports คุณต้องรีสตาร์ทเซิร์ฟเวอร์ NFS เพื่อให้การเปลี่ยนแปลงมีผล

/etc/init.d/nfs-kernel-server รีสตาร์ท

นั่นคือทั้งหมดที่ คุณสามารถเริ่มการเชื่อมต่อ FS ที่ส่งออกบนคอมพิวเตอร์ไคลเอนต์ได้

การตั้งค่าไคลเอ็นต์

บนฝั่งไคลเอ็นต์ ระบบไฟล์ระยะไกลจะถูกเมาต์ในลักษณะเดียวกับระบบไฟล์อื่นทั้งหมด - ด้วยคำสั่ง mount นอกจากนี้ยังไม่มีใครห้ามไม่ให้คุณใช้ /etc/fstab หากคุณต้องการเชื่อมต่อ FS โดยอัตโนมัติเมื่อระบบปฏิบัติการบูท ดังนั้นตัวเลือกการเมานต์จะมีลักษณะดังนี้:

เมานต์ -t nfs ashep-laptop:/var/backups/ /mnt/ashep-laptop/backups/

หากทุกอย่างเป็นไปด้วยดีและคุณจำเป็นต้องเชื่อมต่อกับ FS ระยะไกลโดยอัตโนมัติเมื่อบู๊ตเครื่อง เพียงเพิ่มบรรทัดใน /etc/fstab:

Ashep แล็ปท็อป:/var/backups /mnt/ashep-laptop/backups nfs auto 0 0

อะไรอีก

ดังนั้นเราจึงมีภาพรวมเล็กๆ น้อยๆ ที่ใช้งานได้จริงเกี่ยวกับความสามารถของ NFS แน่นอนว่านี่เป็นเพียงส่วนเล็กๆ ของสิ่งที่ NFS สามารถทำได้ เพียงพอสำหรับใช้ที่บ้านหรือในสำนักงานขนาดเล็ก หากยังไม่เพียงพอสำหรับคุณฉันขอแนะนำให้อ่านก่อน