nfs 配置及其使用

2021-06-04 13:51:06 字數 3891 閱讀 2139

next

previous

contents

# mkdir /home/share

# chown nobody.nogroup /home/share

這個檔案的內容非常簡單,每一行由丟擲路徑,客戶名列表以及每個客戶名後緊跟的訪問選項構成:

[共享的目錄] [主機名或ip(引數,引數)]
其中引數是可選的,當不指定引數時,nfs將使用預設選項。預設的共享選項是 sync,ro,root_squash,no_delay。

當主機名或ip位址為空時,則代表共享給任意客戶機提供服務。

當將同一目錄共享給多個客戶機,但對每個客戶機提供的許可權不同時,可以這樣:

[共享的目錄] [主機名1或ip1(引數1,引數2)] [主機名2或ip2(引數3,引數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=*** 指定nfs伺服器/etc/passwd檔案中匿名使用者的uid

anongid=*** 指定nfs伺服器/etc/passwd檔案中匿名使用者的gid

配置檔案/etc/exports內容如下:

$ cat /etc/exports

/home/share 192.168.102.15(rw,sync) *(ro)

配置說明: 對192.168.102.15賦予讀寫許可權,其他機器僅有唯讀許可權。

# /etc/init.d/nfs-kernel-server restart

# showmount -e 192.168.102.47

export list for 192.168.102.47:

/home/share (everyone)

在客戶機 192.168.102.15 上載入共享資源

# mount 192.168.102.47:/home/share /mnt

# cd /mnt

# echo '12345'> 123

即可發現對伺服器共享目錄可寫

# umount /mnt

在客戶機 192.168.102.61 上載入共享資源

# mount 192.168.102.47:/home/share /mnt

# cd /mnt

# ls

123# touch 321

touch: cannot touch `321': permission denied

# echo '123455' >123

-bash: 123: permission denied

即可發現對伺服器共享目錄只有讀取許可權,

這與我們在伺服器端的許可權設定是相符的。

是不是我們每次修改了配置檔案都需要重啟nfs服務呢? 這個時候我們就可以用exportfs命令重新掃瞄/etc/exports檔案,來使改動立刻生效。

比如:

# exportfs -au 解除安裝所有共享目錄

# exportfs -rv 重新共享所有目錄並輸出詳細資訊

exportfs 命令有軟體包 nfs-kernel-server 提供,詳細的 exportfs 命令說明請檢視:

man exportfs

中文的手冊說明可以檢視這裡:

exportfs聯機手冊

當完成資源共享, 我們如何知道發布了哪些許可權呢?這時我們可以檢視 /var/lib/nfs/etab 檔案,它是有 exportfs 命令根據 /etc/exports 生成的。

# cat /var/lib/nfs/etab

現在我們來檢視伺服器上有關nfs伺服器啟動了哪些埠:

tonybox:/home/share# lsof -i|grep rpc

portmap 1931 daemon 3u ipv4 4289 udp *:sunrpc

portmap 1931 daemon 4u ipv4 4290 tcp *:sunrpc (listen)

rpc.statd 3206 statd 3u ipv4 7081 udp *:1029

rpc.statd 3206 statd 6u ipv4 7072 udp *:838

rpc.statd 3206 statd 7u ipv4 7085 tcp *:1031 (listen)

rpc.mount 3483 root 6u ipv4 7934 udp *:691

rpc.mount 3483 root 7u ipv4 7937 tcp *:694 (listen)

next

previous

contents

確 認取 消

nfs配置和使用

nfs伺服器在嵌入式開發中非常常用,可以實現主機和開發板共享檔案。1 安裝軟體包 apt getinstall nfs common nfs kernel server portmap 2 配置 mkdir nfs vim etc exports 增加下面一行的內容 nfs rw,sync,no r...

配置nova instances使用NFS後端

首先先使用 nova delete 命令刪除所有例項,釋放磁碟空間。停止nova服務 service libvirtd stop service openstack nova compute stop 清空目錄 rm rf var lib nova instances 掛載nfs mount 168...

配置glance使用NFS後端

首先先使用 glance image delete 命令刪除所有映象,釋放磁碟空間。停止glance服務 service openstack glance api stop service openstack glance registry stop 停止swift服務 service openst...