Ubuntu NFS 服务器和客户端挂载详解
1. NFS 基本介紹
1.1 NFS 簡介
NFS 是 Network File System 的縮寫,即網絡文件系統。一種使用于分散式文件系統的協定,由 Sun 公司開發,于1984年向外公布。功能是讓客戶端通過網絡訪問不同主機上磁盤里的數據,主要用在類 Unix 系統上實現文件共享的一種方法。NFS 在文件傳送或信息傳送過程中依賴于RPC協議。
1.2 NFS服務需要安裝的軟件
nfs-utils-*:包括基本的NFS命令與監控程序rpcbind-*:支持安全NFS RPC服務的連接
注:通常情況下,是作為系統的默認包安裝 CentOS6.* 之前 rpcbind 叫portmap 。
1.3 NFS系統守護進程
-
nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄服務器。 -
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS服務器后,在使用NFS服務所提供的文件前,還必須通過文件使用權限的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端權限。 -
rpcbind:主要功能是進行端口映射工作。當客戶端嘗試連接并使用RPC服務器提供的服務(如NFS服務)時,rpcbind會將所管理的與服務對應的端口提供給客戶端,從而使客戶可以通過該端口向服務器請求服務。
2. NFS的常用目錄
-
/etc/exportsNFS服務的主要配置文件 -
/usr/sbin/exportfsNFS服務的管理命令 -
/usr/sbin/showmount客戶端的查看命令 -
/var/lib/nfs/etab記錄NFS分享出來的目錄的完整權限設定值 -
/var/lib/nfs/xtab記錄曾經登錄過的客戶端信息
NFS 服務的配置文件為 /etc/exports ,這個文件是 NFS 的主要配置文件,不過系統并沒有默認值,所以這個文件不一定會存在,可能要使用 vim 手動建立,然后在文件里面寫入配置內容。
3. /etc/exports文件內容格式
<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]
-
輸出目錄:輸出目錄是指
NFS系統中需要共享給客戶機使用的目錄 -
客戶端:客戶端是指網絡中可以訪問這個
NFS輸出目錄的計算機- 客戶端常用的指定方式:
- 指定ip地址的主機:192.168.0.200
- 指定子網中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
- 指定域名的主機:david.bsmart.cn
- 指定域中的所有主機:*.bsmart.cn
- 所有主機:*
-
選項:選項用來設置輸出目錄的訪問權限、用戶映射等。
NFS主要有3類選項:
-
訪問權限選項:
設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw -
用戶映射選項:
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組nfsnobody;
no_all_squash:與all_squash取反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,并指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx); -
其它選項
secure:限制客戶端只能從小于 1024 的tcp/ip端口連接nfs服務器(默認設置);
insecure:允許客戶端從大于 1024 的tcp/ip端口連接服務器;
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
-
示例說明
sudo vi /etc/exports/data *(rw,sync,no_subtree_check,no_root_squash)
將 NFS 服務器的 /data 目錄共享給所有主機,rw 權限。
/root/share/ 192.168.1.2(rw,insecure,sync,all_squash) 表示共享服務器上的/root/share/目錄只有192.168.1.2主機可以訪問,且有讀寫權限;此主機用任何身份訪問時,將客戶機的用戶都映射成服務器上的匿名用戶(all_squash),相當于在服務器上用nobody用戶訪問該目錄(若客戶機要在該共享目錄上保存文件(即寫操作),則服務器上的nobody用戶對該目錄必須有寫的權限)
/home/ylw/ .test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目錄,.test.com域中所有的主機都可以訪問該目錄,且有讀寫權限
/home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目錄/home/share/,*.test.com域中的所有主機都可以訪問,但只有只讀的權限,所有用戶都映射成服務器上的uid為zh3、gid為wa4的用戶
4. 服務器端
4.1 安裝 NFS 服務
sudo apt install nfs-kernel-server
apt 會自動安裝 nfs-common 、rpcbind 等13個軟件包。
4.2 編寫配置文件
sudo vi /etc/exports/data *(rw,sync,no_subtree_check,no_root_squash)
將 NFS 服務器的 /data 目錄共享給所有主機,rw 權限。
4.3 創建共享目錄
sudo mkdir -p /data
4.4 重啟 nfs 服務
sudo service nfs-kernel-server restart
4.5 常用命令
- 顯示已經
mount到本機nfs目錄的客戶端機器
sudo showmount -e localhost
- 查看本機共享的文件或目錄
sudo exportfs -rv
如果我們在啟動了 NFS 之后又修改了 /etc/exports ,我們不需要重啟 NFS 服務,可以用 exportfs 命令來使改動立刻生效,該命令格式如下:
exportfs [-aruv]
-a 全部掛載或卸載 /etc/exports中的內容
-r 重新讀取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸載單一目錄(和-a一起使用為卸載所有/etc/exports文件中的目錄)
-v 在export的時候,將詳細的信息輸出到屏幕上。
具體例子:
exportfs -au 卸載所有共享目錄
exportfs -rv 重新共享所有目錄并輸出詳細信息
- 查看
NFS的運行狀態
sudo nfsstat
- 查看
rpc執行信息
sudo rpcinfo
5. 客戶端
5.1 安裝客戶端工具
sudo apt install nfs-common
apt 會自動安裝 nfs-common 、rpcbind 等12個軟件包。
5.2 查看 NFS服務器上的共享目錄
顯示指定的(192.168.3.1)NFS 服務器上 export 出來的目錄
sudo showmount -e 192.168.3.1
5.3 創建本地掛載目錄
sudo mkdir -p /mnt/data
5.4 掛載共享目錄
將 NFS 服務器 192.168.3.1上的 /data 目錄,掛載到本地的 /mnt/ 目錄下
sudo mount -t nfs 192.168.3.1:/data /mnt/data
采用這種方式掛載,系統重啟之后不會自動掛載。
5.5 卸載共享目錄
卸載客戶端的掛載目錄,在客戶端執行以下命令
umount /mnt/
5.6 共享目錄的自動掛載
把掛載信息寫入到 /etc/fstab 文件中
sudo vim /etc/fstab
192.168.3.1:/data /nfs nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
# 或者
192.168.3.1:/data /nfs nfs defaults 0 0
5.7 更新掛載
sudo mount -a
參考:
http://www.szliwen.com/802.html
https://blog.csdn.net/qq_36357820/article/details/78488077
總結
以上是生活随笔為你收集整理的Ubuntu NFS 服务器和客户端挂载详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国完全生物降解塑料
- 下一篇: 2022-2028年中国露天采矿行业调查