1、nfs 進程
[root@nfsserver ~]# ps -ef|egrep "nfs|rpc" rpcuser 963 1 0 17:31 ? 00:00:00 rpc.statd -->檢查文件一致性 root 1032 2 0 17:31 ? 00:00:00 [rpciod/0] rpc 1694 1 0 18:05 ? 00:00:00 rpcbind -->rpc服務 root 1775 1 0 18:06 ? 00:00:00 rpc.mountd -->權限驗證等 root 1781 2 0 18:06 ? 00:00:00 [nfsd4] root 1782 2 0 18:06 ? 00:00:00 [nfsd4_callbacks] root 1783 2 0 18:06 ? 00:00:00 [nfsd] root 1784 2 0 18:06 ? 00:00:00 [nfsd] -->nfs主進程 root 1785 2 0 18:06 ? 00:00:00 [nfsd] root 1786 2 0 18:06 ? 00:00:00 [nfsd] root 1787 2 0 18:06 ? 00:00:00 [nfsd] -->nfs主進程 root 1788 2 0 18:06 ? 00:00:00 [nfsd] root 1789 2 0 18:06 ? 00:00:00 [nfsd] -->nfs主進程 root 1790 2 0 18:06 ? 00:00:00 [nfsd] root 1813 1 0 18:06 ? 00:00:00 rpc.idmapd -->權限管理進程 root 2054 1402 0 19:14 pts/0 00:00:00 egrep nfs|rpc
2、/etc/exports
NFS 服務主配置文件,配置NFS具體共享服務的地點,默認內容為空,以行為單位。
3、/usr/sbin/exportfs
NFS服務的管理命令。例如:可以加載NFS配置生效,還可以直接配置NFS共享目錄,即無需配置 /etc/exports 實現共享。
exportfs -rv -- 加載配置生效,等價於重啟 /etc/init.d/nfs reload
exportfs 不但可以加載配置生效,也可以通過命令直接共享目錄,越過 /etc/exports,但是重啟失效。
4、/usr/sbin/showmount
常用來在客戶端,查看NFS配置及掛載結果的命令
配置 nfsserver,分別在服務端以及客戶端查看掛載情況。
5、/var/lib/nfs/etab
NFS配置文件的完整參數設定的文件(有很多沒有配置但是默認就有的NFS參數)
6、nfs 參數:
(1)rw -- 讀寫
(2)sync -- 同步,同時將數據寫入到內存與硬盤中,保證不丟失數據(發送端等待客戶端連接,例如兩個人手把手交接物品)
(3)async -- 異步,優先將數據寫入到內存,然后再寫入到內存,這樣效率更高,但可能會丟失數據(例如:一人將物品放在某處,另一個人再去取)
(4)同步異步的對比:
異步(async):將東西寫到內存里,速度快,容易丟數據。隊列的概念。
同步(sync):客戶端寫到服務端的磁盤,速度慢,但是寫到磁盤里,關機數據也不丟失。
(5)ro -- 只讀 -- read only
(6)all_squash:
不管訪問NFS server共享目錄的用戶身份如何,它的權限都將被壓縮成匿名用戶,同時它的UID和GID都會變成nobody或nfsnobody賬號身份。
(7)root_squash:當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶。
(8)no_root_squash:當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員。
配NFS生產重要技巧:
①確保所有服務器對NFS共享目錄具備相同的權限
a、all_squash 把所有客戶端都壓縮成匿名用戶
b、就是anonuid,anongid指定的UID和GID的用戶
②所有的客戶端和服務端都需要有一個相同的UID和GID的用戶,即nfsnobody(UID必須相同)
(7)annonuid and anongid
指定具體的UID和GID
7、實現當對台客戶端同時掛一台NFS Server時,無論從哪個客戶端寫入數據,其他客戶端同樣也可以讀寫,即讓所有 nfs 客戶端寫入到 Nfs Server 的文件或目錄在Nfs Server 上的用戶和組都是同一個名稱 nfsusers。
三台機器:兩台客戶端,一台服務端。
(1)由於客戶端在添加文件的時候,默認所屬的用戶和組為nfsnobody,要想客戶端在操作的時候將用戶和組屬於nfsusers,必須在每台機器上都添加該用戶和組。
useradd -u 555 nfsusers #將每台機器都添加該用戶和組,UID和 GID 為555

(2)在配置文件 /etc/exports 中將服務端的目錄 /data 進行共享,一些權限和限制可在 /var/lib/nfs/etab 中進行查看,小括號中的內容均是權限或限制。

(3)共享目錄 /data 限制UID和GID為555,即用戶和用戶組為nfsusers

(4)此時用戶和用戶組是555,如果客戶端沒有nfsusers這個用戶,那么客戶端看到的就是555了,所以要把555對應的用戶和組給 /data 目錄。
chown -R nfsusers.nfsusers /data #改變/data 目錄為 nfsusers的用戶和組

(5)掛載,服務端啟動rpcbind和nfs服務,在客戶端啟動rpcbind服務后,進行操作。
mount -t nfs 192.168.3.137:/data /mnt #cilent01 --將服務器下的/data 掛載到本地/mnt mount -t nfs 192.168.3.137:/data /mnt #client02 --
server服務器的 /data 目錄:

client01 添加一個 network.gz

在client02上查看添加后的內容:

已經同步:
在client02上將所有刪除:

在client01上查看

在server上查看

