|
閱讀目錄
第1章 NFS介紹1.1 NFS服務(wù)內(nèi)容的概述□ RPC服務(wù)知識(shí)概念介紹說明,以及RPC服務(wù)存在價(jià)值(必須理解掌握) □ NFS服務(wù)工作原理講解(必須理解掌握) □ NFS共享文件系統(tǒng)使用原理講解(必須理解掌握) □ NFS服務(wù)配罝文件exports編寫格式說明(必須理解掌握) 1.2 NFS是什么NFS(Network File System)即網(wǎng)絡(luò)文件系統(tǒng) 它的主要功能是通過網(wǎng)絡(luò)(一般是局域網(wǎng))讓不同的主機(jī)系統(tǒng)之間可以共享文件或目錄。 分布式文件系統(tǒng)Moosefs(mfs)\glusterFS 1.2.1 NFS的qudiannfs屬于本地文件存儲(chǔ)服務(wù) 缺點(diǎn)一: winndows上無法使用 缺點(diǎn)二: 在高并發(fā)場(chǎng)景,以及存儲(chǔ)量比較高的場(chǎng)景,對(duì)數(shù)據(jù)安全性要求比較高場(chǎng)景 需要采用分布式儲(chǔ)存(mfs FastDFS) 分布式文件系統(tǒng):無法在服務(wù)器中看到真實(shí)的文件信息 1.2.2 實(shí)現(xiàn)Windows與linux系統(tǒng)文件數(shù)據(jù)共享方法a.ftp(ftp服務(wù)部署) b.samba服務(wù) 1.3 NFS共享網(wǎng)絡(luò)文件系統(tǒng)企業(yè)應(yīng)用主要用于存儲(chǔ)web服務(wù)器上用戶上傳的數(shù)據(jù)信息,圖片 附件 頭像 視頻 音頻 1.4 NFS文件系統(tǒng)存在意義
實(shí)現(xiàn)數(shù)據(jù)共享,數(shù)據(jù)統(tǒng)一一致 1.4.1 實(shí)現(xiàn)的不同方法軟件實(shí)現(xiàn): 本地文件系統(tǒng)NFS 分布式文件系統(tǒng) mfs 硬件實(shí)現(xiàn): IBM (服務(wù)器 小型機(jī) 大型機(jī) 存儲(chǔ) DS V7000 V5000) Oracle EMC = 去IOE 回到頂部
1.5 NFS 網(wǎng)絡(luò)文件系統(tǒng)工作方式在nfs服務(wù)端創(chuàng)建共享目錄 通過mount 網(wǎng)路掛載,將NFS客戶端本地目錄掛載到NFS服務(wù)端共享目錄上 NFS客戶端掛載目錄上創(chuàng)建、刪除、查看數(shù)據(jù)操作,等價(jià)于在服務(wù)端進(jìn)行的創(chuàng)建、刪除、查看數(shù)據(jù)操作
如圖10-5所示,在 NFS服務(wù)器端設(shè)置好一個(gè)共享目錄 /video后,其他有權(quán)限訪問 NFS服務(wù)器端的客戶端都可以將這個(gè)共享目錄 /video掛載到客戶端本地的某個(gè)掛載點(diǎn)(其實(shí)就是一個(gè)目錄,這個(gè)掛載點(diǎn)目錄可以自己隨意指定),圖10-5中的兩個(gè) NFS客戶端本地的掛載點(diǎn)分別為/ v/video和/video ,不同客戶端的掛載點(diǎn)可以不相同。 客戶端正確掛載完畢后,就可以通過 NFS客戶端的掛載點(diǎn)所在的/v/video或 /video目錄查看 到 NFS服務(wù)器端 /video共享出來的目錄下的所有數(shù)據(jù)。在客戶端上查看時(shí) ,NFS服務(wù)器端的 /video目錄就相當(dāng)于客戶端本地的磁盤分區(qū)或目錄,幾乎感覺不到使用上的區(qū)別,根據(jù) NFS服務(wù)器端授予 的 NFS共享權(quán)限以及共享目錄的本地系統(tǒng)權(quán)限,只要在指定的 NFS客戶端操作掛載/ v/video或/video的目錄,就可以將數(shù)據(jù)輕松地存取到NFS服務(wù)器端上的/video目錄中了。 1.6 NFS網(wǎng)絡(luò)文件系統(tǒng)重點(diǎn)要了解兩個(gè)重要服務(wù)RPC服務(wù) NFS服務(wù) 1.6.1 NFS工作流程圖
1.6.2 RPC服務(wù)工作原理
1.6.3 NFS詳細(xì)的訪問流程
當(dāng)訪問程序通過NFS客戶端向NFS服務(wù)器存取文件時(shí),其請(qǐng)求數(shù)據(jù)流程大致如下: 01.首先用戶訪間網(wǎng)站程序,由程序在NFS客戶端上發(fā)出存取NFS文件的請(qǐng)求,這時(shí)NFS客戶端(即執(zhí)行程序的服務(wù)器)的RPC服務(wù)(rpcbind服務(wù))就會(huì)通過網(wǎng)絡(luò)向NFS服務(wù)器端的RPC服務(wù)(rpcbind服務(wù))的111端口發(fā)出NFS文件存取功能的詢間請(qǐng)求. 02.NFS服務(wù)器端的RPC服務(wù)(rpcbind服務(wù))找到對(duì)應(yīng)的已注冊(cè)的NFS端口后,通知NFS客戶端的RPC服務(wù)(rpcbind服務(wù))。 03.此時(shí)NFS客戶端獲取到正確的端口,并與NFS daemon聯(lián)機(jī)存取數(shù)據(jù) 04.NFS客戶端把數(shù)據(jù)存取成功后,返回給前端訪間程序,告知用戶存取結(jié)果,作為網(wǎng)站用戶,就完成了一次存取操作。 因?yàn)?/span>NFS的各項(xiàng)功能都需要向RPC服務(wù)(rpcbind服務(wù))注冊(cè),所以只有RPC服務(wù)才能獲取到NFS服務(wù)的各項(xiàng)功能對(duì)應(yīng)的端口號(hào)(port number)、PID、NFS在主機(jī)所監(jiān)聽的IP等信息,而NFS客戶端也只能通過向RPC服務(wù)詢問才能找到正確的端□。也就是說,NFS需要有RPC服務(wù)的協(xié)助才能成功對(duì)外提供服務(wù)。從上面的描述,我們不難推斷,無論是NFS客戶端還是NFS服務(wù)器端,當(dāng)要使用NFS時(shí),都需要首先啟動(dòng)RPC服務(wù),NFS服務(wù)必須在RPC服務(wù)啟動(dòng)之后啟動(dòng),客戶端無需啟動(dòng)NFS服務(wù),但需要啟動(dòng)RPC服務(wù)。 第2章 實(shí)踐操作NFS 服務(wù)2.1 進(jìn)行服務(wù)器架構(gòu)規(guī)劃NFS服務(wù)器部署角色IP
2.2 NFS服務(wù)端部署過程2.2.1 第一個(gè)里程碑-確認(rèn)軟件是否已經(jīng)安裝,安裝NFS服務(wù)相關(guān)軟件rpm -qa|grep nfs rpm -qa|grep rpc 安裝rpcbind nfs-utils服務(wù)程序,并進(jìn)行驗(yàn)證安裝是否成功 yum install -y nfs-utils rpcbind rpm -qa nfs-utils rpcbind
2.2.2 第二個(gè)里程碑-編寫nfs配置文件nfs配置文件默認(rèn)存在/etc/exports vim /etc/exports #share /data by oldboy for share at 20170220 /data 172.16.1.0/24(rw,sync) /etc/exports文件說明: 第一部分:/data --指定共享目錄信息 第二部分:172.16.1.0/24 --指定了一個(gè)網(wǎng)段信息,表示允許指定的網(wǎng)段主機(jī)掛載到我本地的共享目錄上 第三部分:(rw,sync) --表示定義共享參數(shù)信息, rw 表示讀寫,對(duì)共享目錄設(shè)置的權(quán)限 sync 同步,數(shù)據(jù)會(huì)先寫入到NFS服務(wù)器內(nèi)存中,會(huì)立刻同步到磁盤里面==直接存儲(chǔ)硬盤中 2.2.3 第三個(gè)里程碑:創(chuàng)建共享目錄,進(jìn)行權(quán)限設(shè)定mkdir /data -p chown -R nfsnobody.nfsnobody /data 說明: NFS共享目錄管理用戶為nfsnobody,此用戶不用創(chuàng)建,安裝nfs軟件時(shí)會(huì)自動(dòng)創(chuàng)建 2.2.4 第四個(gè)里程碑:?jiǎn)?dòng)服務(wù)(注意順序)首先,啟動(dòng)rpc服務(wù) /etc/init.d/rpcbind start 其次,啟動(dòng)nfs服務(wù) /etc/init.d/nfs start rpcbind服務(wù)啟動(dòng)信息查看 [root@nfs01 ~]# ps -ef|grep rpcbind rpc 4050 1 0 10:55 ? 00:00:00 rpcbind root 4054 3878 0 10:55 pts/1 00:00:00 grep --color=auto rpcbind [root@nfs01 ~]# netstat -lntup|grep 111 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 4050/rpcbind tcp 0 0 :::111 :::* LISTEN 4050/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 4050/rpcbind udp 0 0 :::111 :::* 4050/rpcbind [root@nfs01 ~]# 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 nfs啟動(dòng)后查看信息 [root@nfs01 ~]# 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 28467 status 100024 1 tcp 56269 status 100011 1 udp 875 rquotad 100011 2 udp 875 rquotad 100011 1 tcp 875 rquotad 100011 2 tcp 875 rquotad 100005 1 udp 32886 mountd 100005 1 tcp 6154 mountd 100005 2 udp 38339 mountd 100005 2 tcp 60288 mountd 100005 3 udp 49824 mountd 100005 3 tcp 24427 mountd 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 2 tcp 2049 nfs_acl 100227 3 tcp 2049 nfs_acl 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 2 udp 2049 nfs_acl 100227 3 udp 2049 nfs_acl 100021 1 udp 61803 nlockmgr 100021 3 udp 61803 nlockmgr 100021 4 udp 61803 nlockmgr 100021 1 tcp 6064 nlockmgr 100021 3 tcp 6064 nlockmgr 100021 4 tcp 6064 nlockmgr 2.2.5 到此服務(wù)端部署配置完成[root@nfs01 ~]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /data 172.16.1.0/24 NFS服務(wù)開啟后,默認(rèn)的參數(shù)文件位置,注意:修改此文件,對(duì)nfs服務(wù)沒有任何影響[root@nfs01 ~]# cat /var/lib/nfs/etab /data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,all_squash) 2.3 NFS 客戶端部署2.3.1 第一個(gè)里程碑:確認(rèn)軟件有沒有安裝,進(jìn)行nfs rpc 服務(wù)軟件安裝部署yum install rpcbind nfs-utils -y 2.3.2 第二個(gè)里程碑:?jiǎn)?dòng)服務(wù)提示: rpcbind和nfs軟件都可以不啟動(dòng) 2.3.3 第三個(gè)里程碑: 檢查NFS服務(wù)端是否有可以進(jìn)行掛載的目錄[root@nfs01 ~]# rpm -qf `which showmount` nfs-utils-1.2.3-75.el6.x86_64 說明:showmount使用,需要安裝nfs-utils軟件 2.3.4 第四個(gè)里程碑:進(jìn)程nfs客戶端掛載mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /data 172.16.1.0/24 [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt 說明: 如果nfs軟件不安裝 a 無法使用showmount 命令 b 客戶端無法識(shí)別nfs 文件系統(tǒng)類型 2.3.5 第五個(gè)里程碑: 進(jìn)行檢查測(cè)試[root@backup ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 19G 1.5G 17G 9% / tmpfs 238M 0 238M 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot 172.16.1.31:/data 19G 1.5G 17G 9% /mnt 【測(cè)試】本地nfs客戶端 進(jìn)行增刪改數(shù)據(jù) 等價(jià)于 nfs服務(wù)端共享目錄操作 [root@backup mnt]# echo "test123">test.txt [root@backup mnt]# ll test.txt -rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt [root@nfs01 data]# cat test.txt test123 第3章 知識(shí)深入3.1 NFS服務(wù)相關(guān)進(jìn)程信息3.1.1 簡(jiǎn)略說明rpcbind rpc啟動(dòng)進(jìn)程 主進(jìn)程 rpc state 檢查數(shù)據(jù)存儲(chǔ)的一致性 rpc.rquotad 磁盤配額 rpc.mountd 權(quán)限管理驗(yàn)證 nfsd NFS主進(jìn)程 rpc.idmapd 用戶壓縮映射 3.1.1 進(jìn)程/服務(wù) 詳細(xì)說明
3.2 /etc/exports配置文件說明3.2.1 /etc/exports文件說明□ NFS共享目錄: 為 NFS服務(wù)器端要共享的實(shí)際目錄,要用絕對(duì)路徑,如 (/data )。注意共享目錄的本地權(quán)限,如果需要讀寫共享,一定要讓本地目錄可以被 NFS客戶端的用戶 (nfsnobody)讀寫。 □ NFS客戶端地址: 為NFS服務(wù)器端授權(quán)的可訪問共享目錄的NFS客戶端地址,可以為單獨(dú)的IP地址或主機(jī)名、域名等,也可以為整個(gè)網(wǎng)段地址。還可以用來匹配所有客戶端服務(wù)器,這里所謂的客戶端一般來說是前端的業(yè)務(wù)的業(yè)務(wù)服務(wù)器,例如:web服務(wù)。 □權(quán)限參數(shù)集 對(duì)授權(quán)的NFS客戶端的訪問權(quán)限設(shè)置。 nfs權(quán)限(共享目錄\借給你手機(jī))nfs配置的/ etc/exports /data 172.16.1.0/24(rw) 本地文件系統(tǒng)權(quán)限(\手機(jī)密碼不告訴你)掛載目錄的權(quán)限rwxr- xr-x root root/data 3.2.2 指定 NFS客戶端地址的配置詳細(xì)說明
3.2.3 常見案例
3.2.4 nfs客戶端訪問服務(wù)原理
3.2.5 nfs服務(wù)訪問原理
客戶端(無論用什么用戶訪問)---門---服務(wù)端(nfsnobody) rpc.idmapd 3.3 NFS服務(wù)端設(shè)置rpcbind nfs服務(wù)開機(jī)自啟動(dòng)[root@nfs01 ~]# chkconfig rpcbind on [root@nfs01 ~]# chkconfig nfs on [root@nfs01 ~]# chkconfig |egrep "rpcbinf|nfs" nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off 3.4 NFS配置文件編寫說明3.4.1 官方舉例配置EXAMPLE # sample /etc/exports file / master(rw) trusty(rw,no_root_squash) /projects proj*.local.domain(rw) /usr *.local.domain(ro) @trusted(rw) /home/joe pc001(rw,all_squash,anonuid=150,anongid=100) /pub *(ro,insecure,all_squash) /srv/www -sync,rw server @trusted @external(ro) /foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw) /build buildhost[0-9].local.domain(rw) 3.4.2 /etc/exports文件配置格式為:NFS共享目錄 NFS客戶端地址1(參數(shù)1,參數(shù)2,...) 客戶端地址2(參數(shù)1,參數(shù)2,...) 或 NFS共享目錄 NFS客戶端地址1(參數(shù)1,參數(shù)2,...) NFS共享目錄 NFS客戶端地址2(參數(shù)1,參數(shù)2,...) 注意:nfs服務(wù)默認(rèn)沒有認(rèn)證機(jī)制,安全性不如分布式文件系統(tǒng) 只能通過控制配置文件中網(wǎng)絡(luò)地址信息,實(shí)現(xiàn)安全性 3.5 nfs配置參數(shù)說明
3.6 nfs配置參數(shù)實(shí)踐3.6.1 all_squash 參數(shù)實(shí)踐服務(wù)端修改配置 [root@nfs01 ~]# vim /etc/exports #share 20171013 hzs /data 172.16.1.0/24(rw,sync,all_squash) [root@nfs01 ~]# /etc/init.d/nfs reload 配置修改需要平滑重啟nfs 服務(wù) reload 平滑重啟 用戶的訪問體驗(yàn)更好 nfs客戶端進(jìn)行測(cè)試 [root@backup mnt]# touch test.txt [root@backup mnt]# ll -rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt [root@backup ~]# su - oldboy [oldboy@backup ~]$ cd /mnt/ [oldboy@backup mnt]$ touch oldboy1.txt [oldboy@backup mnt]$ ll -rw-rw-r-- 1 nfsnobody nfsnobody 0 Oct 13 12:34 oldboy1.txt -rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt 說明: 不論登入NFS的使用者身份為何,他的身份都會(huì)被壓縮成為匿名使用者,通常也就是nobody 3.6.2 no_all_squash,root_squash 參數(shù)實(shí)踐服務(wù)端修改配置 [root@nfs01 ~]# vim /etc/exports #share 20171013 hzs /data 172.16.1.0/24(rw,sync,no_all_squash,root_squash) [root@nfs01 ~]# /etc/init.d/nfs reload
客戶端卸載重新掛載(服務(wù)器配置修改后客戶端要重新掛載) [root@backup ~]# umount /mnt/ [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt nfs客戶端測(cè)試結(jié)果: [root@backup mnt]# touch test1.txt [root@backup mnt]# ll -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 12:37 test1.txt [root@backup mnt]# su - oldboy [oldboy@backup ~]$ cd /mnt/ [oldboy@backup mnt]$ touch oldboy1.txt touch: cannot touch `oldboy1.txt': Permission denied [oldboy@backup mnt]$ touch oldboy2.txt touch: cannot touch `oldboy2.txt': Permission denied 服務(wù)端驗(yàn)證: [root@nfs01 ~]# ll /data/ -rw-rw-r-- 1 nfsnobody nfsnobody 0 Oct 13 12:34 oldboy1.txt -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 12:37 test1.txt -rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt 說明: no_all_squash,是所有用戶都不進(jìn)行壓縮,所以oldboy用戶對(duì)nfs的目錄沒有寫入的權(quán)限(與nfs服務(wù)器的共享目錄權(quán)限有關(guān))。root用戶進(jìn)行壓縮所以可以寫入。 3.6.3 no_root_squash 參數(shù)實(shí)踐(root用戶不進(jìn)行壓縮映射)服務(wù)端修改配置 [root@nfs01 ~]# vim /etc/exports #share 20171013 hzs /data 172.16.1.0/24(rw,sync,no_root_squash) [root@nfs01 ~]# /etc/init.d/nfs reload 客戶端卸載重新掛載(服務(wù)器配置修改后客戶端要重新掛載) [root@backup ~]# umount /mnt/ [root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt nfs客戶端測(cè)試結(jié)果: [root@backup mnt]# touch root.txt [root@backup mnt]# ll total 16 -rw-rw-r-- 1 nfsnobody nfsnobody 0 Oct 13 12:34 oldboy1.txt -rw-r--r-- 1 root root 0 Oct 13 12:45 root.txt -rw-r--r-- 1 nfsnobody nfsnobody 0 Oct 13 12:37 test1.txt -rw-r--r-- 1 nfsnobody nfsnobody 8 Oct 13 11:28 test.txt 刪除測(cè)試 [root@backup mnt]# rm -rf ./* [root@backup mnt]# ll total 0 說明: 由于對(duì)root用戶沒有進(jìn)行壓縮,所以到達(dá)nfs服務(wù)器后依舊是root身份,root用戶默認(rèn)對(duì)所有的文件都有權(quán)限,所以可以寫入。(很危險(xiǎn)) 本文使用的系統(tǒng)版本為: CentOS Linux release 7.4.1708 (Core) 內(nèi)核版本為: 3.10.0-693.el7.x86_64 CentOS 7下NFS實(shí)例筆記 http://www./Linux/2016-12/138708.htm Linux下NFS搭建步驟 http://www./Linux/2016-08/134022.htm NFS文件系統(tǒng)詳解 http://www./Linux/2016-06/131940.htm 基于LAMP平臺(tái)利用NFS遠(yuǎn)程共享資源實(shí)現(xiàn)站點(diǎn)構(gòu)建 http://www./Linux/2016-07/133510.htm Linux NFS服務(wù)器的安裝與配置詳解 http://www./Linux/2017-01/139886.htm CentOS 7.2中NFS1.3 安裝 http://www./Linux/2016-10/135970.htm NFS網(wǎng)絡(luò)文件共享存儲(chǔ)服務(wù)器 http://www./Linux/2017-06/145030.htm Ubuntu 14.04安裝配置NFS服務(wù)器 http://www./Linux/2016-04/129848.htm Linux的NFS配置 http://www./Linux/2017-04/143135.htm 本文永久更新鏈接地址:http://www./Linux/2017-12/149493.htm |
|
|