Network File System (NFS) เป็นโปรโตคอลระบบไฟล์แบบกระจายสำหรับแชร์ไฟล์และโฟลเดอร์ NFS อิงตามโปรโตคอล Remote Procedure Protocol (ONC RPC) NFS ช่วยให้ mount ระบบไฟล์ระยะไกลผ่านเครือข่าย จำไว้ว่าโดยค่าเริ่มต้นข้อมูลไม่ได้เข้ารหัสเมื่อใช้ NFS และไคลเอ็นต์ไม่ได้รับการยืนยันตัวตน (สามารถจำกัดการเข้าถึงโดย IP ได้)
NFS ง่ายต่อการกำหนดค่าทั้งฝั่งเซิร์ฟเวอร์และไคลเอ็นต์ ในบทความนี้ เราจะแสดงวิธีติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NFS จากนั้นเราจะเชื่อมต่อ NFS share บนไคลเอ็นต์ บทความนี้อิงตามการกระจาย Linux แบบ RPM-based (CentOS, RHEL, Fedora, ฯลฯ)
วิธีติดตั้งและกำหนดค่า NFS Server บน Linux CentOS
โดยค่าเริ่มต้น nfs ถูกติดตั้งไว้ใน CentOS ด้วยแพ็กเกจ Standard หากคุณลบส่วนประกอบ NFS ออกหรือใช้โหมด Minimal Install สำหรับเซิร์ฟเวอร์ คุณสามารถติดตั้งแพ็กเกจ NFS โดยใช้ตัวจัดการแพ็กเกจ yum (หรือ dnf):
ใน CentOS 8:
# dnf install nfs-utils -y
ผมมีแพ็กเกจติดตั้งอยู่แล้ว:

เวอร์ชัน NFS server ปัจจุบันรองรับโปรโตคอล NFSv3 และ NFSv4 NFSv2 ปิดใช้งานโดยค่าเริ่มต้น คุณสามารถรับรายการเวอร์ชัน NFS ที่รองรับได้โดยใช้คำสั่งนี้:
cat /proc/fs/nfsd/versions
หลังจากที่คุณติดตั้งแพ็กเกจที่ต้องการทั้งหมดแล้ว ให้เริ่มบริการ nfs-server และ rpcbind และเพิ่มเข้าไปในการเริ่มต้น:
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
หากคุณต้องการใช้ NFSv4.1/4.2 เท่านั้น คุณไม่จำเป็นต้องรัน rpcbind
หากคุณใช้ firewalld บนโฮสต์ Linux ให้เปิดพอร์ตต่อไปนี้:
# firewall-cmd --permanent --add-port=111/tcp
# firewall-cmd --permanent --add-port=20048/tcp
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --permanent --zone=public --add-service=mountd
# firewall-cmd --permanent --zone=public --add-service=rpc-bind
# firewall-cmd --reload

สำหรับผู้ที่ใช้ iptables:
# iptables -t filter -A INPUT -p tcp --dport 111 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 2049 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 20048 -j ACCEPT
# service iptables save
# service iptables restart
จากนั้นสร้างไดเรกทอรีที่เซิร์ฟเวอร์ NFS จะแชร์:
# mkdir -p /backup/nfs
# chmod -R 777 /backup/nfs
เผยแพร่ NFS share และกำหนดสิทธิ์การเข้าถึงในไฟล์กำหนดค่าที่มีการตั้งค่าเซิร์ฟเวอร์ NFS (/etc/exports)
# nano /etc/exports
เพิ่มบรรทัดต่อไปนี้ในการตั้งค่าเพื่อให้สิทธิ์เข้าถึง NFS ให้กับโฮสต์ทั้งหมดในเซ็บเน็ต IP ที่ระบุ:
/backup/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)
หรือคุณสามารถจำกัดการเข้าถึงเฉพาะที่อยู่ IP เดียวได้:
/backup/nfs 192.168.2.24(rw,sync,no_root_squash,no_all_squash, anonuid=1000,anongid=1000) 192.168.3.100 (ro,async,no_subtree_check)
มาดูว่าพารามิเตอร์ใดบ้างที่ใช้ให้สิทธิ์บนไดเรกทอรี NFS:
- rw – ให้สิทธิ์เขียน, ro – ให้สิทธิ์อ่านอย่างเดียว
- sync – โหมดการเข้าถึงแบบซิงโครนัส, async หมายถึงไม่ต้องรอการยืนยันการเขียนบนดิสก์ (ปรับปรุงประสิทธิภาพ NFS แต่ลดความน่าเชื่อถือ)
- no_root_squash – อนุญาตให้ผู้ใช้ root เข้าถึงไดเรกทอรี NFS จากไคลเอ็นต์ (ปกติไม่แนะนำ)
- no_all_squash – เปิดใช้งานการยืนยันตัวตนผู้ใช้, all_squash – อนุญาตให้เข้าถึง NFS share ภายใต้ผู้ใช้อะนอนิมัส
- no_subtree_check – ปิดการตรวจสอบว่าผู้ใช้เข้าถึงไฟล์ในไดเรกทอรี (subtree_check ใช้โดยค่าเริ่มต้น)
- anonuid, anongid – แมปผู้ใช้/กลุ่ม NFS ไปยังผู้ใช้/กลุ่มท้องถิ่นที่ระบุ (UID หรือ GID)
เพื่อนำการตั้งค่า NFS share ใหม่ไปใช้ ให้รันคำสั่งต่อไปนี้:
# exportfs -a
และรีสตาร์ทเซิร์ฟเวอร์ NFS:
# systemctl restart nfs-server
ดังนั้น เราเสร็จสิ้นการกำหนดค่าเซิร์ฟเวอร์ NFS และสามารถดำเนินการกำหนดค่าไคลเอ็นต์ต่อไป
การกำหนดค่า NFS Client บน CentOS
เพื่อกำหนดค่าไคลเอ็นต์ NFS คุณต้องติดตั้งแพ็กเกจ nfs-utils เช่นกัน
# yum install nfs-utils -y
เพิ่มบริการเข้าไปในการเริ่มต้นและเริ่มต้น:
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
จากนั้นสร้างไดเรกทอรีบนไคลเอ็นต์ที่จะ mount ไดเรกทอรี NFS:
# mkdir /backup
จากนั้นคุณสามารถ mount NFS share ระยะไกลโดยใช้คำสั่งนี้:
# mount -t nfs 192.168.0.100:/backup/nfs/ /backup
คุณสามารถบังคับเวอร์ชันของโปรโตคอล NFS ที่จะใช้ได้:
# mount -t nfs -o vers=4 192.168.0.100:/backup/nfs/ /backup
ที่ IP คือที่อยู่ของเซิร์ฟเวอร์ NFS ที่คุณกำหนดค่าไว้ก่อนหน้านี้

จากนั้น NFS shares ที่เชื่อมต่อจะแสดงในรายการดิสก์ที่ mount ไว้ คุณสามารถอ่านข้อมูลในไดเรกทอรีหรือเขียนลงไปได้ (ขึ้นอยู่กับสิทธิ์ที่มอบให้ที่อยู่ IP ของคุณบนเซิร์ฟเวอร์ NFS) เพื่อ mount ไดเรกทอรี NFS อัตโนมัติเมื่อรีบูท คุณต้องเปิดไฟล์ fstab:
# nano /etc/fstab
และเพิ่มบรรทัดต่อไปนี้:
192.168.0.100:/backup/nfs/ /backup/ nfs rw,sync,hard,intr 0 0
หลังจากบันทึก fstab คุณสามารถนำไปใช้ได้ด้วยคำสั่ง:
# mount -a
ดังนั้น เราได้กำหนดค่าและเชื่อมต่อพื้นที่จัดเก็บ NFS ระยะไกล ซึ่งสามารถใช้สำหรับการเข้าถึงทรัพยากรแชร์ผ่านเครือข่ายอย่างโปร่งใสจากโฮสต์ต่างๆ คุณสามารถวางไฟล์สำรอง, ไฟล์ ISO image ฯลฯ ในไดเรกทอรี NFS ของคุณ