linux 通過nfs下提供目錄共享給其他服務器,就是做了個共享盤


起因:應用部署在多台服務器上的時候,我們上傳文件到一個指定共享目錄,這個共享目錄要各台服務器都能訪問到。程序本地訪問到。

經過:百度一番后,搜索做共享盤用的最多的就是nfs。

結果:找了個感覺還不錯的文檔跟着做,試了下,心領神會了。。

1、准備工作,所有需要用到這個目錄的服務器,都需要安裝nfs服務,然后設置開啟啟動,並且把所需服務啟動起來。

安裝所需服務nfs、rpcbin

yum install  -y nfs-utils rpcbind

分別設置開啟啟動

chkconfig nfs on 
chkconfig rpcbind on

啟動這兩個服務 

service rpcbind start 
service nfs start

備注:所有linux的服務啟動都是

重啟:[root@VM_15_8_centos server]# service 服務名 restart 
停止:[root@VM_15_8_centos server]# service 服務名 stop 
開啟:[root@VM_15_8_centos server]# service 服務名 start

 

2、創建共享目錄

我這有3台服務器
192.168.89.137 客戶端 A
192.168.89.138 客戶端 B
192.168.89.139 服務端 S

2.1 在服務端S上創建共享目錄,其實所有服務目錄都一樣比較好。這里是為了區分服務端與客戶端

mkdir -p /home/soft/nfs/server

2.2 編輯/etc/exports 文件,添加如下內容

/home/soft/nfs/server *(rw,no_root_squash,no_all_squash,sync)

說明:其中

/home/soft/nfs/server --共享目錄位置
* --IP限制,若是星號則都可以訪問,192.168.89.*,則是IP鄙視是192.168.89段的菜可以訪問。
(rw,no_root_squash,no_all_squash,sync) --(rw  ro 該目錄分享的權限是可擦寫 (read-write) 或只讀 (read-only),但最終能不能讀寫,還是與文件系統的 rwx 及身份有關。 
sync  async sync 代表數據會同步寫入到內存與硬盤中,async 則代表數據會先暫存於內存當中,而非直接寫入硬盤! 
no_root_squash  root_squash 客戶端使用 NFS 文件系統的賬號若為 root 時,系統該如何判斷這個賬號的身份?預設的情況下,客戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody, 如此對服務器的系統會較有保障。但如果你想要開放客戶端使用 root 身份來操作服務器的文件系統,那么這里就得要開 no_root_squash 才行! 
all_squash 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名用戶,通常也就是 nobody(nfsnobody) 啦! 
no_subtree_check 關閉子樹檢查 
anonuid  anongid anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名用戶的 UID 設定值,通常為 nobody(nfsnobody),但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中! anonuid 指的是 UID 而 anongid 則是群組的 GID 啰。 
其他選項可以通過man exports查閱man文檔)

2.3 刷新配置,讓修改的配置立即生效
cd /etc 
exportfs -r

2.4 重啟服務

service nfs restart

2.5 查看服務注冊情況

說明下,如果不設置端口信息,那么nfs會隨機啟用端口提供服務,不利於服務器之間做安全控制,所以我們設定固定端口,在所有的服務器上都設置相同端口。

vi /etc/sysconfig/nfs
文件末端添加如下內容

RQUOTAD_PORT=30001 
LOCKD_TCPPORT=30002 
LOCKD_UDPPORT=30002 
MOUNTD_PORT=30003 
STATD_PORT=30004

重啟服務
service nfs restart

查看RPC注冊情況
rpcinfo -p localhost

 rpcinfo 選項與參數: 

-p :針對某 IP (未寫則預設為本機) 顯示出所有的 port 與 porgram 的信息; 
-t :針對某主機的某支程序檢查其 TCP 封包所在的軟件版本; 
-u :針對某主機的某支程序檢查其 UDP 封包所在的軟件版本;

2.6 查詢本機的nfs共享盤信息情況

showmount -e localhost 
也可以任意客戶機
showmount -e 192.168.89.139

 

 

3、客戶端配置

3.1 掛在盤創建

執行命令:

mkdir -p /home/soft/nfs/client

 

3.2 配置掛載服務端與客戶端關系,提供掛載穩定性,使用TCP進行傳輸

執行命令:

mount -t nfs -o vers=3 服務端IP:服務端目錄 當前機器目錄 -o proto=指定協議 -o nolock 
mount -t nfs -o vers=3 192.168.89.139:/home/soft/nfs/server /home/soft/nfs/client -o proto=tcp -o nolock 

 

3.4 查看掛載目錄情況

df -h

 

 

3.5 測試

在任意一台服務器的共享目錄下,創建或者上傳一個文件 上去。

然后查看目錄下的內容,我這里在137上上傳了一個index.html文件

 

 

然后查看各個服務器之間的目錄,可以看到服務端與多客戶端之間文件已經同步。

 

 

再刪除。再看。也都同步了。在服務端139上刪除index.html那么客戶端也都是刪除了的。

 

 

至此測試nfs成功共享文件目錄。

 

4、 取消掛載

當我們那個盤符不需要掛載了的時候,客戶端

執行:
umount /home/soft/nfs/client

提示繁忙 。。device is busy

強制執行:
umount -lf /home/soft/nfs/client

執行結果如下:

[root@localhost client]# umount /home/soft/nfs/client
umount.nfs: /home/soft/nfs/client: device is busy
[root@localhost client]# umount -lf /home/soft/nfs/client
[root@localhost client]# df -h
文件系統 容量 已用 可用 已用% 掛載點
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 6.5G 21G 24% /
/dev/sda1 1014M 163M 852M 16% /boot
tmpfs 98M 0 98M 0% /run/user/0

 

重啟服務后發現,
之前掛載的目錄內容也不見了

service nfs restart

 

 

 

5、設置開機掛載

否則重啟服務器后,之前命令配置的掛載信息就丟失了

 

 

 6、windows掛載

1.開啟nfs客戶端:打開控制面板》程序》啟用或關閉windos功能》選中nfs客戶端,點擊確定
.2.掛載:mount 192.168.89.139:/home/soft/nfs/server X:   (此處注意只能定位到nfs目錄,否則會報網絡錯誤)

會創建一個網絡盤X盤,里面掛載文件
3.取消掛載:右鍵X盤,點擊取消連接或者執行命令:umount X:

 

 打開后,也能看到我們掛載的共享目錄的內容

 

 ok,完成。。

 

參考文檔:

https://www.cnblogs.com/xujingyang/p/9209549.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM