1、NFS簡介html
NFS就是Network FileSystem的縮寫,最先以前是由Sun公司所發展出來的。他最大的功能就是能夠透過網絡,讓不一樣的機器、不一樣的操做系統能夠彼此分享個別檔案(share file)。這個NFS Server可讓你的PC來說網絡遠程的NFS主機分享的目錄,掛載到本地端的機器當中,因此,在本地端的機器看起來,那個遠程主機的目錄就好像是本身的一個磁盤分割操同樣。說白了,就至關於Windows下面的文件共享同樣.....web
NFS使用的協議是RPC(遠程過程調用)協議來協助NFS自己的運做! NFS本省的服務並無提供數據傳輸的協議,可是NFS卻可以讓咱們進行檔案的分享,這其中的緣由就是NFS使用到一些其它相關的傳輸協議!而這些傳輸的協議,就是使用到這個所謂的RPC的功能!這也就是說,NFS自己就是使用RPC的一個程序了,NFS能夠視做一個RPC server,NFS管理主要管理分享出來的目錄,而至於數據的傳輸,就直接丟給RPC協議來運做!centos
NFS Server總過須要啓動至少兩個進程(rpc.nfsd和rpc.mountd),一個管理Client是否能夠登入的問題,另外一個管理登入主機後的用戶是否可以使用的檔案權限!nfsd這個進程主要在管理客戶端是否可以登入主機的權限,mountd這個進程則在管理NFS的檔案系統,當客戶端順利經過nfsd後,登入到主機以後,在他使用能夠NFS Server分享的檔案以前,還會通過檔案使用權限的認證程序!只有經過這一關以後,Client纔可以使用NFS服務所分享的檔案。安全
當客戶端嘗試使用RPC Server所提供的服務時,因爲Client須要取得一個能夠鏈接的端口(port)纔可以使用RPC Server所提供的服務,所以,客戶端首先去請求rpcbind(舊版本是portmp),而後,rpcbind將本身管理的端口映射告知客戶端,好讓客戶端能夠鏈接上服務,所以:啓動NFS以前,必定要先啓動rpcbind服務器
總結一下安裝NFS都須要什麼,首先須要rpcbind,將端口告知客戶端。其次須要nfs-utils,提供nfsd進程和mountd這兩個NFS進程。網絡
2、安裝環境async
這裏咱們提供兩臺主機,一臺用來安裝NFS服務器,一臺用來掛載服務器分享的目錄,操做系統所有采用的是centOS6.4,下載地址個人博文《Hadoop徹底分佈式模式搭建》中有,若是,對Hadoop感興趣的話,能夠看看:http://blog.sina.com.cn/s/blog_c09822a40102v9ja.html分佈式
主機名 IP地址 分享目錄/掛載目錄oop
centosDateNode3 192.168.10.71 /home/roboson ui
centosNameNode 192.168.10.66 /home/roboson1
3、大體流程
<1>.安裝NFS Server
<2>.啓動服務
<3>.設定分享的目錄
<4>.分享目錄的範圍詳解(給哪些客戶端分享)
<5>.分享目錄的權限詳解(客戶端能對分享的目錄進行哪些操做)
<6>.服務器分享目錄
<7>.服務器對分享目錄的操做(卸掉,修改後從新分享使生效等)
<8>.服務器和客戶端如何查看分享的目錄
<9>.客戶端掛載目錄
<10>.客戶端卸載目錄
<11>.NFS Server如何設置開機自動啓動
<12>.客戶端如何設置開機自動掛載分享目錄
4、開工
<1>.安裝NFS Server
首先查看NFS Server是否已經安裝,其實在默認狀況下,NFS Server已經安裝好了,下面查看是否安裝了NFS Server,打開命令行,輸入如下指令:
rpm -qa|grep nfs #前面的博文中這個指令用過好屢次了
前面也說過,在運行NFS Server以前,必定要先啓動rpcbind,因此,用相同的方法,查看是否安裝
了rpcbind,在命令行下輸入如下指令:
rpm -qa|grep rpcbind
如上圖所示,說明系統已經安裝了NFS Server和rpcbind,若是沒有安裝,也無所謂,centos操做系統中自帶有安裝包,打開系統掛載的地方,而後,進行安裝!打開命令行,輸入如下指令:
cd /media/CentOS_6.4_Final/Packages #切換到掛載光驅的位置
ls rpcbind* #列出全部以rpcbind開頭的包 rpm -ivh rpcbind-0.2.0-11.el6.x86_64.rpm #安裝列出的軟件包(一個)
如上圖所示,安裝成功,那麼下來,就是安裝NFS Service,同上面同樣,先進入軟件安裝包中,而後,在命令行中輸入如下指令:
cd /media/CentOS_6.4_Final/Packages #切換到掛載光驅的位置 ls nfs* #列出全部以rpcbind開頭的包 rpm -ivh nfs-utils-1.2.3-36.el6.x86_64.rpm #安裝列出的軟件包(一個)
<2>.啓動服務
在安裝完成後,咱們就須要啓動NFS Server所須要的進程,查看一下服務的狀態,看是否啓動,在命令行下輸入如下指令:
service nfs status #查看NFS Server的狀態
service rpcbind status #查看rpcbind的狀態
如上圖所示,所須要的進程都已經開啓!接下來nfs就能夠設定分享目錄了。
<3>.設定分享的目錄
Linux把要分享的目錄的路徑都放在一個文件中,而且有分享的客戶端範圍,有分享的權限,這個目錄
在/etc/exports,若是沒有這個文件,能夠本身手動建一個,記錄分享目錄的格式:
【分享的目錄】【單個或多個主機名稱】或【IP範圍】(權限)
/home/roboson *(rw)
如上所示,分享的目錄是/home/roboson,對全部人開放 ,權限是可讀可寫!
好,分享的範圍都有哪些定義法,權限都有哪些呢?
<4>.分享目錄的範圍詳解(給哪些客戶端分享)
(1).指定ip地址的主機:192.168.10.71
只容許IP地址爲192.168.10.71的主機能夠登陸到此共享目錄
(2).指定子網中的全部主機:192.168.0.0/24或者192.168.0.0/255.255.255.0
只容許192.168.10.1~192.168.10.254這個網段內的IP登陸到此共享目錄
(3).指定域名的主機:centosNameNode.roboson.cn
只容許主機名爲centosNameNode.roboson.cn的能夠登陸到此共享目錄
(4).指定域內的全部主機:*.roboson.cn
只容許域名爲.roboson.cn的能夠登陸到此共享目錄
(5).指定全部的主機:*
<5>.分享目錄的權限詳解(客戶端能對分享的目錄進行哪些操做)
(1).rw:可讀可寫的權限
(2).ro:只讀的權限
(3).no_root_squash:登入分享目錄的使用者若是是root的話,那麼對於這個分享的目錄來講,他就具備root的權限!這一項不安全,不建議使用!
(4).root_squash:登入分享目錄的使用者若是是root的話,那麼這個使用者的權限將被壓縮成匿名使用者,一般他的UID與GID都會變成nobody那個系統帳號的身份。
(5).all_squash:不論登入分享目錄的使用者是什麼身份,都會被壓縮成匿名使用者。
(6).anonuid:能夠自行設定使用者UID的值!也就是使用者登陸到分享目錄中,身份成爲UID這個使用者,必須在/etc/passwd中存在這個UID。
(7).anongid:能夠自行設定使用者GID的值!也就是使用者登陸到分享目錄中,身份成爲GID這個使用者,必須在/etc/group中存在這個GID。
(8).sync:數據同步寫入到內存與硬盤當中
(9).async:數據會先暫存於內存當中,而非直接寫入硬盤
<6>.服務器分享目錄
將centosDateNode3上的/home/roboson目錄分享出去,對centosNameNode.roboson.cn主機開放,而且具備讀寫權限,在命令行中輸入如下指令:
注意:centosDateNode3必需要可以解析centosNameNode.roboson.cn這臺主機,要麼在DNS服務器上有記錄,要麼在/etc/hosts文件下有記錄
hosts文件域名映射IP地址的添加,在個人博文《Hadoop徹底分佈式模式搭建》中有,若是,對Hadoop感興趣的話,能夠看看:
http://blog.sina.com.cn/s/blog_c09822a40102v9ja.html
<7>.服務器對分享目錄的操做(卸掉,修改後從新分享使生效等)
修改好了/etc/exports文件 後,經過如下指令可讓分享目錄生效,不須要從新啓動nfsd等守護進程只須要使用exportfs從新掃描一次/etc/exports文件,而且從新加載一次就能夠了,如下是它的用法:
exportfs
<8>.服務器和客戶端如何查看分享的目錄
經過showmount能夠查看共享的目錄,showmount語法以下:
服務器端查看本身分享的目錄:
showmount -e
客戶端查看本身分享的目錄:
showmount -e centosDateNode3.roboson.cn
注意:若是出現上圖Unknown host說明識別不了主機,因此,hosts或者DNS服務器沒有記錄你的主機與IP地址的映射關係。前面已經提到過了!
<9>.客戶端掛載目錄
前面的安裝環境中,說過,將分享 的目錄掛載到/home/roboson1下,輸入:
mkdir /home/roboson1 #建立要掛載的目錄 mount -t nfs centosDateNode3.roboson.cn:/home/roboson /home/roboson1 cd /home/roboson1 #看是否可以登陸到共享目錄
注意:若是出現上圖權限不夠,由於centosDateNode3.roboson.cn:/home/roboson自己也有權限(drwx-xxx-xxx),不容許組內其餘成員和組外的成員訪問,只容許本身訪問,所以要修改權限。
而後,再進入到掛載的目錄,而且新建一個文件夾,看有沒有讀寫權限:
如圖所示,說明掛載共享目錄成功,而且擁有讀寫權限(rw)
<10>.客戶端卸載目錄
客戶端卸載共享目錄是經過umount實現的
umount /home/roboson1
<11>.NFS Server如何設置開機自動啓動
說到這裏,先說說Linux的開機啓動模式,Linux的開機啓動模式有多種,那麼若是要設置開機啓動項,就得說明,哪種開機啓動模式下,個人服務要自動啓動!先看看Linux都有哪幾種啓動模式,在命令行輸入如下指令:
cat /etc/inittab #這個文件下有Linux的開機啓動模式
從上圖能夠看出,總共有七種開機模式:
0:表示關機
1:表示單用戶模式,能夠經過這個模式修改root的密碼
2:無網絡鏈接的多用戶命令行模式
3:有網絡鏈接的多用戶命令行模式
4:不可用
5:圖形界面
6:重啓
看見下面有一句話:id:5:initdefault:這句話的主要做用就是修改默認的啓動模式,若是把5改成3, 那麼就進入命令行模式!同理,修改開機啓動項,也須要看給哪一種模式設置開機自動啓動,是用多用戶命令行登陸後,進程自動啓動,仍是以圖形界面登陸的時候,進程自動啓動等等.....
chkconfig --list rpcbind #查看rpcbind的開機啓動狀況
chkconfig --list nfs #查看nfs的開機啓動
如圖所示,通常咱們用的要麼是3,要麼是5,因此,只須要設置三、5開機自動啓動就能夠了
<12>.客戶端如何設置開機自動掛載分享目錄
每次客戶端重啓的話,都須要從新掛載分享目錄,挺麻煩的,最好可以設置開機自動掛載,Linux下能夠經過/etc/fstab文件來記錄,格式以下:
共享目錄 本地掛載目錄 nfs 選項 0 0
5、關機或結束時的注意事項
因爲NFS使用的這個RPC在client端連上主機時,那麼主機在想要關機的時候,可能關不了,若是,主機上面還有Client在聯機,那麼最好關機以前,關掉portmap與nfs這兩個東西