๐ง Linux:ๅฎๆด NFS Server ่ Client ๆ่ผๆๅ(ๅซ systemd ่ชๅๆ่ผ)
ๆฌ็ฏๅฐๅธถไฝ ๅพ้ถๆถ่จญ NFS Server、่จญๅฎ exports ๆฌ้、Client ๆ่ผๅฐ systemd ่ชๅๆ่ผๅฎๆดๆต็จ,้ฉ็จๆผๅฎถๅบญๅฏฆ้ฉๅฎค、Proxmox、Kubernetes、NAS ๆดๅ็ญๆ ๅข。
๐ ไธ、ไป้บผๆฏ NFS?้ฉ็จๆ ๅข่ๆถๆง่ชชๆ
NFS(Network File System)ๆฏไธ็จฎ้้็ถฒ่ทฏๅ ฑไบซๆชๆก็ณป็ตฑ็ๅๅฎ,ๅธธ็จๆผไผบๆๅจไน้ๅ ฑไบซ่ณๆ。ๅฎ็้ๅบฆๅฟซ、ๅปถ้ฒไฝ,้ๅธธ้ฉๅ:
- Proxmox / KVM ็ฐๅขๆพ็ฝฎ ISO、Backup
- ๅคๅฐ Linux ไธปๆฉๅ ฑไบซ่จญๅฎๆ่ณๆ็ฎ้
- Kubernetes / Docker ็ฏ้ปๅ ฑไบซๅฒๅญ
- ไผๆฅญๅ ง IT ็ณป็ตฑ็ๅ ฑ็จๆชๆกไธญๅฟ
# ๅธธ่ฆ NFS ๆถๆง
[Client A] --\
[Client B] ----> [NFS Server] ----> Storage
[Client C] --/
---
๐ ไบ、NFS Server ๅฎ่ฃ่่จญๅฎ
1️⃣ ๅฎ่ฃ NFS ไผบๆๅจๅฅไปถ
# CentOS / RHEL / Rocky / AlmaLinux
sudo yum install -y nfs-utils
# Ubuntu / Debian
sudo apt install -y nfs-kernel-server
2️⃣ ๅปบ็ซๅ ฑไบซ่ณๆๅคพ
sudo mkdir -p /srv/nfs/data
sudo chown -R nobody:nogroup /srv/nfs/data # Debian/Ubuntu
# CentOS ๅฏ็จ nfsnobody
3️⃣ ่จญๅฎ /etc/exports
sudo nano /etc/exports
็ฏไพ่จญๅฎ(ๅ
่จฑ 10.0.0.0/24 ๅญ็ถฒ):
/srv/nfs/data 10.0.0.0/24(rw,sync,no_root_squash,no_subtree_check)
ๅธธ็จๅๆธ่ชชๆ:
| ๅๆธ | ่ชชๆ |
|---|---|
| rw | ๅ ่จฑ่ฎๅฏซ |
| sync | ๅๆญฅๅฏซๅ ฅ,่ผๅฎๅ จไฝ็จๆ ข |
| no_root_squash | ไฟ็ root ่บซไปฝ(ๅ ง็ถฒ็ฐๅขๅธธ็จ) |
| no_subtree_check | ๆๅๆ่ฝ,ๅธธ่ฆๆไฝณๅ |
4️⃣ ๅฅ็จ่จญๅฎไธฆๅๅๆๅ
sudo exportfs -ra
sudo systemctl enable --now nfs-server
sudo systemctl status nfs-server
---
๐ ไธ、Client ๅดๆ่ผ NFS
1️⃣ ๅฎ่ฃๅฟ ่ฆๅทฅๅ ท
# CentOS / RHEL
sudo yum install -y nfs-utils
# Ubuntu / Debian
sudo apt install -y nfs-common
2️⃣ ๆๅๆ่ผ(ๆธฌ่ฉฆ็จ)
sudo mkdir -p /mnt/nfs
sudo mount -t nfs 10.0.0.10:/srv/nfs/data /mnt/nfs
็ขบ่ชๆ่ผๆๅ:
df -h | grep nfs
---
๐ ๅ、่จญๅฎ fstab ้ๆฉ่ชๅๆ่ผ
1️⃣ ็ทจ่ผฏ fstab
sudo nano /etc/fstab
ๅ ๅ
ฅ:
10.0.0.10:/srv/nfs/data /mnt/nfs nfs defaults,_netdev 0 0
2️⃣ ๅฅ็จ่จญๅฎ
sudo mount -a
---
๐ ไบ、ไฝฟ็จ systemd ่ชๅๆ่ผ(ๆฏ fstab ๆดๅฏ้ )
ๅจๅค็ฏ้ป้จ็ฝฒ(ๅฆ Proxmox / Kubernetes)ไธญ,systemd automount ่ฝ้ฟๅ ้ๆฉ้ ๅบ้ ๆ็ๆ่ผๅคฑๆ。
1️⃣ ๅปบ็ซๆ่ผ็ฎ้
sudo mkdir -p /mnt/nfs
2️⃣ ๅปบ็ซ systemd ๅฎไฝๆช
sudo nano /etc/systemd/system/mnt-nfs.mount
ๅ
งๅฎน:
[Unit]
Description=NFS Share Mount
[Mount]
What=10.0.0.10:/srv/nfs/data
Where=/mnt/nfs
Type=nfs
Options=_netdev
[Install]
WantedBy=multi-user.target
3️⃣ ๅปบ็ซ automount(ๅๅๅพ่ชๅๅจๅญๅๆๆ่ผ)
sudo nano /etc/systemd/system/mnt-nfs.automount
ๅ
งๅฎน:
[Unit]
Description=NFS Automount
[Automount]
Where=/mnt/nfs
[Install]
WantedBy=multi-user.target
4️⃣ ๅ็จ
sudo systemctl daemon-reload
sudo systemctl enable --now mnt-nfs.automount
ๆๅๅพ:
cd /mnt/nfs # ← ้ไธๅป systemd ๆ่ชๅๆ่ผ
---
๐ ๅ ญ、NFS ๆ่ฝๆไฝณๅ(ๅฏ้ธ)
| ๆไฝณๅ้ ็ฎ | ๅปบ่ญฐ |
|---|---|
| async | ๆๅ้ๅบฆ(้ๆฅตๅบฆ้่ฆ่ณๆไธ่ดๆงๆ) |
| rsize / wsize | ๅธธ็จ 131072 ไปฅๆ้ซ throughput |
| noatime | ้ไฝ metadata ่ฒ ๆ |
| ไฝฟ็จ SSD | ๅคงๅน ๆๅ NFS IOPS ่ฝๅ |
10.0.0.10:/srv/nfs/data /mnt/nfs nfs defaults,noatime,rsize=131072,wsize=131072 0 0
---
๐ ๅปถไผธ้ฑ่ฎ
- ๐ง Linux OpenVPN Server ๆถ่จญๅฎๆดๆๅ
- ๐ก Linux ้ฒ็ซ็:iptables / nftables / firewalld ๅ จ่งฃๆ
- ๐ Linux ไฝฟ็จ่ ่ ACL ้ซ้ๆฌ้็ฎก็
- ๐งฉ Proxmox ่ๆฌ็ถฒ่ทฏ:Linux Bridge / OVS / VXLAN ๅฎๆด่งฃๆ
— WWFandy・Linux ๆ่ก็ญ่จ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ