它允許不同機器、不同操作系統(tǒng)通過網(wǎng)絡共享資源,使得遠程文件系統(tǒng)對用戶透明,就像訪問本地文件一樣
本文旨在詳細介紹在Linux系統(tǒng)中如何配置和實現(xiàn)NFS服務
一、NFS概述 NFS通過TCP/IP網(wǎng)絡實現(xiàn)文件共享,使得應用程序可以在客戶端通過網(wǎng)絡訪問位于服務器磁盤中的數(shù)據(jù)
這種機制在類Unix系統(tǒng)間實現(xiàn)磁盤文件共享尤為方便
NFS依賴于RPC(Remote Procedure Call,遠程過程調(diào)用)協(xié)議,RPC使得客戶端能夠執(zhí)行其他系統(tǒng)中的程序
NFS的主要功能包括: 跨平臺文件共享:不同操作系統(tǒng)間的文件共享
透明性:用戶無需關(guān)心文件存儲在哪個物理位置
- 便捷性:客戶端可以將NFS服務器共享的目錄掛載到本地文件系統(tǒng),使用上非常方便
二、NFS配置步驟 1. 環(huán)境準備 假設我們有兩臺Linux主機,通過e0網(wǎng)卡接入同一網(wǎng)絡,Net1已配置NAT服務,兩臺主機之間互通且可以訪問Internet
e1網(wǎng)卡接入Mgmt網(wǎng)絡,方便遠程管理
2. 安裝NFS軟件包 在NFS服務器上,首先需要安裝nfs-utils軟件包
可以使用以下命令進行安裝: 【root@nfs-server~】# yum -y install nfs-utils 安裝完成后,可以使用以下命令查看是否安裝成功: 【root@nfs-server~】# rpm -qa | grep nfs 應該看到類似以下輸出: libnfsidmap-2.3.3-59.el8.x86_64 nfs-utils-2.3.3-59.el8.x86_64 sssd-nfs-idmap-2.9.1-4.el8_9.x86_64 同時,可以查看nfs-utils軟件包的配置文件: 【root@nfs-server~】# rpm -qc nfs-utils 這些配置文件通常位于以下路徑: /etc/gssproxy/24-nfs-server.conf /etc/modprobe.d/lockd.conf /etc/nfs.conf /etc/nfsmount.conf /etc/request-key.d/id_resolver.conf /var/lib/nfs/etab /var/lib/nfs/rmtab 3. 創(chuàng)建共享目錄并設置權(quán)限 在NFS服務器上,創(chuàng)建一個用于NFS文件共享的目錄,并設置足夠的權(quán)限,確保其他人也有寫入權(quán)限: 【root@nfs-server~】# mkdir /nfsfile 【root@nfs-server~】# chmod 777 /nfsfile 可以使用以下命令查看目錄權(quán)限: 【root@nfs-server~】# ls -ld /nfsfile 輸出應類似: drwxrwxrwx. 2 root root 6 Dec 25 22:40 /nfsfile 向該目錄寫入一個測試文件: 【root@nfs-server~】# echo This is a nfs shared folder. > /nfsfile/README 4. 配置NFS服務 NFS服務的配置文件為`/etc/exports`,默認情況下該文件是空的
可以按照“共享目錄的路徑 允許訪問的NFS客戶端(共享權(quán)限參數(shù))”的格式,定義要共享的目錄與相應的權(quán)限
例如,將`/nfsfile`目錄共享給172.16.0.0/24網(wǎng)段內(nèi)的所有主機,并設置讀寫權(quán)限,同時配置數(shù)據(jù)同步寫入和將來訪客戶端的root管理員映射為本地的匿名用戶: 【root@nfs-server~】# vim /etc/exports 添加以下內(nèi)容: /nfsfile 172.16.0.(rw,sync,root_squash) 在NFS服務的配置文件中,可以使用通配符實現(xiàn)便捷配置
例如: - ``:代表任何主機都可以訪問
- `192.168.10.`:代表來自192.168.10.0/24網(wǎng)段的主機
- `192.168.10.20`:代表僅允許某個特定主機進行訪問
5. 啟動和啟用NFS服務 在啟動NFS服務之前,需要重啟并啟用rpcbind服務程序,因為NFS依賴于RPC服務進行端口信息的傳輸
可以使用以下命令: 【root@nfs-server~】# systemctl restart rpcbind.service 【root@nfs-server~】# systemctl enable rpcbind.service 然后啟動并啟用NFS服務: 【root@nfs-server~】# systemctl enable --now nfs-server.service 6. 檢查NFS服務狀態(tài) 使用以下命令檢查NFS服務的狀態(tài): 【root@nfs-server~】# systemctl status nfs-server 7. 配置防火墻(如果需要) 如果啟用了防火墻,需要允許NFS相關(guān)的端口通過
NFS服務通常使用2049端口,但還有其他隨機端口用于數(shù)據(jù)傳輸
可以使用以下命令允許這些端口: 允許NFS服務端口 【root@nfs-server~】# firewall-cmd --permanent --add-service=nfs 允許RPC服務端口 【root@nfs-server~】# firewall-cmd --permanent --add-service=rpc-bind 允許掛載服務端口 【root@nfs-server~】# firewall-cmd --permanent --add-service=mountd 重新加載防火墻配置 【root@nfs-server~】# firewall-cmd --reload 8. 客戶端配置 在NFS客戶端上,需要創(chuàng)建掛載點,并使用`mount`命令將遠程NFS目錄掛載到本地
例如,將NFS服務器的`/nfsfile`目錄掛載到本地的`/mnt/nfsfile`目錄: 【root@nfs-client~】# mkdir /mnt/nfsfile 【root@nfs-client~】# mount -t nfs nfs-server-ip:/nfsfile /mnt/nfsfile 其中,`nfs-server-ip`是NFS服務器的IP地址
可以使用以下命令查看掛載情況: 【root@nfs-client~】# df -h 應該能夠看到類似以下的輸出,顯示NFS掛載的目錄: nfs-server-ip:/nfsfile 10G 2.5G 7.5G 25% /mnt/nfsfile 三、NFS配置文件的參數(shù)詳解 `/etc/exports`文件用于配置NFS服務的共享目錄和權(quán)限
以下是一些常用的參數(shù): - `rw`:讀寫權(quán)限
- `ro`:只讀權(quán)限
- `sync`:同步寫入,確保數(shù)據(jù)寫入硬盤后才返回成功
- `async`:異步寫入,數(shù)據(jù)可以延遲寫入硬盤
- `root_squash`:將客戶端的root用戶映射為NFS服務器的匿名用戶(通常是nobody)
- `no_root_squash`:不將客戶端的root用戶映射為匿名用戶,而是保持root權(quán)限
- `subtree_check`:檢查子目錄的權(quán)限變化,性能較低
- `no_subtree_check`:不檢查子目錄的權(quán)限變化,性能較高
四、總結(jié) 通過本文的介紹,我們了解了NFS的基本原理和配置步驟
NFS作為一種強大的網(wǎng)絡文件系統(tǒng)協(xié)議,能夠?qū)崿F(xiàn)