1. 概念
1.1. NFS:Network File System,傳統意義上,文件系統在內核中實現。
1.2.?RPC:Remote Procedure Call protocol,遠程過程調用,函數調用(遠程主機上的函數)
1.3. 端口:2049/tcp, 2049/udp
2. 版本信息
2.1. OS:Red Hat Enterprise Linux Server release 7.3 (Maipo)
2.2. Kernel:3.10.0-514.el7.x86_64
2.3.?rpcbind.x86_64?0.2.0-38.el7
nfs-utils.x86_64?1:1.3.0-0.33.el7
3. 安裝:
3.1. OS安裝:略
3.2. nfs相關服務安裝:
nfs-utils.x86_64 ?包括基本的NFS命令與監控程序
rpcbind.x86_64 ?支持安全NFS RPC服務的連接
yum install?rpcbind nfs-utils
===============================================================================================================================================================================================Package Arch Version Repository Size =============================================================================================================================================================================================== Installing:nfs-utils x86_64 1:1.3.0-0.33.el7 ftp 377 krpcbind x86_64 0.2.0-38.el7 ftp 59 k Installing for dependencies:gssproxy x86_64 0.4.1-13.el7 ftp 87 kkeyutils x86_64 1.5.8-3.el7 ftp 54 klibbasicobjects x86_64 0.1.1-27.el7 ftp 25 klibcollection x86_64 0.6.2-27.el7 ftp 41 klibevent x86_64 2.0.21-4.el7 ftp 214 klibini_config x86_64 1.3.0-27.el7 ftp 63 klibnfsidmap x86_64 0.25-15.el7 ftp 47 klibpath_utils x86_64 0.2.1-27.el7 ftp 27 klibref_array x86_64 0.1.5-27.el7 ftp 26 klibtalloc x86_64 2.1.6-1.el7 ftp 34 klibtevent x86_64 0.9.28-1.el7 ftp 34 klibtirpc x86_64 0.2.4-0.8.el7 ftp 88 klibverto-tevent x86_64 0.2.5-4.el7 ftp 9.0 kquota x86_64 1:4.01-14.el7 ftp 179 kquota-nls noarch 1:4.01-14.el7 ftp 91 ktcp_wrappers x86_64 7.6-77.el7 ftp 79 kTransaction Summary =============================================================================================================================================================================================== Install 2 Packages (+16 Dependent packages)
3.3. 啟動服務
[root@hcchsnfs01 ~]# systemctl enable nfs-server.service Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. [root@hcchsnfs01 ~]# systemctl start nfs-server.service
3.4. 創建一塊磁盤
vgcreate vg_nfs /dev/sdb /dev/sdc lvcreate -n lv_nfs -l 100%FREE vg_nfs mkdir /data_nfs_tmp mkfs.xfs /dev/mapper/vg_nfs-lv_nfs mount /dev/mapper/vg_nfs-lv_nfs /data_nfs_tmp/
4. 配置
4.1. 服務器端
修改/etc/exports文件
/data_nfs_tmp 10.31.*(rw,no_root_squash)
4.2. 客戶端
?
mount 192.168.1.63:/home/test /mnt/
想要永久生效就修改/etc/fstab文件
?
5. 相關服務與配置文件詳解
?
5.1.?NFS系統守護進程
nfsd:它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄服務器;
mountd:它是RPC安裝守護進程,主要功能是管理NFS的文件系統。
當客戶端順利通過nfsd登錄NFS服務器后,在使用NFS服務所提供的文件前,還必須通過文件使用權限的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端權限。
rpcbind:主要功能是進行端口映射工作。
當客戶端嘗試連接并使用RPC服務器提供的服務(如NFS服務)時,rpcbind會將所管理的與服務對應的端口提供給客戶端,從而使客戶可以通過該端口向服務器請求服務。
5.2.?NFS server配置的常用目錄
/etc/exports #NFS服務的主要配置文件 /usr/sbin/exportfs #NFS服務的管理命令 /usr/sbin/showmount #客戶端的查看命令 /var/lib/nfs/etab # 記錄NFS分享出來的目錄的完整權限設定值 /var/lib/nfs/xtab #記錄曾經登錄過的客戶端信息。
5.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
指定域名的主機:nfs.cnhzz.com
指定域中的所有主機:*.cnhzz.com
所有主機:*
選項:
選項用來設置輸出目錄的訪問權限、用戶映射等。
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服務器也不檢查其父目錄的權限,這樣可以提高效率;
?
6. 命令
6.1. exportfs
如果我們在啟動了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的時候,將詳細的信息輸出到屏幕上。
?
6.2.?nfsstat
?
6.3.?rpcinfo
?
6.4.?showmount
-a 顯示已經于客戶端連接上的目錄信息
-e IP或者hostname 顯示此IP地址分享出來的目錄
?