日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

JavaWeb项目架构之NFS文件服务器

發(fā)布時間:2025/3/15 java 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb项目架构之NFS文件服务器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

NFS簡介

NFS(Network File System)即網(wǎng)絡(luò)文件系統(tǒng)。

主要功能:通過網(wǎng)絡(luò)(局域網(wǎng))讓不同的主機(jī)系統(tǒng)之間可以共享文件或目錄。

主要用途:NFS網(wǎng)絡(luò)文件系統(tǒng)一般被用來存儲共享視頻,圖片,附件等靜態(tài)資源文件。

NFS存儲服務(wù)

無NFS文件共享存儲

當(dāng)用戶A通過互聯(lián)網(wǎng)上傳文件時,經(jīng)過負(fù)載均衡,隨機(jī)或者定向分配到某個節(jié)點(diǎn)。但是當(dāng)用戶B去下載這個文件的時候,并不確定會向哪個節(jié)點(diǎn)發(fā)送請求,這樣會導(dǎo)致用戶存在一定幾率下載不到的情況。

有NFS文件共享存儲

當(dāng)用戶A通過互聯(lián)網(wǎng)上傳文件時,經(jīng)過負(fù)載均衡,無論發(fā)送到哪個節(jié)點(diǎn)都會被存儲到NFS文件服務(wù)器。但是當(dāng)用戶B去下載這個文件的時候,任何節(jié)點(diǎn)都可以讀取NFS文件服務(wù)器的文件。

NFS服務(wù)的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

  • 簡單容易上手
  • 方便部署非常快速,維護(hù)十分簡單
  • 節(jié)省本地存儲空間將常用的數(shù)據(jù)存放在一臺服務(wù)器可以通過網(wǎng)絡(luò)訪問

缺點(diǎn)

  • 在高并發(fā)下NFS效率/性能有限
  • NFS的數(shù)據(jù)是明文的,對數(shù)據(jù)完整性不做驗(yàn)證
  • 多臺機(jī)器掛載NFS服務(wù)器時,連接管理維護(hù)麻煩
  • 容易發(fā)生單點(diǎn)故障,如果服務(wù)端宕機(jī),所有客戶端將不能訪問
  • 客戶端沒用用戶認(rèn)證機(jī)制,且數(shù)據(jù)是通過明文傳送,安全性一般(一般建議在局域網(wǎng)內(nèi)使用)

RPC工作流程

NFS支持的功能非常多,不同的功能會有不同的服務(wù)來完成,很多服務(wù)都需要監(jiān)聽在一些端口,其中的很多端口并不是固定的。這些服務(wù)在啟動時,都需要向rpcbind服務(wù)注冊一個端口,rpcbind服務(wù)隨機(jī)選取一個未被使用的端口予以分配。rpcbind服務(wù)監(jiān)聽在111端口,所以rpcbind的主要功能就是指定每個RPC service對應(yīng)的port number,并且通知給客戶端,讓客戶端連接到正確的端口上去。

客戶端向NFS服務(wù)器端請求的步驟:

  • 首先用戶訪問網(wǎng)站程序,由程序在NFS客戶端上發(fā)出存取NFS文件的請求,這是NFS客戶端的RPC服務(wù)就不通過網(wǎng)絡(luò)向NFS服務(wù)器端的RPC服務(wù)的111端口發(fā)出NFS文件存取功能的查詢請求,包括要實(shí)現(xiàn)的什么功能。

  • NFS服務(wù)器端的RPC服務(wù)找到對應(yīng)的已注冊的NFS端口,通知NFS客戶端的RPC服務(wù)。

  • 此時NFS客戶端獲取到正確的端口,并與NFS聯(lián)機(jī)存取數(shù)據(jù)。

  • NFS客戶端把數(shù)據(jù)存取成功后,返回給客戶端程序,告知用戶存取結(jié)果。

注意:由于rpc service在啟動時需要向rpcbind注冊端口,所以rpcbind要先啟動。另外若rpcbind重新啟動,原來注冊的數(shù)據(jù)也會不見,因此一但rpcbind重新啟動,讓所管理的服務(wù)因?yàn)樾枰匦聠右灾匦孪騬pcbind注冊。

NFS服務(wù)器端配置

NFS服務(wù)器:192.168.1.180

檢查并安裝NFS
[root@iZ2ze74fkxrls31tr2ia2fZ ~]# rpm -qa rpcbind nfs-utils nfs-utils-1.3.0-0.48.el7_4.1.x86_64 rpcbind-0.2.0-42.el7.x86_64

如果沒有,安裝 NFS 服務(wù)器所需的軟件包,實(shí)際上需要安裝兩個包nfs-utils(nfs服務(wù)主程序)和rpcbind(rpc主程序), 不過當(dāng)使用yum安裝nfs-utils時會把rpcbind一起安裝上。

yum install -y nfs-utils
配置說明
/etc/sysconfig/nfs #NFS的主配置文件 /etc/exports #配置共享目錄的文件

/etc/exports的配置格式:

nfs共享目錄 nfs客戶端地址1(參1,參2.....) 客戶端地址2(參1,參2...)

說明:

nfs共享目錄:為nfs服務(wù)器要共享的實(shí)際目錄,絕對目錄。注意權(quán)限問題。

nfs客戶端地址:為nfs服務(wù)器授權(quán)可以訪問的客戶端的地址,可以是單獨(dú)的ip地址或主機(jī)名,域名。也可以是整個網(wǎng)段。

授權(quán)整個網(wǎng)段:eg:10.0.0.0/24

文件配置實(shí)例說明:

/data/fileserver 192.168.1.190(rw,sync,no_root_squash)

若服務(wù)器端對/etc/exports文件進(jìn)行了修改,可以通過exportfs命令重新加載服務(wù)而不需要重啟服務(wù)。若重啟服務(wù)需要重新向prcbind注冊,而且對客戶端的影響也很大,所以盡量使用exportfs命令來使配置文件生效。

exportfs: exportfs -ar #重新導(dǎo)出所有的文件系統(tǒng) exportfs -r #導(dǎo)出某個文件系統(tǒng) exportfs -au #關(guān)閉導(dǎo)出的所有文件系統(tǒng) exportfs -u #關(guān)閉指定的導(dǎo)出的文件系統(tǒng)
相關(guān)參數(shù) (man exports)

A. 選項(xiàng):選項(xiàng)用來設(shè)置輸出目錄的訪問權(quán)限、用戶映射等。

  • 設(shè)置輸出目錄只讀:ro
  • 設(shè)置輸出目錄讀寫:rw

B. 用戶映射選項(xiàng)

  • all_squash:將遠(yuǎn)程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(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);
  • anongid=xxx:將遠(yuǎn)程訪問的所有用戶組都映射為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);

C. 其它選項(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ū)中,必要時才寫入磁盤;
  • wdelay:檢查是否有相關(guān)的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可以提高效率(默認(rèn)設(shè)置);
  • no_wdelay:若有寫操作則立即執(zhí)行,應(yīng)與sync配合使用;
  • subtree:若輸出目錄是一個子目錄,則nfs服務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置);
  • no_subtree:即使輸出目錄是一個子目錄,nfs服務(wù)器也不檢查其父目錄的權(quán)限,這樣可以提高效率;
啟動NFS服務(wù)端上nfs服務(wù)

1、先為rpcbind和nfs做開機(jī)啟動:

systemctl enable rpcbind.service systemctl enable nfs-server.service

2、然后分別啟動rpcbind和nfs服務(wù):

systemctl start rpcbind.service systemctl start nfs-server.service
查看服務(wù)是否啟動
[root@iZ2ze74fkxrls31tr2ia2fZ ~]# rpcinfo -pprogram vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 47426 status100024 1 tcp 35379 status100005 1 udp 20048 mountd100005 1 tcp 20048 mountd100005 2 udp 20048 mountd100005 2 tcp 20048 mountd100005 3 udp 20048 mountd100005 3 tcp 20048 mountd100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 3 tcp 2049 nfs_acl100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 3 udp 2049 nfs_acl100021 1 udp 53046 nlockmgr100021 3 udp 53046 nlockmgr100021 4 udp 53046 nlockmgr100021 1 tcp 38280 nlockmgr100021 3 tcp 38280 nlockmgr100021 4 tcp 38280 nlockmgr

使用exportfs查看本機(jī)上已經(jīng)共享的目錄:

exportfs

NFS客戶端配置

NFS客戶端:192.168.1.190

安裝nfs,并啟動服務(wù)。

yum install -y nfs-utils systemctl enable rpcbind.service systemctl start rpcbind.service

客戶端不需要啟動nfs服務(wù),只需要啟動rpcbind服務(wù)。

檢查 NFS 服務(wù)器端是否有目錄共享
showmount -e 192.168.1.180
掛載遠(yuǎn)程服務(wù)
mount -t nfs 192.168.1.180:/data/fileserver /data/itstyle
查看掛載
df -h
開機(jī)掛載,編輯/etc/fstab

vim /etc/fstab 加入以下內(nèi)容:

# 設(shè)備文件 掛載點(diǎn) 文件系統(tǒng)類型 mount參數(shù) dump參數(shù) fsck順序 192.168.1.180:/data/fileserver /data/itstyle nfs defaults,_netdev 0 0

_netdev明確說明這是網(wǎng)絡(luò)文件系統(tǒng),避免網(wǎng)絡(luò)啟動前掛載出現(xiàn)錯誤。

保存后,重新掛載 /etc/fstab 里面的內(nèi)容。
mount -a

轉(zhuǎn)載于:https://www.cnblogs.com/smallSevens/p/8458654.html

總結(jié)

以上是生活随笔為你收集整理的JavaWeb项目架构之NFS文件服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。