【教程】配置NFS共享直接訪問目標(biāo)服務(wù)器的存儲目錄

轉(zhuǎn)載請注明出處:小鋒學(xué)長生活大爆炸[xfxuezhang.cn]
目錄
前景提要
NFS安裝教程
舊服務(wù)器上
新服務(wù)器上
驗證安裝
優(yōu)缺點
擴展

前景提要
????????我們新服務(wù)器的硬盤容量很小,但舊服務(wù)器的硬盤容量很大。如何在不拔硬盤的情況下,直接已本地目錄的方式,將舊服務(wù)器的硬盤空間掛載到新服務(wù)器下?可以通過NFS共享實現(xiàn)。
NFS安裝教程
舊服務(wù)器上
安裝NFS服務(wù)端,比如228:
# 安裝NFS服務(wù)端
sudo apt install nfs-kernel-server
# 檢查是否已經(jīng)啟動
sudo systemctl status nfs-server
# 查看可用容量
df -h
# 創(chuàng)建一個NFS共享目錄
sudo mkdir -p /mnt/share
# 給目錄權(quán)限
sudo chown nobody:nogroup /mnt/share/ -R
sudo chmod 777 /mnt/share/* -R
編輯exports配置文件,控制訪問權(quán)限:
sudo cp /etc/exports? /etc/exports.bak
sudo vim /etc/exports
# 如果只允許一個客戶端訪問,可以只寫一個客戶端的IP地址
/mnt/share 192.168.43.131(rw,sync,no_subtree_check)
?
# 如果只允許多個客戶端訪問,可以如下一樣寫
/mnt/share 192.168.43.131(rw,sync,no_subtree_check)
/mnt/share 192.168.43.171(rw,sync,no_subtree_check)
/mnt/share 192.168.43.137(rw,sync,no_subtree_check)
?
# 如果運行一個網(wǎng)段的客戶端訪問,可以這樣寫:
/mnt/share 192.168.43.*(rw,sync,no_subtree_check)
或者
/mnt/share 192.168.43.0/24(rw,sync,no_subtree_check)
我們設(shè)置允許一個網(wǎng)段的訪問:
/mnt/share 202.66.266.*(rw,sync,no_subtree_check,no_root_squash,crossmnt,fsid=0)
解釋:
rw:表示共享是可讀可寫的,即NFS客戶端可以對共享目錄進行讀取和寫入操作。
sync:表示數(shù)據(jù)寫入操作需要同步完成后才返回確認(rèn)。當(dāng)NFS客戶端進行寫入操作時,NFS服務(wù)器會等待數(shù)據(jù)完全寫入到硬盤之后才返回確認(rèn)給客戶端。這樣可以確保數(shù)據(jù)的一致性和可靠性,但也可能降低寫入性能。
no_root_squash:當(dāng)使用no_root_squash選項時,NFS服務(wù)器將不會將來自NFS客戶端的root用戶權(quán)限限制為匿名用戶權(quán)限。具體而言,如果客戶端使用root權(quán)限訪問NFS共享目錄,那么服務(wù)器上的root用戶將保持其完整的權(quán)限,包括對共享目錄的讀寫權(quán)限。這個選項對于需要在NFS共享中保留root用戶權(quán)限的場景非常有用,但也需要謹(jǐn)慎使用,因為它可能導(dǎo)致安全風(fēng)險。
no_subtree_check:當(dāng)使用no_subtree_check選項時,NFS服務(wù)器將不會檢查客戶端請求的子目錄是否在共享目錄的子樹范圍內(nèi)。默認(rèn)情況下,NFS服務(wù)器會檢查客戶端請求的路徑是否在共享目錄的子樹范圍內(nèi),以確保安全性。但在某些情況下,特別是當(dāng)共享的目錄結(jié)構(gòu)包含符號鏈接時,這可能會導(dǎo)致問題。使用no_subtree_check選項可以禁用這種檢查,但同樣需要謹(jǐn)慎使用,以確保共享目錄的安全性。
crossmnt:是NFS服務(wù)器配置選項之一,用于指定NFS共享的子目錄的交叉掛載。當(dāng)在NFS服務(wù)器上配置了交叉掛載時,可以允許NFS客戶端掛載共享目錄的子目錄,而不僅僅是共享目錄本身。通常情況下,NFS服務(wù)器只允許NFS客戶端掛載共享目錄本身,而不允許掛載共享目錄的子目錄。但通過使用crossmnt選項,可以在共享目錄中啟用子目錄的掛載。
fsid=0:是NFS(Network File System)服務(wù)器配置選項之一,用于指定NFS共享的文件系統(tǒng)標(biāo)識符(File System Identifier)。在NFS配置中,每個共享的文件系統(tǒng)都需要一個唯一的標(biāo)識符。默認(rèn)情況下,NFS使用共享目錄的inode號作為標(biāo)識符,但這可能會導(dǎo)致一些問題,尤其是在重新掛載共享時。通過使用fsid=0選項,可以顯式地指定NFS共享的標(biāo)識符為0。這樣做的目的是確保每個共享都具有相同的標(biāo)識符,從而消除重新掛載導(dǎo)致的問題。當(dāng)存在多個共享目錄時,為每個共享目錄設(shè)置fsid選項是一個良好的實踐,尤其是當(dāng)使用NFSv4或更高版本時。設(shè)置fsid可以確保每個共享目錄具有唯一的標(biāo)識符,避免潛在的沖突和問題。
重啟服務(wù)
sudo exportfs -arv
sudo /etc/init.d/rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
# 查看端口監(jiān)聽
netstat -tl | grep nfs
添加防火墻
sudo iptables -A INPUT -p tcp --dport 111 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 111 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 2049 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 58327 -j ACCEPT
sudo iptables -L INPUT -n -v
有可能是運行的firewall
# 查看運行狀態(tài),如果是running就表示激活
sudo firewall-cmd --state
# 已經(jīng)放行的端口
sudo firewall-cmd --list-ports
# 已經(jīng)放行的服務(wù)
sudo firewall-cmd --list-services
# 放行nfs、rpc服務(wù)
sudo firewall-cmd --add-service=nfs --add-service=rpc-bind --permanent
# 放行指定端口
# sudo firewall-cmd --add-port=2049/tcp --permanent
# 重新加載配置
sudo firewall-cmd --reload
?
# 如果還有問題,建議直接禁止firewalld(手動狗頭)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
新服務(wù)器上
安裝NFS客戶端,比如108:
# 安裝NFS客戶端
sudo apt install nfs-common -y
# 創(chuàng)建目錄,準(zhǔn)備掛載228
mkdir -p /mnt/share_228
# 或者
mkdir /home/data1/share_228
# 查看rpc連接信息
rpcinfo -p 202.66.266.228
# 掛載NFS
sudo mount -t nfs -o vers=4 -v 202.66.266.228:/mnt/share /home/data1/share_228
# 卸載NFS
# sudo umount nfs /home/data1/share_228
# 自動掛載NFS
sudo vim /etc/fstab
# 寫入:
# 202.66.266.228:/mnt/share /home/data1/share_228? ?nfs? ?defaults,vers=4,timeo=300,retrans=3,_netdev? 0 0
# 重新加載已配置
sudo mount -a
驗證安裝
在新服務(wù)器上的/home/data1/share_228下添加文件,在舊服務(wù)器的/mnt/share下能同步顯示;反向亦然。
優(yōu)缺點
優(yōu)點:就跟本地目錄一樣,使用非常方便。
缺點:當(dāng)文件很大時候,傳輸就需要很久??讀取也就要很久。后知后覺。
擴展
????????samba也可以實現(xiàn)類似效果