ระบบไฟล์เครือข่าย (NFS) เป็นโปรโตคอลระบบไฟล์แบบกระจายสำหรับการแชร์ไฟล์และโฟลเดอร์ NFS ขึ้นอยู่กับ Remote Procedure Protocol (ONC RPC) NFS อนุญาตให้เมาต์ระบบไฟล์ระยะไกลบนเครือข่าย โปรดจำไว้ว่าโดยค่าเริ่มต้นข้อมูลจะไม่ถูกเข้ารหัสเมื่อใช้ NFS และไคลเอนต์จะไม่ได้รับการรับรอง (การเข้าถึงสามารถถูกจำกัดโดย IP)
NFS นั้นง่ายต่อการกำหนดค่าทั้งบนเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ ในบทความนี้ เราจะแสดงวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NFS จากนั้นเราจะเชื่อมต่อการแชร์ NFS บนไคลเอนต์ บทความนี้อิงจากลีนุกซ์ที่ใช้ RPM (CentOS, RHEL, Fedora เป็นต้น)
วิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ NFS บน Linux CentOS
ตามค่าเริ่มต้น nfs ได้รับการติดตั้งใน CentOS ด้วยแพ็คเกจมาตรฐานแล้ว หากคุณลบส่วนประกอบ NFS หรือใช้โหมดการติดตั้งขั้นต่ำสำหรับเซิร์ฟเวอร์ของคุณ คุณสามารถติดตั้งแพ็คเกจ NFS โดยใช้ตัวจัดการแพ็คเกจ yum (หรือ dnf):
ใน CentOS 8:
# dnf install nfs-utils -y
ฉันติดตั้งแพ็คเกจแล้ว:
เวอร์ชันเซิร์ฟเวอร์ NFS ปัจจุบันรองรับเวอร์ชันโปรโตคอล 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
หากคุณใช้ 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 และกำหนดสิทธิ์การเข้าถึงในไฟล์การกำหนดค่าที่มีการตั้งค่าเซิร์ฟเวอร์ 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:
- รวว – ให้สิทธิ์การเขียน ro – ให้การเข้าถึงแบบอ่านอย่างเดียว
- ซิงค์ – โหมดการเข้าถึงแบบซิงโครนัส อะซิงโครนัส หมายความว่าคุณไม่จำเป็นต้องรอการยืนยันการเขียนบนดิสก์ (ช่วยปรับปรุงประสิทธิภาพ NFS แต่ลดความน่าเชื่อถือลง)
- no_root_squash – อนุญาตให้ผู้ใช้รูทเข้าถึงไดเร็กทอรี NFS จากไคลเอนต์ (โดยปกติไม่แนะนำ)
- no_all_squash – เปิดใช้งานการตรวจสอบผู้ใช้ all_squash – อนุญาตให้เข้าถึงการแชร์ NFS ภายใต้ผู้ใช้ที่ไม่ระบุชื่อ
- no_subtree_check – ปิดใช้งานการตรวจสอบที่ผู้ใช้เข้าถึงไฟล์ในไดเร็กทอรี (subtree_check ถูกใช้โดยค่าเริ่มต้น)
- อนงอิด อนงค์อิด – แมปผู้ใช้/กลุ่ม NFS กับผู้ใช้/กลุ่มในเครื่องที่ระบุ (UID หรือ GID )
หากต้องการใช้การตั้งค่าการแชร์ NFS ใหม่ ให้เรียกใช้คำสั่งต่อไปนี้:
# exportfs -a
และรีสตาร์ทเซิร์ฟเวอร์ NFS:
# systemctl restart nfs-server
ดังนั้น เราจึงกำหนดค่าเซิร์ฟเวอร์ NFS ของเราเสร็จแล้วและอาจดำเนินการกำหนดค่าไคลเอนต์ต่อไป
การกำหนดค่าไคลเอ็นต์ NFS บน CentOS
ในการกำหนดค่าไคลเอ็นต์ NFS คุณต้องติดตั้งแพ็คเกจ nfs-utils ด้วย
# yum install nfs-utils -y
เพิ่มบริการเพื่อเริ่มต้นและเริ่มต้น:
# systemctl enable rpcbind
# systemctl enable nfs-server
# systemctl start rpcbind
# systemctl start nfs-server
จากนั้นสร้างไดเร็กทอรีบนไคลเอนต์ที่ไดเร็กทอรี NFS จะถูกเมาต์ไปที่:
# mkdir /backup
จากนั้น คุณสามารถเมานต์การแชร์ NFS ระยะไกลได้โดยใช้คำสั่งนี้:
# 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 ที่เชื่อมต่อจะแสดงในรายการไดรฟ์ที่ต่อเชื่อม คุณสามารถอ่านข้อมูลในไดเร็กทอรีหรือเขียนลงในไดเร็กทอรี (ขึ้นอยู่กับการอนุญาตที่กำหนดให้กับที่อยู่ IP ของคุณบนเซิร์ฟเวอร์ NFS) ในการต่อเชื่อมไดเร็กทอรี NFS โดยอัตโนมัติเมื่อรีบูต คุณต้องเปิด fstab ไฟล์:
# nano /etc/fstab
และเพิ่มบรรทัดต่อไปนี้ลงไป:
192.168.0.100:/backup/nfs/ /backup/ nfs rw,sync,hard,intr 0 0
หลังจากบันทึก fstab แล้ว คุณสามารถใช้กับคำสั่งนี้:
# mount -a
ดังนั้นเราจึงกำหนดค่าและเชื่อมต่อที่เก็บข้อมูล NFS ระยะไกล ซึ่งสามารถใช้สำหรับการเข้าถึงเครือข่ายที่โปร่งใสไปยังทรัพยากรที่ใช้ร่วมกันจากโฮสต์ต่างๆ คุณวางข้อมูลสำรอง ไฟล์อิมเมจ ISO ฯลฯ ในไดเร็กทอรี NFS ได้