Linux環境下部署nfs

語言: CN / TW / HK

一起養成寫作習慣!這是我參與「掘金日新計劃 · 4 月更文挑戰」的第20天,點選檢視活動詳情

部署nfs

問題描述

很多時候,對於一些檔案管理,有很多的專案,大部分都是用磁碟進行儲存管理!!!

部署到正式環境下,可能有多臺linux伺服器,那就會有這樣的一個問題:

檔案上傳,上傳到伺服器A,伺服器A的磁碟儲存了這個檔案;那伺服器B,就無法讀取到這個檔案了!!!

那麼,如何做到伺服器B也能訪問到伺服器A的檔案呢?

那就是檔案共享了!!!

NFS就是Network File System的縮寫,它最大的功能就是可以通過網路,讓不同的機器、不同的作業系統可以共享彼此的檔案。

那就是說,可以講伺服器A的資料夾進行共享,伺服器B就掛載伺服器A的資料夾。

那就開幹吧!!!裝它!!!

image.png

一、 伺服器資源

服務名稱: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地址

image.png

好了,以上就是linux部署nfs的全過程了,就是這樣了!!!^_^

今天就先到這裡了,溜了溜了溜了!!!^_^

image.png