建站服務器
nfs概述
nfs 是network file system的縮寫,即網(wǎng)絡文件系統(tǒng)。一種使用于分散式文件系統(tǒng)的協(xié)定,由sun公司開發(fā),于1984年向外公布。功能是通過網(wǎng)絡讓不同的機器、不同的操作系統(tǒng)能夠彼此分享個別的數(shù)據(jù),讓應用程序在客戶端通過網(wǎng)絡訪問位于服務器磁盤中的數(shù)據(jù),是在類unix系統(tǒng)間實現(xiàn)磁盤文件共享的一種方法
協(xié)議:
rpc(remote procedure call protocol)——遠程過程調用協(xié)議
軟件:
nfs-utils-* :包括基本的nfs命令與監(jiān)控程序
rpcbind-* :支持安全nfs rpc服務的連接
注:通常情況下,是作為系統(tǒng)的默認包安裝的
centos6.*之前rpcbind叫portmap。
nfs系統(tǒng)守護進程
nfsd:它是基本的nfs守護進程,主要功能是管理客戶端是否能夠登錄服務器
mountd:它是rpc安裝守護進程,主要功能是管理nfs的文件系統(tǒng)。當客戶端順利通過nfsd登錄nfs服務器后,在使用nfs服務所提供的文件前,還必須通過文件使用權限的驗證。它會讀取nfs的配置文件/etc/exports來對比客戶端權限。
rpcbind:主要功能是進行端口映射工作。當客戶端嘗試連接并使用rpc服務器提供的服務(如nfs服務)時,rpcbind會將所管理的與服務對應的端口提供給客戶端,從而使客戶可以通過該端口向服務器請求服務。
nfs服務器的配置
nfs服務器的配置相對比較簡單,只需要在相應的配置文件中進行設置,然后啟動nfs服務器即可。
nfs的常用目錄
/etc/exportsnfs服務的主要配置文件
/usr/sbin/exportfsnfs服務的管理命令
/usr/sbin/showmount客戶端的查看命令
/var/lib/nfs/etab記錄nfs分享出來的目錄的完整權限設定值
/var/lib/nfs/xtab記錄曾經登錄過的客戶端信息
nfs服務的配置文件為 /etc/exports,這個文件是nfs的主要配置文件,不過系統(tǒng)并沒有默認值,所以這個文件不一定會存在,可能要使用vim手動建立,然后在文件里面寫入配置內容。
/etc/exports文件內容格式:
<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其他)] [客戶端2 選項(訪問權限,用戶映射,其他)]
a. 輸出目錄:輸出目錄是指nfs系統(tǒng)中需要共享給客戶機使用的目錄
b. 客戶端:客戶端是指網(wǎng)絡中可以訪問這個nfs輸出目錄的計算機
客戶端常用的指定方式:
指定ip地址的主機:192.168.0.200
指定子網(wǎng)中的所有主機:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主機:david.bsmart.cn
指定域中的所有主機:*.bsmart.cn
所有主機:*
c. 選項:選項用來設置輸出目錄的訪問權限、用戶映射等。
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:將數(shù)據(jù)同步寫入內存緩沖區(qū)與磁盤中,效率低,但可以保證數(shù)據(jù)的一致性;
async:將數(shù)據(jù)先保存在內存緩沖區(qū)中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執(zhí)行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
nfs服務器的啟動與停止
1、啟動nfs服務器
為了使nfs服務器能正常工作,需要啟動rpcbind和nfs兩個服務,并且rpcbind一定要先于nfs啟動。
# service rpcbind start
# service nfs start
2、查詢nfs服務器狀態(tài)
# service rpcbind status
# service nfs status
3、停止nfs服務器
要停止nfs運行時,需要先停止nfs服務再停止rpcbind服務,對于系統(tǒng)中有其他服務(如nis)需要使用時,不需要停止rpcbind服務
# service nfs stop
# service rpcbind stop
4、設置nfs服務器的自動啟動狀態(tài)
設置rpcbind和nfs服務在系統(tǒng)運行級別2345自動啟動。
# chkconfig –level 2345 rpcbind on
# chkconfig –level 2345 nfs on
實例
1.將nfs服務器的/home/zhangsan共享給192.168.115.0/24網(wǎng)段,rw權限
# vim/etc/exports
/home/zhangsan192.168.115.0/24(rw)
不同網(wǎng)段想要掛載需要網(wǎng)關(ping的通)
2.重啟portmap 和nfs 服務
# service rpcbindrestart
# service nfs restart
# exportfs-rv (刷新配置文件)
3.服務器端查看nfs共享狀態(tài)
# showmount –e 本機ip
查看自己共享的服務
4.客戶端查看nfs共享狀態(tài)
showmount -e nfs服務器ip
5.客戶端掛載nfs服務器共享目錄
命令格式:mount nfs服務器ip:共享目錄 本地掛載點目錄
# mount 192.168.115.10:/home/zhangsan/ /media/zhangsan/
# mount |grep nfs
驗證客戶端和nfs服務器端文件是否一致:
[root@nfs ~]#cd /media/zhangsan/
-bash: cd: /media/zhangsan/: 權限不夠
[root@nfs ~]#
修改服務器端相應權限,不然客戶端無法正常訪問和使用
6 nfs共享權限和訪問控制
a.客戶端root用戶
使用客戶端的root身份在nfs服務器上創(chuàng)建文件,文件的所有者和所屬組是nfsnobody。
b.客戶端普通用戶
使用客戶端的普通用戶身份在nfs服務器上創(chuàng)建文件,所有者和所屬組是nobody或普通用戶。
c.原因:/var/lib/nfs/etab
1.客戶端連接的時候,對root的檢查
如果設置no_root_squash,那么此時root用戶的身份被壓縮為nfs server上面的root;
如果設置了all_squash、anonuid、anongid,此時root 身份被壓縮為指定用戶;
如果沒有明確指定,此時root用戶被壓縮為nfsnobody;
如果同時指定no_root_squash與all_squash 用戶將被壓縮為 nfsnobody,如果設置了anonuid、anongid將被壓縮到所指定的用戶與組;
2.客戶端連接時候,對普通用戶的檢查
如果明確設定了普通用戶被壓縮的身份,那么此時客戶端用戶的身份轉換為指定用戶;
如果nfs server上面有同名用戶,那么此時客戶端登錄賬戶的身份轉換為nfs server上面的同名用戶;
如果沒有明確指定,也沒有同名用戶,那么此時 用戶身份被壓縮成nobody;
7.卸載和自動掛載
1.卸載客戶端的掛載目錄
umount掛載點
2.停止服務器端的共享
exportfs –au
自動掛載:/etc/fstab
格式:<server>:</remote/export> </local/directory> nfs < options> 0 0
#192.168.115.10:/home/zhangsan /media/zhangsan nfs