小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

nfs服務(wù)部署記錄

 WindySky 2018-03-14

 

一、概念介紹
NFS 是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng)。一種使用于分散式文件系統(tǒng)的協(xié)定,由Sun公司開發(fā),于1984年向外公布。功能是通過網(wǎng)絡(luò)讓不同的機(jī)器、不同的操作系統(tǒng)能夠彼此分享個(gè)別的數(shù)據(jù),讓應(yīng)用程序在客戶端通過網(wǎng)絡(luò)訪問位于服務(wù)器磁盤中的數(shù)據(jù),是在類Unix系統(tǒng)間實(shí)現(xiàn)磁盤文件共享的一種方法。

NFS 的基本原則是“容許不同的客戶端及服務(wù)端通過一組RPC分享相同的文件系統(tǒng)”,它是獨(dú)立于操作系統(tǒng),容許不同硬件及操作系統(tǒng)的系統(tǒng)共同進(jìn)行文件的分享。

NFS在文件傳送或信息傳送過程中依賴于RPC協(xié)議。RPC,遠(yuǎn)程過程調(diào)用 (Remote Procedure Call) 是能使客戶端執(zhí)行其他系統(tǒng)中程序的一種機(jī)制。NFS本身是沒有提供信息傳輸?shù)膮f(xié)議和功能的,但NFS卻能讓我們通過網(wǎng)絡(luò)進(jìn)行資料的分享,這是因?yàn)镹FS使用了一些其它的傳輸協(xié)議。而這些傳輸協(xié)議用到這個(gè)RPC功能的。可以說NFS本身就是使用RPC的一個(gè)程序。或者說NFS也是一個(gè)RPC SERVER。所以只要用到NFS的地方都要啟動(dòng)RPC服務(wù),不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實(shí)現(xiàn)PROGRAM PORT的對應(yīng)??梢赃@么理解RPC和NFS的關(guān)系:NFS是一個(gè)文件系統(tǒng),而RPC是負(fù)責(zé)負(fù)責(zé)信息的傳輸。

NFS服務(wù)端、RPC協(xié)議、客戶端三者可以理解為房源、中介、租客之間的關(guān)系:

 

二、部署說明
1)軟件安裝
NFS只需要安裝下面兩個(gè)軟件,在通常情況下是作為系統(tǒng)默認(rèn)軟件安裝的
rpcbind:centos 下面RPC主程序 (centos5系統(tǒng)之前該軟件叫portmap)
nfs-utils:NFS服務(wù)主程序,包括NFS的基本命令和監(jiān)控程序

[root@dev-huanqiu ~]# yum install rpcbind nfs-utils

2)環(huán)境部署說明
將本機(jī)(192.168.1.6)的/usr/local/nginx/html/ssapp.test/weiloushu/video目錄共享給192.168.1.19的/data/video
將本機(jī)(192.168.1.6)的/usr/local/nginx/html/ssapp.beta/weiloushu/video目錄共享給192.168.1.16的/data/video

服務(wù)端的操作:

首先關(guān)閉nfs服務(wù)端的防火墻,這個(gè)很關(guān)鍵,否則客戶機(jī)掛載nfs時(shí)會(huì)失?。。ɑ蛘卟魂P(guān)閉防火墻,需要在iptables中開放nfs相關(guān)端口)
[root@dev-huanqiu ~]# /etc/init.d/iptables stop

接著進(jìn)行nfs共享設(shè)置
[root@dev-huanqiu ~]# vim /etc/exports
/usr/local/nginx/html/ssapp.test/weiloushu/video 192.168.1.19(rw,sync,no_root_squash)
/usr/local/nginx/html/ssapp.beta/weiloushu/video 192.168.1.16(rw,sync,no_root_squash)

配置說明:
rw:可讀寫的權(quán)限;
ro: 只讀的權(quán)限;
no_root_squash:客戶機(jī)用root訪問nfs共享文件夾時(shí),保持root權(quán)限,root_squash 是把root映射成nobody,no_all_squash 不讓所有用戶保持在掛載目錄中的權(quán)限。
sync: 資料同步寫入存儲器中。
async:資料會(huì)先暫時(shí)存放在內(nèi)存中,不會(huì)直接寫入硬盤。

其中:
客戶端常用的指定方式
   指定ip地址的主機(jī):192.168.1.19,如果是一個(gè)目錄共享給多臺客戶機(jī),那么就配置多行
   指定子網(wǎng)中的所有主機(jī):192.168.0.0/24
   指定域名的主機(jī):a.liusuping.com
   指定域中的所有主機(jī):*.liusuping.com
   所有主機(jī):*

訪問權(quán)限選項(xiàng)
   設(shè)置輸出目錄只讀:ro
   設(shè)置輸出目錄讀寫:rw

用戶映射選項(xiàng)
   all_squash:將遠(yuǎn)程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組,通常也就是nobody(nfsnobody);
   no_all_squash:與all_squash取反(默認(rèn)設(shè)置);
   root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認(rèn)設(shè)置);
   no_root_squash:與rootsquash取反;
   anonuid=xxx:將遠(yuǎn)程訪問的所有用戶都映射為匿名用戶,并指定該用戶為本地用戶(UID=xxx);比如(rw,sync,all_squash,anonuid=65534,anongid=65534)
   anongid=xxx:將遠(yuǎn)程訪問的所有用戶組都映射為匿名用 戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);

其它選項(xiàng)
   secure:限制客戶端只能從小于1024的tcp/ip端口連接nfs服務(wù)器(默認(rèn)設(shè)置);
   insecure:允許客戶端從大于1024的tcp/ip端口連接服務(wù)器;
   sync:將數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,效率低,但可以保證數(shù)據(jù)的一致性;
   async:將數(shù)據(jù)先保存在內(nèi)存緩沖區(qū)中,必要時(shí)才寫入磁盤;
   wdelay:檢查是否有相關(guān)的寫操作,如果有則將這些寫操作 一起執(zhí)行,這樣可以提高效率(默認(rèn)設(shè)置);
   no_wdelay:若有寫操作則立即執(zhí)行,應(yīng)與sync配合使用;
   subtree:若輸出目錄是一個(gè)子目錄,則nfs服務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置);
   no_subtree:即使輸出目錄是一個(gè)子目錄,nfs服務(wù)器也不檢查其父目錄的權(quán)限,這樣可以提高效率;

可以使用showmount命令查看遠(yuǎn)程客戶機(jī)上的共享目錄情況,這個(gè)命令需要root權(quán)限。
它有三個(gè)選項(xiàng),記住這三個(gè)選項(xiàng)代表的含義:
showmount –a IP  :顯示指定NFS服務(wù)器的客戶端以及服務(wù)器端在客戶端的掛載點(diǎn)
showmount –d IP  :顯示指定NFS服務(wù)器在客戶端的掛載點(diǎn)
showmount –e IP  :顯示指定NFS服務(wù)器上的共享目錄列表(或者叫輸出列表)

[root@dev-huanqiu ~]# showmount -e
Export list for ctl:
/usr/local/nginx/html/ssapp.beta/weiloushu/video 192.168.1.16
/usr/local/nginx/html/ssapp.test/weiloushu/video 192.168.1.19

查看系統(tǒng)加載的配置
[root@dev-huanqiu ~]# cat /var/lib/nfs/etab
/usr/local/nginx/html/ssapp.beta/weiloushu/video 192.168.1.16(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,no_root_squash,no_all_squash)
/usr/local/nginx/html/ssapp.test/weiloushu/video 192.168.1.19(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,no_root_squash,no_all_squash)

開啟nfs的RCP服務(wù)和查看rpcbind服務(wù)端口
[root@dev-huanqiu ~]# /etc/init.d/rpcbind start
Starting rpcbind: [ OK ]
[root@dev-huanqiu ~]# netstat -antlp|grep rpcbind
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 25416/rpcbind
tcp 0 0 :::111 :::* LISTEN 25416/rpcbind

開啟nfs服務(wù)
[root@dev-huanqiu ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]

設(shè)置兩個(gè)服務(wù)開機(jī)自啟動(dòng)
[root@dev-huanqiu ~]# chkconfig rpcbind on
[root@dev-huanqiu ~]# chkconfig nfs on

客戶端的操作(這里列舉其中一臺客戶機(jī)操作,另外一臺客戶端操作類似):
客戶端只需要安裝rpcbind程序,并確認(rèn)服務(wù)正常
[root@dev-new-test ~]# /etc/init.d/rpcbind start
正在啟動(dòng) rpcbind: [確定]
[root@dev-new-test ~]# /etc/init.d/rpcbind status
rpcbind (pid 28904) 正在運(yùn)行...

掛載nfs服務(wù)端的共享目錄
[root@dev-new-test ~]# mount -t nfs 192.168.1.6:/usr/local/nginx/html/ssapp.test/weiloushu/video /data/video/

查看,發(fā)現(xiàn)已經(jīng)共享成功了
[root@dev-new-test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G 12G 36G 26% /
tmpfs 32G 72K 32G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 844G 69G 733G 9% /home
192.168.1.6:/usr/local/nginx/html/ssapp.test/weiloushu/video 97G 64G 28G 70% /data/video

[root@dev-new-test ~]# showmount -a 192.168.1.6
All mount points on 192.168.1.6:

卸載(注意不能切換到掛載目錄里狀態(tài)下卸載,否則會(huì)報(bào)錯(cuò):umount.nfs:...: device is busy)
[root@dev-new-test ~]# umount /data/video
[root@dev-new-test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G 12G 36G 26% /
tmpfs 32G 72K 32G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 844G 69G 733G 9% /home

如果nfs在umount卸載時(shí)報(bào)錯(cuò)如下:
[root@dev-new-test ~]# umount /data/video
/data/video was not found in /proc/mounts

解決:umount卸載時(shí)使用-l參數(shù)
[root@dev-new-test ~]# umount -l /data/video
umount.nfs: /data/video: not mounted
[root@dev-new-test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 50G 12G 36G 26% /
tmpfs 32G 72K 32G 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/VolGroup-lv_home 844G 69G 733G 9% /home

=================================================================================
遇到的一個(gè)問題:
目標(biāo)機(jī)器通過nfs掛載后,在共享目錄下寫入文件時(shí),權(quán)限強(qiáng)制變成nobod!(本來共享目錄的權(quán)限設(shè)置是app賬號)
經(jīng)排查,是因?yàn)閍pp賬號在原機(jī)器和目標(biāo)機(jī)器的uid和gid不一致導(dǎo)致的!
解決辦法:將兩臺機(jī)器的uid和gid設(shè)置成一樣的即可!
# usermod -u uid app
# groupmod -g gid app

------------------------------------------------------------------------------------------------------------------------------
補(bǔ)充一點(diǎn):nfs服務(wù)端的防火墻問題

上面記錄中,已經(jīng)提前在nfs的服務(wù)端將iptables防火墻關(guān)閉了。
如果不關(guān)閉服務(wù)端的iptables防火墻,那么要想讓客戶端成功掛載上nfs,就需要在服務(wù)端的iptables里開通nfs相關(guān)端口.

操作記錄:(centos6x系統(tǒng)下nfs服務(wù)照此配置均可,已經(jīng)過實(shí)驗(yàn))
portmapp在nfs服務(wù)啟動(dòng)的時(shí)候給每一個(gè)NFS服務(wù)分配了一個(gè)動(dòng)態(tài)的端口,如這些服務(wù)MOUNTD_PORT、 STATD_PORT、 LOCKD_TCPPORT、 LOCKD_UDPPORT。
由于這些端口是動(dòng)態(tài)隨機(jī)分配的,所以導(dǎo)致在iptables防火墻無法設(shè)置。
那么如何才能讓nfs client在使用iptables時(shí)可以正常使用NFS服務(wù)呢?
辦法就是指定將上述服務(wù)的運(yùn)行端口,然后在iptables中發(fā)布。

相關(guān)的配置文件為 /etc/sysconfig/nfs 。
要使用iptables來控制nfs,需靜態(tài)指定端口號讓portmap調(diào)用。
nfs服務(wù)啟用時(shí)會(huì)檢查/etc/sysconfig/nfs文件。
在此文件下來指定mountd,statd,lockd,rquotad端口號,修改默認(rèn)的端口號,這里我用的不是默認(rèn)的端口號,而是自定義的端口號。如下:
[root@dev-huanqiu ~]# cat /etc/sysconfig/nfs|grep -v "^#"
RQUOTAD_PORT=10001
LOCKD_TCPPORT=10002
LOCKD_UDPPORT=10002
MOUNTD_PORT=10003
STATD_PORT=10004

重啟nfs服務(wù)
[root@dev-huanqiu ~]# /etc/init.d/nfs restart
Shutting down NFS daemon: [ OK ]
Shutting down NFS mountd: [ OK ]
Shutting down NFS services: [ OK ]
Shutting down RPC idmapd: [ OK ]
Starting NFS services: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]

再次通過下面命令查看nfs使用的端口,其中2049是nfs服務(wù)的固定端口
[root@dev-huanqiu ~]# rpcinfo -p
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
100011 1 udp 10001 rquotad
100011 2 udp 10001 rquotad
100011 1 tcp 10001 rquotad
100011 2 tcp 10001 rquotad
100005 1 udp 10003 mountd
100005 1 tcp 10003 mountd
100005 2 udp 10003 mountd
100005 2 tcp 10003 mountd
100005 3 udp 10003 mountd
100005 3 tcp 10003 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
100024 1 udp 10004 status
100024 1 tcp 10004 status
100021 1 udp 10002 nlockmgr
100021 3 udp 10002 nlockmgr
100021 4 udp 10002 nlockmgr
100021 1 tcp 10002 nlockmgr
100021 3 tcp 10002 nlockmgr
100021 4 tcp 10002 nlockmgr

端口111和2049分別是rpcbind和nfs服務(wù)端口
將上面命令結(jié)果中的端口分別在iptables里開通,注意tcp和udp均要開通!
[root@dev-huanqiu ~]# vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.19/24 -p tcp --dport 111 -j ACCEPT
-A INPUT -s 192.168.1.19/24 -p udp --dport 111 -j ACCEPT
-A INPUT -s 192.168.1.19/24 -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.1.19/24 -p udp --dport 2049 -j ACCEPT
-A INPUT -s 192.168.1.19/24 -p tcp --dport 10001:10004 -j ACCEPT
-A INPUT -s 192.168.1.19/24 -p udp --dport 10001:10004 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重啟防火墻服務(wù)
[root@dev-huanqiu ~]# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]

[root@ctl ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- bogon/24 anywhere tcp dpt:nfs
ACCEPT udp -- bogon/24 anywhere udp dpt:nfs
ACCEPT tcp -- bogon/24 anywhere tcp dpts:scp-config:emcrmirccd
ACCEPT udp -- bogon/24 anywhere udp dpts:scp-config:10004
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination 

這樣,如上設(shè)置后,nfs在開啟iptables防火墻的情況下,也可以正常掛載使用了!

------------------------------------------------------------
如果客戶端在nfs掛載時(shí)報(bào)權(quán)限錯(cuò)誤,如下:
mount.nfs: access denied by server while mounting.....

則可能原因有以下幾種:
1)防火墻原因
解決:關(guān)閉防火墻;如果防火墻開啟,需要打開相應(yīng)的端口,并對相關(guān)客戶機(jī)開放;另確保/etc/hosts.allow和/etc/hosts.deny文件中有沒有nfs相關(guān)規(guī)則。
2)nfs服務(wù)端掛載的目標(biāo)目錄權(quán)限
解決:嘗試設(shè)置777權(quán)限
3)insecure標(biāo)識功能關(guān)閉
解決:insecure標(biāo)識如果端口號大于1024,則需要將insecure 選項(xiàng)加入到配置文件(/etc/exports)相關(guān)選項(xiàng)中mount客戶端才能正常工作,默認(rèn)情況下這個(gè)功能都是開啟的!
如果系統(tǒng)要是默認(rèn)禁止這個(gè)選項(xiàng),那么客戶端使用大于1024端口進(jìn)行nfs掛載時(shí)就會(huì)報(bào)權(quán)限錯(cuò)誤,則需要通過修改配置文件/etc/exports,加入insecure選項(xiàng)才能解決,如下:
/usr/local/nginx/html/ssapp.test/weiloushu/video 192.168.1.19(insecure,rw,sync,no_root_squash)

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多