NFS 文件共享能解決在集群環境下圖片、附件等文件共享的問題。
現在假設有兩台機器192.168.1.10和192.168.1.11
我們將192.168.1.10做為服務端,192.168.1.11作為客戶端。
一、服務端操作
1.安裝NFS服務端
[plain]
sudo apt-get install nfs-kernel-server
2.打開/etc/exports文件,在末尾加入:
[plain]
/home/zdw *(rw,sync,no_root_squash)
其中/home/zdw 是你要共享的目錄
* :允許所有的網段訪問
rw :讀寫權限
sync:資料同步寫入內在和硬盤
no_root_squash:nfs客戶端共享目錄使用者權限
如果需要指定只對某個網段(如192.168.1.1~192.168.1.192)可以這樣設置
[plain]
sudo /usr/local/www/ 192.168.1.*(rw,sync,no_root_squash,no_subtree_check)
也可以手動指定多個網段
[plain]
/usr/local/www/ 192.168.1.10(rw,sync,no_root_squash,no_subtree_check) 192.168.1.11(rw,sync,no_root_squash,no_subtree_check)
多目錄共享添加多行即可。
3.重啟服務
[plain]
sudo /etc/init.d/portmap restart <---重啟portmap,
sudo /etc/init.d/nfs-kernel-server restart <---重啟nfs服務
showmount -e <---顯示共享出的目錄
二、客戶端端操作
1.安裝nfs服務
安裝nfs-common或nfs-kernel-server都行
[plain]
sudo apt-get isntall nfs-common
或
[plain]
sudo apt-get install nfs-kernel-server
2.掛載
[plain]
sudo mount -t nfs 192.168.1.10:/usr/local/www /usr/local/www
這一命令就已經將10上的/usr/local/www 目錄掛載到客戶機的/usr/loca/www目錄上了。
可以在客戶機上掛載目錄裡創建一個文件進行測試。
[plain]
sudo touch 1.txt
加到服務端上查看發現文件已經存在了,共享成功。
3.取消掛載
[plain]
sudo umount /usr/local/www
如果取消掛載的時候提示 “/usr/local/www device is busy ” 的提示,表示目錄正在使用,無法取消掛載。
這裡我們可以執行如下命令:
[plain]
fuser -km /usr/local/www
df -lh
完成後再執行umount命令就可以了。
4.開機自動掛載
如果想實現開機自動掛載,可以在/etc/rc.local文件中exit 0之前
加入我們要掛載的命令
sudo mount -t nfs 192.168.1.10:/usr/local/www /usr/local/www
即可。
三、附錄NFS常用參數
[plain]
ro 只讀訪問
rw 讀寫訪問sync 所有數據在請求時寫入共享
async nfs在寫入數據前可以響應請求
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_squas root用戶具有根目錄的完全管理訪問權限
anonuid=xxx 指定nfs服務器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定nfs服務器/etc/passwd文件中匿名用戶的GID