NFS使用案例(centos7)vim
環境:服務端10.220.5.66 客戶端:10.220.5.65centos
實現步驟
一:安裝nfs的服務端(nfs rpc)服務器
[root@66 ~]# yum install nfs-utils rpcbind -y
(客戶端僅僅須要安裝nfs,不須要配置和啓動)網絡
二,啓動服務app
[root@66 ~]# systemctl start rpcbind
[root@66 ~]# systemctl start nfs
三,檢查rpc中註冊使用的端口信息(服務器端)異步
格式:rpcinfo -p 主機地址 <<<這裏指定得是註冊了NFS端口號async
[root@66~]# rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 58898 status 100024 1 tcp 47099 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 57332 nlockmgr 100021 3 udp 57332 nlockmgr 100021 4 udp 57332 nlockmgr 100021 1 tcp 33277 nlockmgr 100021 3 tcp 33277 nlockmgr 100021 4 tcp 33277 nlockmgr
說明:tcp
rpc端口號爲111,剩下的爲nfs啓用的端口號ide
補充:錯誤案例性能
[root@66 ~]# rpcinfo -p localhost rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
說明rpcbind沒有服務沒有啓動,若是rpcbind服務啓動了仍然報這個錯,說明多是防火牆沒關,也有可能防火牆開了配置出問題了,須要修改防火牆規則,讓訪問111端口的數據經過
注意:
rpc服務的端口是111
四,安裝軟件(客戶端,只須要安裝rpcbind)
[root@65~]# yum install -y rpcbind
五,啓動服務(客戶端)
[root@65 ~]# systemctl start rpcbind
六,測試是否能夠訪問nfs主機上的rpc服務進程(客戶端)
[root@65 ~]# rpcinfo -p 10.220.5.66 program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 58898 status 100024 1 tcp 47099 status 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 57332 nlockmgr 100021 3 udp 57332 nlockmgr 100021 4 udp 57332 nlockmgr 100021 1 tcp 33277 nlockmgr 100021 3 tcp 33277 nlockmgr 100021 4 tcp 33277 nlockmgr
若果訪問失敗有如下可能:
1:服務端rpc服務沒開啓,或客戶端服務沒開啓
2:防火牆沒關閉
第五步:建立共享目錄(客戶端)
[root@66~]# mkdir /data
[root@66 ~]# vim /etc/exports
/data 10.220.5.0/24(rw,sync)
重啓nfs
[root@66 ~]# systemctl restart nfs
查看所共享的目錄(服務端)
格式:showmonut -e nfs的服務器ip地址
[root@66~]# showmount -e 127 Export list for 127.0.0.1: /data 10.220.5.0/24
查看所共享的目錄(客戶端)
[root@65DRslave ~]# showmount -e 10.220.5.66
Export list for 10.220.5.66: <<<服務端ip
/data 10.220.5.0/24
六,確保服務端客戶端的時間一致(在生產環境中使用時間服務器保證時間同步,此次試驗使用date命令同步)
[root@66~]# date 111016362018.00 Sat Nov 10 16:36:00 CST 2018 <<<服務端
[root@65 ~]# date 111016362018.00 Sat Nov 10 16:36:00 CST 2018 <<<客戶端
七,在客戶端掛載服務端所共享的目錄(客戶端)
格式:mount -t nfs nfs的ip地址:共享目錄 掛載點
[root@65 ~]# mount -t nfs 10.220.5.66:/data /nfs
八,查看是否掛載成功(客戶端)
[root@65 ~]# mount
10.220.5.66:/data on /nfs type nfs4 (rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.220.
5.65,local_lock=none,addr=10.220.5.66)
說明掛載成功
九,進入/nfs目錄中,是否能建立目錄
[root@65 nfs ~]# mkdir a mkdir: cannot create directory ‘a’: Permission denied <<<發現沒有權限
因爲服務器端的/data目錄是掛載到客戶端/nfs目錄下,在/nfs目錄下建立目錄或者文件是是以root的身份,也有多是普通用戶,當
在/nfs目錄中建立文件或者文件時,是調用的服務器端的nfs,將所建立的目錄或者文件寫入到服務器端/data目錄中的,是否能寫入是有nfs決定了客戶端是否有權限在/data目錄中寫東西,要想能寫入東西,須要在服務端修改/data目錄的權限
十,修改服務端權限
[root@66~]# chmod 777 /data <<<服務端 在工做中不要付權777,由於權限太大了,很危險
十一,在客戶端再次建立目錄,看看是否有權限
[root@65 ~]# mkdir abc <<<客戶端
發現有權限能建立了
配置文件:
/etc/exports: nfs主配置文件,用於共享目錄,同時指定權限
/va/lib/nfs/etab: 這個記錄了所共享的目錄的詳細權限屬性信息
/usr/sbin/shoumount:查看nfs所共享的目錄列表
/usr/sbin/rpcinfo: 查看rpc中註冊的端口信息
/usr/sbin/exportfs :管理nfs的命令
實現相似於reload的方式:exportfs -rv
/etc/exports說明
nfs主配置文件,共享本地目錄給其餘主機
一行是一個共享的目錄
格式:
[共享目錄] [主機1(參數1,參數2....)] [主機1(參數1,參數2....)]
例子:
/data 10.220.5.0/25(rw) 192.168.6.0/24(ro)
主機的表示方式
1.單一主機:好比:192.168.6.22
2.整個網絡: 好比:192.168.6.0/24
3.主機名
4.一個域:好比:baidu.com
參數的表示方式
ro:只讀
rw:讀寫
sync:同步寫入
async:異步寫入
secure:限制客戶端只能使用1024如下的端口連接nfs
insecure:運行nfs啓動的時候用1024以上的端口
wdelay:多個用戶要在nfs中進行寫入操做的話,等有了多個寫操做之後才一併執行(爲了提高磁盤的IO性能)
no_wdelay:當用戶在nfs執行寫入的時候,馬上執行寫入(當設置了aysnc,就不須要這個了)
hide:隱藏共享目錄中的子目錄
nohide:不隱藏
all_squash:不管你以哪一個用戶身份來使用nfs,都將用戶身份轉換爲一個特定的用戶
no_root_squash:若是你訪問nfs的時候不是root身份,就將用戶身份轉換爲一個特定的用戶
root_squash:若是你訪問nfs的時候是root身份,就將用戶身份轉換爲一個特定的用戶
anonuid & anongid:指定所所要轉換成的那個用戶的uid 和 gid
注意:
shoumount nfs-utils的的一個組件,若是客戶端須要使用showmount,那麼須要安裝nfs-utils
nfs的自動掛載
掛載nfs的命令寫入在/etc/rc.local中
注意:
通常的設備,在實現開機自動掛載是時候,建議寫在/etc/fstab中,可是nfs分區是不能寫在/etc/fstab中,由於在系統啓動過程當中是先讀取/etc/fstab掛載分區,而後在掛載網絡模塊
查看詳細掛載選項/proc/mounts
選項
hard:當RPC下線的時候,客戶端沒法聯繫大服務器,則會連續發請求,知道能聯繫到服務器
soft:當RPC下線的時候,客戶端沒法聯繫大服務器,則會連續發請求,知道能聯繫到服務器
fg:前臺,在掛載的時候,若是沒法聯繫到服務器端,會重複嘗試,一直到掛載成功(前臺進行)
bg:後臺,在掛載的時候,若是沒法聯繫到服務器端,會重複嘗試,一直到掛載成功(後臺進行)
rsize=#: 設置使用nfs進行讀操做的時候,每次傳輸的吞吐塊的大小
wsize=#: 設置使用nfs進行讀操做的時候,每次傳輸的吞吐塊的大小