Linux環境下部署nfs
一起養成寫作習慣!這是我參與「掘金日新計劃 · 4 月更文挑戰」的第20天,點選檢視活動詳情。
部署nfs
問題描述
很多時候,對於一些檔案管理,有很多的專案,大部分都是用磁碟
進行儲存管理!!!
部署到正式環境下,可能有多臺linux伺服器,那就會有這樣的一個問題:
檔案上傳,上傳到伺服器A,伺服器A的磁碟儲存了這個檔案;那伺服器B,就無法讀取到這個檔案了!!!
那麼,如何做到伺服器B也能訪問到伺服器A的檔案呢?
那就是檔案共享
了!!!
NFS
就是Network File System
的縮寫,它最大的功能就是可以通過網路,讓不同的機器、不同的作業系統可以共享彼此的檔案。
那就是說,可以講伺服器A的資料夾進行共享,伺服器B就掛載伺服器A的資料夾。
那就開幹吧!!!裝它!!!
一、 伺服器資源
服務名稱:linux伺服器
IP:[請檢視資源分配文件]
作業系統:CentOS 6.9 x64
二、服務端安裝
2.1、NFS安裝
sh
yum -y install nfs-utils nfs-utils-lib rpcbind
注意:如果伺服器無法上網,可以找一個能上網的伺服器先下載相關依賴安裝包(伺服器系統需要一致,centos6對應或者centos7對應即可)。
依賴下載命令如下:
sh
yumdownloader nfs-utils nfs-utils-lib rpcbind --resolve
2.2、NFS配置
確定伺服器的磁碟情況,再建立共享目錄:
sh
df -h
sh
mkdir /opt/app/uploaded-files
編輯 /etc/sysconfig/nfs 檔案:
sh
vi /etc/sysconfig/nfs
新增如下內容自定義埠:
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
編輯 /etc/exports 檔案:
sh
vi /etc/exports
新增如下內容:
#設定共享的ip段\
/opt/app/uploaded-files xxx.xx.xx.*(insecure,rw,sync,no_root_squash,no_all_squash)
下面是一些NFS共享的常用引數:
ro 只讀訪問
rw 讀寫訪問
sync 資料同步寫入到記憶體與硬碟當中
async 資料會先暫存於記憶體當中,而非直接寫入硬碟
secure NFS通過1024以下的安全TCP/IP埠傳送
insecure NFS通過1024以上的埠傳送
wdelay 如果多個使用者要寫入NFS目錄,則歸組寫入(預設)
no_wdelay 如果多個使用者要寫入NFS目錄,則立即寫入,當使用async時,無需此設定。
Hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的許可權(預設)
no_subtree_check 和上面相對,不檢查父目錄許可權
all_squash 共享檔案的UID和GID對映匿名使用者anonymous,適合公用目錄。
no_all_squash 保留共享檔案的UID和GID(預設)
root_squash root使用者的所有請求對映成如anonymous使用者一樣的許可權(預設)
no_root_squash root使用者具有根目錄的完全管理訪問許可權
2.3、NFS啟動
啟動伺服器:
``` service rpcbind restart
service nfs restart ```
設定開機啟動: ``` chkconfig --level 35 rpcbind on
chkconfig --level 35 nfs on
檢視埠:
rpcinfo -p
服務端驗證NFS共享:
showmount -e
```
注:正常能顯示出上面設定的共享目錄,如果報如下錯誤:
clnt_create: RPC: Program not registered
說明 rpcbind服務與NFS服務 啟動順序不對,把他倆都停了,重新啟動,先啟動rpcbind服務再啟動nfs服務;
注:正常也能顯示出上面設定的共享目錄,如果報如下錯誤:
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
說明防火牆沒有開啟相應需要開啟的埠,把防火牆關掉,再測試應該就可以正常了;不過防火牆比較重要,一般情況下,不會隨意關閉,在服務端可開啟如下命令列出的所有埠即可:
2.4、配置防火牆
啟動111,2049,30001,30002,30003,30004埠
vi /etc/sysconfig/iptables
新增以下內容:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30001 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30002 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30003 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30004 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30001 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30002 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30003 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 30004 -j ACCEPT
重啟防火牆
service iptables restart
2.5、漏洞修復
目標主機showmount -e資訊洩露
在正式環境對共享伺服器的hosts.allow和hosts.deny兩個檔案進行配置修改。具體修改如下:
vi /etc/hosts.allow
新增以下內容:
mountd:ip1
mountd:ip2
mountd:xxx.xx.xx.xx #(nfs伺服器ip)
vi /etc/hosts.deny
新增以下內容:
mountd:all
該檔案修改儲存後即刻生效,無需重啟任何服務,nfs服務會優先讀取hosts.allow檔案再讀取hosts.deny檔案。
於是上面配置的最終結果為只有ip1和ip2段的IP可以訪問查詢共享目錄,其他IP均拒絕訪問查詢共享目錄。
nfs客戶端結果如下: ``` showmount -e xxx.xx.xx.xx
rpc mount export: RPC: Authentication error; why = Failed (unspecified error) ```
注意:xxx.xx.xx.xx為NFS伺服器的ip地址
三、客戶端安裝
3.1、NFS安裝
yum -y install nfs-utils rpcbind
注意:如果伺服器無法上網,可以找一個能上網的伺服器先下載相關依賴安裝包(伺服器系統需要一致,centos6對應或者centos7對應即可)。
依賴下載命令如下:yumdownloader nfs-utils rpcbind --resolve
3.2、NFS啟動
啟動伺服器: ``` service rpcbind restart
service nfs restart
設定開機啟動:
chkconfig rpcbind on
chkconfig nfs on ```
3.3、建立掛載點
``` mkdir /opt/app/uploaded-files
mount -t nfs xxx.xx.xx.xx:/opt/app/uploaded-files /opt/app/uploaded-files ```
注意:xxx.xx.xx.xx為NFS伺服器的ip地址
3.3、刪除掛載點
unmount /opt/app/uploaded-files
3.4、驗證掛載點
df
或者建立檔案進行驗證:
mkdir /opt/app/uploaded-files/test
然後到服務端 /opt/app/uploaded-files 目錄下,是否出現一個 test的資料夾即可;
3.5、設定系統啟動自動掛載
vi /etc/fstab
新增以下內容:
xxx.xx.xxx.xx:/opt/app/uploaded-files /opt/app/uploaded-files nfs rw,tcp,intr 0 1
注意:xxx.xx.xx.xx為NFS伺服器的ip地址
好了,以上就是linux部署nfs的全過程了,就是這樣了!!!^_^
今天就先到這裡了,溜了溜了溜了!!!^_^
- JVM調優-常見的調優工具
- JVM調優-JVM調優實踐一
- nacos許可權繞過漏洞
- JVM調優-常見的垃圾回收器
- JVM調優-GC基本原理和調優關鍵分析
- 非一線城市,畢業快5年,沒車沒孩程式設計師 | 2022年中總結
- 使用jmeter壓測,生成dump記憶體快照,並用jvisualvm分析
- Skywalking分散式鏈路追蹤,無法記錄日誌分析(gateway閘道器)
- nacos的一些api和監聽器用法
- 一次線上ngix的504 gateway timeout排查(真實案例)
- rtsp通過ffmpeg nginx釋出成rtmp和http-flv部署文件
- http伺服器負載均衡安裝部署(apache keepalived)(一)
- 網路穿透,實現本地開發環境測試微信公眾號(2)
- 利用別人的映象製作屬於自己的Docker映象包(nginx,mysql,redis等)
- 處理專案掃描出來的一些常見漏洞bug(java相關)
- Docker打包製作openoffice映象(Dockerfile方式),並處理中文亂碼
- Docker打包製作rocketmq映象(Dockerfile方式),並執行啟動
- 安裝harbor作為docker映象倉庫
- Docker打包製作seata映象(Dockerfile方式),並執行啟動
- Docker映象jdk製作打包(各tag版本說明)