nfs简介&配置
一、簡(jiǎn)介
NFS(Network File System/網(wǎng)絡(luò)文件系統(tǒng)):
1)、設(shè)置Linux系統(tǒng)之間的文件共享(Linux與Windows中間文件共享采用SAMBA服務(wù));
2)、NFS只是一種文件系統(tǒng),本身沒有傳輸功能,是基于RPC協(xié)議實(shí)現(xiàn)的,才能達(dá)到兩個(gè)Linux系統(tǒng)之間的文件目錄共享;
3)、NFS為C/S架構(gòu);
二、依賴的服務(wù)和軟件包
1、檢查下列兩個(gè)包是否已經(jīng)安裝(默認(rèn)安裝完RHEL或者CentOS系統(tǒng),就已經(jīng)安裝了這兩個(gè)軟件包)
[root@Mylinux ~]# rpm -qa | grep 'portmap|nfs-utils'
2、如果沒有安裝,現(xiàn)在就安裝它們
[root@Mylinux ~]# yum install -y portmap nfs-utils
說明如下:
(1)nfs-utils套件
該套件提供rpc.nfsd及rpc.mountd這兩個(gè)NFS daemons與其它相關(guān)documents與說明文件、執(zhí)行檔等的套件!所以它是NFS的主要套件
(2)portmap套件
NFS其實(shí)可以被視為一個(gè)RPC server program,而要激活任何一個(gè)RPC server program之前,我們都需要做好port的對(duì)應(yīng)(mapping)的工作才行,這個(gè)工作其實(shí)就是portmap這個(gè)服務(wù)所負(fù)責(zé)的!也就是說,在激活任何一個(gè)RPC server之前,需要激活portmap,那么portmap就是作port的mapping
例如:當(dāng)Client端嘗試來使用RPC server所提供的服務(wù)時(shí),由于Client需要取得一個(gè)可以連接的port才能夠使用RPC server所提供的服務(wù),因此,Client首先就會(huì)去跟portmap聯(lián)系一個(gè)port number,好讓Client可以跟RPC聯(lián)絡(luò),這個(gè)時(shí)候portmap就自動(dòng)的將自己管理的port mapping告知Client,好讓他可以連接上來server!所以說:在激活NFS之前,要先激活portmap
既然nfs依賴于RPC,那么我們使用rpcinfo指令來查看一下本地rpc信息
[root@Mylinux ~]# service portmap start; service nfs start; rpcinfo -p localhost
rpc.nfsd---管理clinet是否有權(quán)限登錄,以及判別登錄者的uid等
rpc.mountd---讀取/etc/exports的權(quán)限,對(duì)文件訪問權(quán)限進(jìn)行控制
rpc.lockd---文件的互斥鎖,保證文件在同一時(shí)間只有一個(gè)人訪問,需要nfslockd服務(wù)
rpc.statd---檢查文件的一致性,需要nfslockd服務(wù)
三、服務(wù)端配置方法
1)配置服務(wù)器端的主配置文件/etc/exports
[root@Mylinux ~]# vim /etc/exports
(1)語法格式
/etc/exports文件中每一行提供了一個(gè)共享目錄的設(shè)置,其格式為如下:
+ 空格 + [hostname1或IP1(參數(shù)1,參數(shù)2.....)] + 空格 + [hostname2或IP2(參數(shù)3,參數(shù)4....)]
(2)主要參數(shù)如下
|
rw |
可讀可寫 |
|
ro |
只讀 |
|
sync |
數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,雖然這樣做效率較低,但可以保證數(shù)據(jù)的一致性(適合于小文件傳輸) |
|
async |
數(shù)據(jù)先暫時(shí)放于內(nèi)存,而非直接寫入硬盤,等到必要時(shí)才寫入磁盤(適合于大文件傳輸) |
|
no_root_squash |
使用nfs時(shí),如果用戶是root,不進(jìn)行權(quán)限壓縮,即root用戶在nfs上創(chuàng)建的文件屬組和屬主仍然是root(不安全,不建議使用) |
|
root_squash |
使用nfs時(shí),如果用戶是root,則進(jìn)行權(quán)限壓縮,即把root用戶在nfs上創(chuàng)建的文件屬組和屬主修改為nfsnobody |
|
all_squash |
所有的普通用戶使用nfs都將使用權(quán)限壓縮,即:將遠(yuǎn)程訪問的所有普通用戶及所屬用戶組都映射為匿名用戶或者用戶組(一般均為nfsnobody) |
|
no_all_squash |
所有的普通用戶使用nfs都不使用權(quán)限壓縮,即:不將遠(yuǎn)程訪問的所有普通用戶及所屬用戶組都映射為匿名用戶或者用戶組(默認(rèn)設(shè)置) |
|
anonuid=XXX |
anon即anonymous(匿名者),前面關(guān)于*_squash提到的匿名用戶的uid的設(shè)置值,通常為nobody或者nfsnobody,使用這個(gè)參數(shù)可以自行設(shè)定這個(gè)uid值,這個(gè)uid必須存在于/etc/passwd |
|
anongid=XXX |
將遠(yuǎn)程訪問的所有用戶組都映身為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=XXX) |
|
insecure |
允許客戶端從大于1024的TCP/IP端口連NFS服務(wù)器 |
|
secure |
限制客戶端只能從小于1024的TCP/IP端口連接NFS服務(wù)器(默認(rèn)設(shè)置) |
|
wdelay |
檢查是否有相關(guān)的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可提高效率(默認(rèn)設(shè)置) |
|
no_wdelay |
若有寫操作則立即執(zhí)行(應(yīng)與sync配置) |
|
subtree_check |
若輸出目錄是一個(gè)子目錄,則NFSW:務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置) |
|
no_subtree_check |
即使輸出目錄是一個(gè)子目錄,NFS服務(wù)器也不檢查其父目錄的權(quán)限,這樣做可提高效率 |
(3)設(shè)置實(shí)例
|
/tmp*(rw,no_root_squash) |
在所有的IP(主機(jī))上登錄的用戶都可對(duì)NFS服務(wù)器上的共享目錄/tmp擁有rw操作權(quán)限,同時(shí)如果是root用戶訪問該共享目錄,那么不將root用戶及所屬用戶組都映射為匿名用戶或用戶組(*表示所有的主機(jī)或者IP) |
|
/tmp*(rw) |
在所有的IP(主機(jī))登錄的用戶都可對(duì)NFS服務(wù)器上的共享目錄/tmp擁有rw操作權(quán)限 |
|
/home/public192.168.0.*(rw)*(ro) |
除了在192. 168. 0.0/24這個(gè)網(wǎng)段內(nèi)的主機(jī)上登錄的用戶,可對(duì)NFS服務(wù)器共享目錄/home/public進(jìn)行rw操作權(quán)限,而其它網(wǎng)段的主機(jī)上登錄的用戶,對(duì)NFS服務(wù)器共享目錄/home/public只能進(jìn)行r操作 |
|
/home/test192.168.0.100(rw) |
只對(duì)192.168.0.100該臺(tái)主機(jī)設(shè)置權(quán)限,即:使在該臺(tái)主機(jī)登錄的用戶都可對(duì)NFS服務(wù)器上的共享目錄/home/test擁有讀與寫的操作 |
|
/home/linux*.linux.org(rw,all_squash,anonuid=40,anongid=40) |
當(dāng)*.linux.org(加入域linux.org的所有主機(jī)) 登陸此NFS主機(jī),并且在/home/linux下面寫入檔案時(shí),該檔案的所有人與所有組,就會(huì)變成NFS服務(wù)器上的/etc/passwd文件里面對(duì)應(yīng)的UID為40的那個(gè)身份的使用者了(因?yàn)橹付藚?shù):all_squash,anonuid=40,anongid=40) |
(4)權(quán)限問題
|
NFS服務(wù)器(192.168.0.2)上的/etc/exports配置文件設(shè)置如下 |
|
|
例如:我們?cè)?92.168.0.100這個(gè)client端登陸此NFS主機(jī)(192.168.0.2),那么會(huì)怎么樣呢? |
|
|
情況一: 在192.168.0.100的帳號(hào)為test這個(gè)身份,同時(shí)NFS主機(jī)上也有test這個(gè)帳號(hào) |
(1)由于NFS主機(jī)的/tmp權(quán)限為-rwxrwxrwt,所以我(test在192.168.0.100上)在/tmp下面具有存取的權(quán)限,并且寫入檔案的所有人為test |
|
(2)在/home/public中,由于我有讀寫的權(quán)限,如果NFS主機(jī)在/home/public這個(gè)目錄的權(quán)限對(duì)于test開放寫入的話,那么就可 以讀寫,并且寫入檔案的所有人是test。如果NFS主機(jī)的/home/public對(duì)于test這個(gè)使用者并沒有開放寫入權(quán)限時(shí),那就無法寫入,雖然/etc/exports里面是rw,也不起作用 |
|
|
(3)在/home/test中,權(quán)限與/home/public有相同的狀態(tài),需要NFS主機(jī)的/home/test對(duì)于test有開放的權(quán)限 |
|
|
(4)在/home/linux當(dāng)中,不論是何種的user,身份都會(huì)被變成UID=40的這個(gè)帳號(hào) |
|
|
情況二: 如果我們?cè)?92.168.0.100的身份為test2,但是NFS主機(jī)卻沒有test2這個(gè)帳號(hào)時(shí) |
(1)在/tmp下還是可以寫入,但是寫入的檔案所有人變成nobody |
|
(2)在/home/public與/home/test里面是否可以寫入,還需要看/home/public的權(quán)限而定,不過身份就被變成nobody |
|
|
(3)/home/linux下的身份還是變成UID=40的帳號(hào) |
|
|
情況三:在192.168.0.100的身份為root |
(1)在/tmp里面可以寫入,但是由于no_root_squash的參數(shù),改變了預(yù)設(shè)的root_squash的設(shè)定值,所以在/tmp寫入檔案的所有人為root了 |
|
(2)在/home/public底下的身份被壓縮成了nobody,因?yàn)轭A(yù)設(shè)的屬性都具有root_squash,所以檔案所有人就變成了nobody |
|
|
(3)/home/test情況與/home/public相同 |
|
|
(4)/home/linux中,root的身份也被壓縮成UID=40的那個(gè)使用者了 |
|
(5)啟動(dòng)nfslock、portmap、nfs服務(wù),并查看日志是否正常的激活
[root@Mylinux ~]# service portmap start
[root@Mylinux ~]# service nfs start
[root@Mylinux ~]# service nfslock start
[root@Mylinux ~]# tail -10 /var/log/messages
注意:?jiǎn)?dòng)這些服務(wù)的順序
(6)客戶端連接使用nfs
[root@Mylinux ~]# /etc/init.d/portmap start
[root@Mylinux ~]# /etc/init.d/nfslock start
[root@Mylinux ~]# showmount -e 192.168.0.2
(7)exportfs與showmount指令的用法
| exportfs指令作用 |
用來維護(hù)NFS服務(wù)的共享目錄列表的輸出 |
|
|
exportfs指令語法 |
-a |
全部mount或者unmount /etc/exports中內(nèi)容(即:要被共享出來的目錄) |
|
-r |
重新讀取/etc/exports文件的設(shè)置,并使得設(shè)置立即生效,而不需要重新啟動(dòng)nfs服務(wù) |
|
|
-u |
停止輸出某一個(gè)目錄 |
|
|
-v |
在輸出目錄時(shí),將詳細(xì)的信息輸出到屏幕上 |
|
|
注意:當(dāng)修改了/etc/exports配置文件,可以使用參數(shù)-r重新讀取/etc/exports配置文件,使得設(shè)置立即生效,而不需要重啟nfs服務(wù) |
||
|
exportfs指令例子 |
#exportfs -rv //重新export一次 |
|
|
格式:showmount [-ae] hostname(IP) |
|
|
-a |
顯示指定的NFS服務(wù)器的所有客戶端主機(jī)及其所連接的目錄(一般在NFS Server上使用該參數(shù)) |
|
-e |
顯示指定的NFS服務(wù)器上所有export出來的目錄 |
(8)/var/lib/nfs/etab里面可以查看每個(gè)目錄的分享權(quán),例如:
/nfs *rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
對(duì)照一下/etc/passwd,你就會(huì)發(fā)現(xiàn),65534這個(gè)UID的用戶是nfsnobody
(9)啟動(dòng)和停止NFS服務(wù)
Section 1:?jiǎn)?dòng)NFS服務(wù)
[root@Mylinux ~]# service portmap start
[root@Mylinux ~]# service nfs start
[root@Mylinux ~]# service nfslock start
注意:它們的啟動(dòng)順序,因?yàn)閚fs服務(wù)是依賴于RPC服務(wù)的,而RPC服務(wù)又依賴于portmap服務(wù),所以要先啟動(dòng)portmap,而最后一個(gè)nfslock服務(wù)是對(duì)nfs共享的文件的讀定鎖定,所以在啟動(dòng)nfs服務(wù)后再啟動(dòng)
Section 2:停止NFS服務(wù)
[root@Mylinux ~]# service nfslock start
[root@Mylinux ~]# service nfs start
[root@Mylinux ~]# service portmap start
Section 3:檢測(cè)與重啟NFS服務(wù)
[root@Mylinux ~]# /etc/init.d/nfs restart
[root@Mylinux ~]# /etc/init.d/nfs status
[root@Mylinux ~]# /etc/init.d/portmap status
Section 4:設(shè)置自動(dòng)啟動(dòng)NFS服務(wù)
[root@Mylinux ~]# chkconfig --level 345 portmap on
[root@Mylinux ~]# chkconfig --level 345 nfs on
四、客戶端配置方法
1、手動(dòng)掛載NFS服務(wù)器的共享目錄到NFS客戶端
[root@Mylinux ~]# mount -t nfs hostname(orIP):/directory /mountpoint
注意:為了擔(dān)心會(huì)不小心將 NFS 端掛進(jìn)來的具有 SUID 權(quán)限檔案的程序執(zhí)行,root可以將NFS 所分享的目錄以較為安全的情況掛載進(jìn)來,即:“ mount -t nfs -onosuid,rohostname:/directory /mountponit ”
|
掛載NFS系統(tǒng)文件的可選參數(shù)如下 |
|
|
soft |
當(dāng)服務(wù)器端沒回應(yīng)時(shí),會(huì)在timeout后重新連接,傳回錯(cuò)誤信息 |
|
hard |
當(dāng)服務(wù)器端沒回應(yīng)時(shí)持續(xù)在后臺(tái)嘗試連接 |
|
intr |
當(dāng)正在進(jìn)行NFS請(qǐng)求時(shí),允許用鍵盤中斷 |
|
nointr |
當(dāng)正在進(jìn)行NFS請(qǐng)求時(shí),不允許用鍵盤中斷 |
|
timeo |
請(qǐng)求過期時(shí)間,單位為秒 |
|
bg |
當(dāng)?shù)谝淮握?qǐng)求不成功,第二次的mount將放到后臺(tái)執(zhí)行 |
|
fg |
一直在前臺(tái)發(fā)送請(qǐng)求 |
|
proto=tcp|udp |
修改使用TCP協(xié)議還是UDP協(xié)議來傳輸nfs的數(shù)據(jù) |
|
default |
hard和nointr |
|
rsize |
讀操作的塊大小,這個(gè)設(shè)置影響服務(wù)器和客戶端的nfs緩存大小,如果有充足的內(nèi)存和網(wǎng)絡(luò)帶寬,可以設(shè)置高些,如32768(bytes) |
|
wsize |
寫操作的塊大小,這個(gè)設(shè)置影響服務(wù)器和客戶端的nfs緩存大小,如果有充足的內(nèi)存和網(wǎng)絡(luò)帶寬,可以設(shè)置高些,如32768(bytes) |
|
查看幫助文件:man fstab、man -a mount |
|
注意:如果要自動(dòng)掛NFS共享目錄,那么可以在/etc/fstab文件中進(jìn)行配置
2、使用autofs來實(shí)現(xiàn)自動(dòng)掛載NFS服務(wù)器的共享目錄到NFS客戶端
1)為什么要使用autofs
autofs能夠自動(dòng)掛載卸載nfs和文件系統(tǒng),并且在空閑的時(shí)候能夠關(guān)閉nfs連接,降低系統(tǒng)負(fù)載。使用autofs要先關(guān)閉netfs服務(wù),并注釋掉/etc/fstab里關(guān)于nfs的內(nèi)容
2)如何使用autofs實(shí)現(xiàn)NFS服務(wù)
[root@Mylinux ~]#chkconfig --level 35 autofs on
[root@Mylinux ~]#/etc/init.d/autofs start
[root@Mylinux ~]#vi /etc/auto.master
/nfs /etc/auto.nfs --timeout=60
[root@Mylinux ~]# vi /etc/auto.nfs
public -ro,soft,intr 192.168.0.228:/data
[root@Mylinux ~]# reboot
[root@Mylinux ~]# cd /nfs
[root@Mylinux ~]# ls
[root@Mylinux ~]# mount
/dev/hda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/hda2 on /web type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
[root@Mylinux ~]# cd public
[root@Mylinux ~]# mount
/dev/hda1 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/hda2 on /web type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.0.228:/data on /nfs/public type nfs (ro,soft,intr,addr=192.168.0.228)
同時(shí)使用多個(gè)參數(shù)的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
注意:NFS客戶機(jī)和服務(wù)器的選項(xiàng)并不一定完全相同,而且有的時(shí)候會(huì)有沖突。比如說服務(wù)器以只讀的方式導(dǎo)出,客戶端卻以可寫的方式mount,雖然可以成功mount上,但嘗試寫入的時(shí)候就會(huì)發(fā)生錯(cuò)誤。一般服務(wù)器和客戶端配置沖突的時(shí)候,會(huì)以服務(wù)器的配置為準(zhǔn)
3、配置/etc/fstab文件來實(shí)現(xiàn)開機(jī)自動(dòng)掛載NFS服務(wù)器的共享目錄到NFS客戶端
注意:要開機(jī)掛載nfs文件系統(tǒng)還需要開啟netfs服務(wù),并且把掛載項(xiàng)寫入到/etc/fstab
|
/etc/fstab文件的語法格式 |
|
|
格式:fs_spec fs_file fs_type fs_options fs_dump fs_pass |
|
|
fs_spec |
該字段定義希望加載的文件系統(tǒng)所在的設(shè)備或遠(yuǎn)程文件系統(tǒng),對(duì)于nfs這個(gè)參數(shù)一般設(shè)置為這樣:192.168.0.1:/NFS |
|
fs_file |
本地的掛載點(diǎn) |
|
fs_type |
對(duì)于NFS來說這個(gè)字段只要設(shè)置成nfs |
|
fs_options |
掛載的參數(shù),可以使用的參數(shù)可以參考上面的mount參數(shù) |
|
fs_dump |
該選項(xiàng)被" dump "命令使用來檢查一個(gè)文件系統(tǒng)應(yīng)該以多快頻率進(jìn)行轉(zhuǎn)儲(chǔ),若不需要轉(zhuǎn)儲(chǔ)就設(shè)置該字段為:0 |
|
fs_pass |
該字段被fsck命令用來決定在啟動(dòng)時(shí)需要被掃描的文件系統(tǒng)的順序,根文件系統(tǒng)"/"對(duì)應(yīng)該字段的值應(yīng)該為:1,其他文件系統(tǒng)應(yīng)該為:2。若該文件系統(tǒng)無需在啟動(dòng)時(shí)掃描則設(shè)置該字段為:0 |
|
查看幫助文件:manfstab、man-amount |
|
4、與NFS有關(guān)一些其它指令
nfsstat: 查看NFS的運(yùn)行狀態(tài),對(duì)于調(diào)整NFS的運(yùn)行有很大幫助
rpcinfo -p hostname(orIP):查看rpc執(zhí)行信息,可以用于檢測(cè)rpc運(yùn)行情況的工具
總結(jié)
以上是生活随笔為你收集整理的nfs简介&配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 半贝丸_功效作用注意事项用药禁忌用法用量
- 下一篇: 深度清理电脑C盘垃圾的方法如何深度清理电