1. 程式人生 > 其它 >|NO.Z.00036|——————————|^^ 部署 ^^|——|Linux&NFS服務.V02|------------------------------------------------------|NFS部署|

|NO.Z.00036|——————————|^^ 部署 ^^|——|Linux&NFS服務.V02|------------------------------------------------------|NFS部署|



[LinuxNetworkEnd:Linux&NFS服務.V02]                                                        [Applications.LinuxNetworkEnd] [|NFS|普通使用者建立|自動掛載|普通使用者對映|]








一、NFS伺服器部署
### --- 安裝nfs-utils服務
~~~     注:通常情況下:是作為系統的預設包安裝的
~~~     CentoOS6.x之前rpcbind叫portmap

[root@server21 ~]# yum install -y nfs-utils-*
[root@server21 ~]# yum install -y rpcbind-*
二、NFS伺服器的啟動與停止:
### --- 啟動NFS伺服器
~~~     為了使NFS伺服器能正常工作,需要啟動rpcbind和nfs兩個服務,
~~~     並且rpcbing一定要先於nfs啟動。

[root@server21 ~]# service rpcbind start
[root@server21 ~]# service nfs start
Starting RPC idmapd:      [  OK  ]                          // 最後一步是把nfs向rpc註冊一下
### --- 查詢NFS伺服器狀態

[root@server21 ~]# service rpcbind status
[root@server21 ~]# service nfs status
### --- 停止NFS伺服器
~~~     要停止NFS執行時,需要先停止nfs服務再停止rpcbind服務,
~~~     對於系統中有其他服務(如NIS)需要使用時,不需要停止rpcbind服務

[root@server21 ~]# service nfs stop
[root@server21 ~]# service rpcbind stop                     // 可以不需要停止,rpc是預設啟動的。若停止可能影響其他的服務
### --- 設定NFS伺服器的自動啟動狀態
~~~     設定rpcbind和nfs服務在系統執行級別2345自動啟動

[root@server21 ~]# chkconfig --list rpcbind
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@server21 ~]# chkconfig --list nfs
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@server21 ~]# chkconfig nfs on
### --- 檢視RPC伺服器開啟了那些埠

[root@server21 ~]# rpcinfo  -p localhost
三、實驗相關例項:
### --- 將NFS伺服器的/atyanqi共享給20.20.20.22網段,rw許可權

[root@server21 ~]# mkdir /atyanqi
[root@server21 ~]# chmod o+w /atyanqi/                      // 給其他人設定共享寫入的許可權
[root@server21 ~]# ll -ld /atyanqi/
drwxr-xrwx 2 root root 4096 Feb  4 09:47 /atyanqi/
[root@server21 ~]# vim /etc/exports 
 /atyanqi 20.20.20.22(rw)                                   // /atyanqi:共享那個目錄 20.20.20.22:客戶端地址(rw):給予的許可權
[root@server21 ~]# service nfs reload                       // 重新把配置檔案載入一下 
### --- 重啟rpcbind 和nfs服務

[root@server21 ~]# service rpcbind restart
[root@server21 ~]# service nfs restart
[root@server21 ~]# exportfs                                 // 檢視共享目錄列表
/atyanqi        20.20.20.22
### --- 伺服器端檢視nfs共享狀態

[root@server21 ~]# showmount -e 20.20.20.21                 // 本機測試,
Export list for 20.20.20.21:
/atyanqi 20.20.20.22
### --- 檢視自己共享的服務
### --- 客戶端檢視NFS共享狀態

[root@server22 ~]# showmount -e 20.20.20.21                 // 客戶度測試,伺服器端IP地址
Export list for 20.20.20.21:
/atyanqi 20.20.20.22            
### --- 客戶端掛載NFS伺服器共享目錄

~~~     命令格式:mount NFS伺服器IP:共享目錄  本地掛載點目錄
[root@server22 ~]# mkdir /atyanqi                                   // 建立本地掛載點
[root@server22 ~]# service rpcbind start
[root@server22 ~]# mount -o vers=3 20.20.20.21:/atyanqi  /atyanqi/  // 臨時掛載 #-o vers=3 指定掛載使用nfs V3版本(避免同步延遲)
[root@server22 ~]# df -h
20.20.20.21:/atyanqi   94G  841M   88G   1% /atyanqi
[root@server22 ~]# mount |grep nfs
20.20.20.21:/atyanqi on /atyanqi type nfs (rw,vers=3,addr=20.20.20.21) 
~~~     測試掛載的目錄是否可以正常讀寫
[root@server22 ~]# touch /atyanqi/a.txt
[root@server22 ~]# vim /atyanqi/a.txt
aaaaaaaaaaaaaaaaaaaaaaaaa 
~~~     驗證客戶端和nfs伺服器端檔案是否一致:
[root@server21 ~]# cat /atyanqi/a.txt                               // 服務端檢視該檔案正常 
aaaaaaaaaaaaaaaaaaaaaaaaa
~~~     修改伺服器端響應許可權,不然客戶端無法正常訪問和使用
### --- nfs共享許可權和訪問控制
### --- 客戶端root使用者
~~~     使用客戶端和root身份在nfs伺服器上建立檔案,檔案的所有者和所屬組是nfsnobody
~~~     預設是以nfsnobody身份建立檔案或者目錄

[root@server22 ~]# touch /atyanqi/a.txt                         // root身份建立檔案
[root@server22 ~]# ll /atyanqi/a.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 /atyanqi/a.txt  // 但檔案最終屬於nfsnobody使用者及組;預設採用的是rootsport會對映成nfsnobody
### --- 客戶端普通使用者
~~~     使用客戶端的普通使用者身份在nfs伺服器上建立檔案,所有者和所屬組是nobody或普通使用者。
~~~     如果明確設定了普通使用者的對映使用者身份,那麼此時客戶端使用者的身份轉換為指定對映使用者
~~~     如果NFS server上面有同名使用者,
~~~     那麼此時客戶端登入賬戶的身份轉換為NFS server上面的同名使用者。
~~~     以root_squash身份執行

[root@server21 ~]# vim /etc/exports 
/atyanqi 20.20.20.22(rw,no_root_squash)
[root@server21 ~]# service nfs reload
[root@server22 ~]# touch /atyanqi/b.txt                     // 客戶端可能會保留之前的掛載記錄,這樣我們需要把掛載斷開,重新掛載。
[root@server22 ~]# ll /atyanqi/                             // 檢視到以root身份建立用目錄,目錄許可權未發生變化。
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt   
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt 
 [root@server21 ~]# ll /atyanqi/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt
### --- 以其它身份執行

[root@server22 ~]# useradd nfstest
[root@server22 ~]# id nfstest
uid=500(nfstest) gid=500(nfstest) groups=500(nfstest)
[root@server21 ~]# vim /etc/exports                         // 說明在客戶端不管你是用什麼身份建立檔案或者目錄,都會顯示是這個UID及GID是500的使用者身份建立的,也就是nfstest這個使用者建立的。
/atyanqi 20.20.20.22(rw,all_squash,anonuid=500,anongid=500)
[root@server21 ~]# service nfs reload
[root@server22 ~]# touch /atyanqi/c.txt
[root@server22 ~]# ll /atyanqi/                             // 在伺服器上檢視都是這個UID及GID。
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt
-rw-r--r-- 1       500       500 0 Feb  4 10:37 c.txt

[root@server21 ~]# ll /atyanqi/                             // 在客戶端檢視到的是nfstest的使用者建立的。
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Feb  4 10:10 a.txt
-rw-r--r-- 1 root      root      0 Feb  4 10:19 b.txt
-rw-r--r-- 1 nfstest   nfstest   0 Feb  4 10:37 c.txt
四、解除安裝和自動掛載
### --- 解除安裝和自動掛載:
### --- 解除安裝:
### --- 解除安裝客戶端的掛載目錄

[root@server22 ~]# umount /atyanqi/
### --- 停止伺服器端的共享

[root@server21 ~]# exportfs -au                             // 停止掛載
[root@server22 ~]# cd /atyanqi 
bash: cd: /atyanqi: Stale file handle                       // 無效的檔案控制代碼,掛載已經失效了,客戶端時沒有辦法進行寫入的
[root@server22 ~]# ll /atyanqi 
ls: cannot access /atyanqi: Stale file handle
[root@server21 ~]# exportfs -ra                                                                             //重新掛載
[root@server22 ~]# cd /atyanqi/                             //可以正常寫入
~~~     自動掛載:/etc/fstab
~~~     格式:<server>:<remote/export></local/directory>nfs<options> 0 0
~~~     #192.168.115.10:/home/zhangsan /media/zhangsan nfs defaults 0 0
~~~     mount -a

[root@server22 ~]# vim /etc/fstab 
 20.20.20.21:/atyanqi      /atyanqi          nfs      defaults,vers=3       0 0             //為避免延遲加,vers=3
[root@server22 ~]# umount /atyanqi/
[root@server22 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        94G  841M   88G   1% /
tmpfs           931M     0  931M   0% /dev/shm
/dev/sda1       976M   35M  891M   4% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt/cdrom
[root@server22 ~]# mount -a                                 // 重新讀取/etc/fstab檔案
[root@server22 ~]# df -h                                    // 掛載成功 
20.20.20.21:/atyanqi   94G  841M   88G   1% /atyanqi
### --- 相關命令

~~~     exportfs命令
~~~     如果我們在啟動了NFS之後又修改了/etc/exports,
~~~     是不是還要重新啟動nfs呢?這個時候我們就可以用exportfs命令來是改動立刻生效,
~~~     該命令格式如下:
~~~     格式:exportfs[-aruv]
~~~     -a:全部掛載或解除安裝/etc/exports中的內容
~~~     -r:重新讀取/etc/exports中的資訊,並同步更新/etc/exports /var/lib/nfs/xtab
~~~     -u:解除安裝單一目錄(和-a一起使用為解除安裝所有/etc/exports檔案中的目錄
~~~     -v:在export的時候,將詳細的資訊輸出到螢幕上。
### --- 具體例子:
~~~     exportfs -au:解除安裝所有共享目錄
~~~     exportfs -ra:重新共享所有目錄並輸出詳細資訊

[root@server22 ~]# exportfs -au                             // 伺服器端全部解除安裝
[root@server22 ~]# exportfs -ar                             // 伺服器端全部掛載,重新讀取
[root@server21 ~]# exportfs 
/atyanqi        20.20.20.22
[root@server21 ~]# exportfs -v                              // 將資訊輸出到螢幕上
/atyanqi        20.20.20.22(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=500,anongid=500,sec=sys,rw,root_squash,all_squash) 
### --- rpcinfo命令
~~~     利用rpcinfo -p 可以查看出RPC開啟的埠所可提供的程式有哪些
~~~     其中NFS開啟的是2049,portmapper(rpcbind)開啟的是111,其餘則是rpc開啟的。
~~~     rpcbind服務最好不要停止,可以reload,因為rpcbind並不只是為nfs提供服務,
~~~     還需要為其他使用者提供服務。

[root@server21 ~]# rpcinfo -p
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)