起因:應用部署在多台服務器上的時候,我們上傳文件到一個指定共享目錄,這個共享目錄要各台服務器都能訪問到。程序本地訪問到。
經過:百度一番后,搜索做共享盤用的最多的就是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