# Turn off v2 and v3 protocol support # RPCNFSDARGS="-N 2 -N 3" # Turn off v4 protocol support #RPCNFSDARGS="-N 4" /*把這句話的#號去掉*/ NFS分為三個版本,即NFS-2 NFS- ...
- 最近由於項目原因需要和其他兩家公司對接,需要取對方伺服器中的圖像數據,原本約定是三方都通過http協議來進行通訊,奈何對接方不配合,說文件就在他們伺服器放著,怎麼取他們不管。所以採取將對方伺服器磁碟掛載到本地的方法來獲取。
- NFS(Network File System)即網路文件系統,是FreeBSD支持的文件系統中的一種,它允許網路中的電腦之間通過TCP/IP網路共用資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪問本地文件一樣。
- 本文的兩個linux環境分別為CentOS和Ubuntu,其他版本類似。
- 將Ubuntu下的/home/dhcc/nfs掛載到CentOS下/home/shao/nfs。
- Ubuntu:
- 1.安裝配置NFS伺服器
- sudo apt-get install nfs-kernel-server nfs-common
- 2.配置參數
- vim /etc/exports
- 文件最後加入一行,註意不要加到註釋
- /home/dhcc/nfs *(rw,sync,no_root_squash) #該目錄為nfs服務根目錄,*表示允許所有的網段訪問,也可以使用具體的IP,參數詳解在最後
- 3.建立nfs目錄(如果配置了已存在的目標可跳過此步)
- sudo mkdir /home/dhcc/nfs
- 4.查看配置是否生效
- exportfs -r #更新配置
- showmount -e
- 如果生效會顯示
- Export list for Ubuntu:
- home/dhcc/nfs
- 5.重啟nfs服務
- /etc/init.d/nfs-kernel-server restart
- CentOS:
- 1.創建掛載目錄(如果已存在請跳過)
- mkdir /home/shao/nfs
- 2.安裝nfs-utils
- yum install nfs-utils
- 2.mount掛載
- mount -t nfs 10.18.105.116:/home/dhcc/nfs /home/shao/nfs #Ubuntu的ip為10.18.105.116
- 3.開機自動掛載
- vim /etc/rc.local
- 添加一行
- sudo mount -t nfs 10.18.105.116:/home/dhcc/nfs /home/shao/nfs
- 如果出現mount.nfs:access denied by server while mounting問題,可通過以下幾種途徑嘗試解決:
- 1.修改需掛載的nfs目錄許可權
- chmod 755 /home/dhcc/nfs
- 2.如果埠號大於1024,則需要將 insecure 選項加入到配置文件(/etc/exports):
- vim /etc/exports
- 文件最後加入一行
- /home/dhcc/nfs *(insecure,rw,sync,no_root_squash)
- 3.修改/etc/sysconfig/nfs文件
- # Turn off v2 and v3 protocol support # RPCNFSDARGS="-N 2 -N 3" # Turn off v4 protocol support #RPCNFSDARGS="-N 4" /*把這句話的#號去掉*/ NFS分為三個版本,即NFS-2 NFS-3 NFS-4,該配置文件預設關閉了這三個的NFS版本,我們只需要打開NFS-4即可。
- 附錄:NFS常用參數如下:
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