linux下通過NFS將遠程磁碟mount到本地,linuxnfs磁碟mount
-
最近由於項目原因需要和其他兩家公司對接,需要取對方伺服器中的映像資料,原本約定是三方都通過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