問題1:linux
A機器上傳了一張圖片,結果B機器訪問的時候就提示404.
NFS,Network File System。網絡文件系統,即經過網絡,對在不一樣主機上的文件進行共享。數組
NFS最先由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新爲4.1版本,更新比較慢其實4.1是從2010年就開始使用了。服務器
NFS數據傳輸基於RPC協議,RPC爲Remote Procedure Call的簡寫。網絡
NFS應用場景是:A,B,C三臺機器上須要保證被訪問到的文件是同樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致;app
兩臺機器:async
wangzb01(133) 做爲服務端 wangzb03(135) 做爲客戶端測試
在wangzb01上安裝:nfs-utils包ui
# yum install -y nfs-utils
在wangzb02上也安裝:nfs-utils包;code
# yum install -y nfs-utils
在wangzb01上,修改配置文件/etc/exports,寫入如下內容圖片
/home/nfstestdir 192.168.153.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
語句釋義:
/home/nfstestdir :共享的目錄 rw: 讀寫 ro: 只讀 sync: 同步模式,內存數據實時寫入磁盤 async :非同步模式 no_root_squash: 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大 root_squash: 與上面選項相對,客戶端上的root用戶收到約束,被限定成某個普通用戶 all_squash:客戶端上全部用戶在使用NFS共享目錄時都被限定爲一個普通用戶 anonuid/anongid: 和上面幾個選項搭配使用,定義被限定用戶的uid和gid 192.168.153.0/24:爲客戶端的網段;
建立nfstestdir目錄,並給予777權限;
# mkdir /home/nfstestdir # chmod 777 /home/nfstestdir/
開啓nfs服務,並監聽端口,端口111爲其默認端口;
# systemctl start nfs
設置開機啓動:
# systemctl enable nfs
查看服務端共享目錄:
# showmount -e 192.168.153.133
注意:假如沒有出現共享目錄,有下面可能,注意排查:
一、二者通訊問題; 二、把二者的防火牆關閉
掛載NFS
# mount -t nfs 192.168.153.133:/home/nfstestdir /mnt/
建立測試文件:
# cd /mnt/ # touch 111
exportps命令經常使用選項:
-a 所有掛載或者所有卸載 -r 從新掛載 -u 卸載某一個目錄 -v 顯示共享目錄
在服務端上:
# exportfs -arv
這樣就可讓服務器直接生效,不須要再次重啓nfs服務
編輯配置文件,增長一個共享的目錄
/home/nfstestdir 192.168.153.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) /tmp/ 192.168.153.135(rw,sync,no_root_squash) //新增一個共享目錄,及其權限
用命令:exportfs -arv 直接生效,不用重啓NFS服務
問題:
若是使用NFS4版本,可能會有客戶端掛載NFS後,寫入新文件的屬主和數組都是nobody,即便咱們指定了anonuid anongid
解決:
客戶端在掛載的時候加個-o nfsvers=3
開機自動掛載
vi /etc/fstab 192.168.153.133:/data/wwwroot/bbs.aminglinux.cc/data /data/wwwroot/bbs.aminglinux.cc/data nfs defaults,nfsvers=3 0 0