2019-04-17day34NFS網(wǎng)絡存儲服務

1、什么是NFS?

全稱network file system網(wǎng)絡文件系統(tǒng)

什么是文件系統(tǒng)?

組織和存取文件的一種機制

什么是網(wǎng)絡文件系統(tǒng)?

通過網(wǎng)絡來存儲和組織文件的一種方法或機制。

2、為什么要用共享存儲?

前端所有的應用服務器接收到用戶上傳的圖片、文件、視頻,都用統(tǒng)一的放到后端的存儲上。

為什么要共享?所有節(jié)點服務器都需要將內(nèi)容放到存儲上,取的統(tǒng)一來取。

3、共享存儲的種類

單點存儲系統(tǒng)就是NFS,中小型企業(yè)。阿里云服務的NAS服務。OSS對象存儲。

NFS性能不太高。

大型企業(yè)會用分布式存儲FastDFS、Ceph、GlsterFS、Mfs

大型存儲廠商:EMC、Netapp(幾十萬)

藝龍旅行網(wǎng)存儲用的EMC傳統(tǒng)企業(yè)。

硬件存儲:穩(wěn)定、2臺、雙主機頭、幾十塊硬盤 RAID10。

BAT曾經(jīng)用硬件,超貴

阿里云去IOE ??Orace ???EMc

4、NFS工作原理

NFS網(wǎng)絡文件系統(tǒng)

啟動NFS服務,而且還有啟動很多端口。

NFS功能,需要很多服務。每個服務都有端口,而且經(jīng)常變動。

如何讓客戶端找到這些端口呢?就需要一個經(jīng)紀人(rpc服務)

NFS服務:

(1)NFS服務(有很多進程和端口),把自己的端口告訴RPC。

(2)RPC服務(對外固定端口111)。

客戶端請求NFS服務,先找RPC 111 ,查到NFS的端口,發(fā)給客戶。

客戶端:開啟PRC服務,

服務端:先開啟RPC服務然后開啟NFS服務,NFS服務會把端口號告訴RPC服務。

客戶端的PRC服務通過TCP/IP協(xié)議找到服務端的RPC服務,

服務端的RPC通過TCP/IP返回給客戶端的RPC并告訴服務端NFS的端口號111,

客戶端的RPC或通過TCP/IP直接訪問客戶端的NFS服務。

5、安裝

?yum install -y nfs-utils rpcbind

查看:

[root@nfs01 ~]# rpm -aq nfs-utils rpcbind

rpcbind-0.2.0-47.el7.x86_64

nfs-utils-1.3.0-0.61.el7.x86_64

開啟rpcinfo服務

[root@nfs01 ~]# systemctl start rpcbind.service

[root@nfs01 ~]# systemctl enable rpcbind.service

檢查有沒有服務:

[root@nfs01 ~]# rpcinfo -p 127.0.0.1

???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服務:

[root@nfs01 ~]# systemctl start nfs

[root@nfs01 ~]# systemctl enable nfs

檢查本地有沒有開啟服務:

[root@nfs01 ~]# rpcinfo -p 127.0.0.1

???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 ?54138 ?status

????100024 ???1 ??tcp ?45145 ?status

????100005 ???1 ??udp ?20048 ?mountd

????100005 ???1 ??tcp ?20048 ?mountd

????100005 ???2 ??udp ?20048 ?mountd

????100005 ???2 ??tcp ?20048 ?mountd

????100005 ???3 ??udp ?20048 ?mountd

????100005 ???3 ??tcp ?20048 ?mountd

????100003 ???3 ??tcp ??2049 ?nfs

????100003 ???4 ??tcp ??2049 ?nfs

????100227 ???3 ??tcp ??2049 ?nfs_acl

????100003 ???3 ??udp ??2049 ?nfs

????100003 ???4 ??udp ??2049 ?nfs

????100227 ???3 ??udp ??2049 ?nfs_acl

????100021 ???1 ??udp ?55016 ?nlockmgr

????100021 ???3 ??udp ?55016 ?nlockmgr

????100021 ???4 ??udp ?55016 ?nlockmgr

????100021 ???1 ??tcp ?43292 ?nlockmgr

????100021 ???3 ??tcp ?43292 ?nlockmgr

????100021 ???4 ??tcp ?43292 ?nlockmgr

查看端口:

[root@nfs01 ~]# netstat -lntup|egrep "rpc|nfs"

tcp ???????0 ?????0 0.0.0.0:20048 ??????????0.0.0.0:* ??????????????LISTEN ?????8293/rpc.mountd ????

tcp ???????0 ?????0 0.0.0.0:45145 ??????????0.0.0.0:* ??????????????LISTEN ?????8240/rpc.statd ?????

tcp6 ??????0 ?????0 :::20048 ???????????????:::* ???????????????????LISTEN ?????8293/rpc.mountd ????

tcp6 ??????0 ?????0 :::60227 ???????????????:::* ???????????????????LISTEN ?????8240/rpc.statd ?????

udp ???????0 ?????0 0.0.0.0:20048 ??????????0.0.0.0:* ??????????????????????????8293/rpc.mountd ????

udp ???????0 ?????0 0.0.0.0:746 ????????????0.0.0.0:* ??????????????????????????8203/rpcbind ???????

udp ???????0 ?????0 127.0.0.1:784 ??????????0.0.0.0:* ??????????????????????????8240/rpc.statd ?????

udp ???????0 ?????0 0.0.0.0:54138 ??????????0.0.0.0:* ??????????????????????????8240/rpc.statd ?????

udp6 ??????0 ?????0 :::20048 ???????????????:::* ???????????????????????????????8293/rpc.mountd ????

udp6 ??????0 ?????0 :::37576 ???????????????:::* ???????????????????????????????8240/rpc.statd ?????

udp6 ??????0 ?????0 :::746 ?????????????????:::* ???????????????????????????????8203/rpcbind? ? ??


6、配置nfs

nfs配置文件:/etc/exports

查看源頭:man exports

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)

待共享的目錄訪問的主機(權限)

(1)待共享的目錄存東西的目錄取東西的目錄例如/data

(2)訪問的主機,

172.16.1.7(web01) 單個主機

172.16.1.0/24網(wǎng)段

172.16.1.*網(wǎng)段

master主機名

(3)()權限

rw可讀寫 ???read ?write

ro只讀 ??????read ??only

sync寫到磁盤才算完成,安全

async異步寫到遠程緩沖區(qū),快,不安全


NFS默認用戶nfsnobody


[root@nfs01 ~]# mkdir -p /data

[root@nfs01 ~]# ll -ld /data/

drwxr-xr-x 2 root root 105 Apr 16 17:12 /data/

[root@nfs01 ~]# grep nfs /etc/passwd

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data

[root@nfs01 ~]# ll -ld /data/

drwxr-xr-x 2 nfsnobody nfsnobody 105 Apr 16 17:12 /data/

重啟NFS

平滑重啟,不影響用戶

在生產(chǎn)場景中必須要平滑重啟。

[root@nfs01 ~]# systemctl reload nfs

[root@nfs01 ~]# exportfs -r

上述二者等價,選一個即可。

檢查:

[root@nfs01 ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/16

看到共享目錄了。


服務端本地掛載:

[root@nfs01 ~]# mount -t nfs 172.16.1.31:/data/ /mnt

[root@nfs01 ~]# df -h

Filesystem ????????Size ?Used Avail Use% Mounted on

/dev/sda3 ??????????90G ?1.7G ??88G ??2% /

devtmpfs ??????????900M ????0 ?900M ??0% /dev

tmpfs ?????????????910M ????0 ?910M ??0% /dev/shm

tmpfs ?????????????910M ?9.6M ?901M ??2% /run

tmpfs ?????????????910M ????0 ?910M ??0% /sys/fs/cgroup

/dev/sda1 ????????1014M ?138M ?877M ?14% /boot

tmpfs ?????????????182M ????0 ?182M ??0% /run/user/0

172.16.1.31:/data ??90G ?1.7G ??88G ??2% /mnt

[root@nfs01 ~]# touch /mnt/oldboy.txt

[root@nfs01 ~]# ls /mnt/

1 ?2 ?3 ?4 ?5 ?a ?b ?c ?d ?oldboy.txt



換到web01掛載:

1、安裝

yum install -y nfs-utils rpcbind


[root@webol ~]# ?rpm -aq nfs-utils rpcbind

nfs-utils-1.3.0-0.61.el7.x86_64

rpcbind-0.2.0-47.el7.x86_64

2、啟動

[root@webol ~]# systemctl start rpcbind

[root@webol ~]# systemctl enable rpcbind

[root@webol ~]# netstat -lntup|grep rpc

udp ???????0 ?????0 0.0.0.0:727 ????????????0.0.0.0:* ??????????????????????????8184/rpcbind ???????

udp6 ??????0 ?????0 :::727 ?????????????????:::* ???????????????????????????????8184/rpcbind ???????

[root@webol ~]# netstat -lntup|grep rpc

udp ???????0 ?????0 0.0.0.0:727 ????????????0.0.0.0:* ??????????????????????????81

udp6 ??????0 ?????0 :::727 ?????????????????:::* ???????????????????????????????81

[root@webol ~]# ps -ef |grep rpcbind

rpc ???????8184 ?????1 ?0 12:17 ? ???????00:00:00 /sbin/rpcbind -w

root ??????8210 ??7920 ?0 12:18 pts/2 ???00:00:00 grep --color=auto rpcbind


查看NFS服務器提供的共享目錄:

[root@webol ~]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data 172.16.1.0/16


操作前備份,操作后檢查。

課后作業(yè)

1、backup客戶端掛載好

2、實現(xiàn)開機自動掛載(fstab里實現(xiàn),rc.local)

3、項目實戰(zhàn)

Web01 backup客戶端實現(xiàn)掛載到nfs

實現(xiàn)開機自動掛載。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容