1. 程式人生 > >Linux NFS配置 遠端共享

Linux NFS配置 遠端共享

使用NFS需要啟用RPC(remoteprocedure call),RPC可以指定每個NFS功能所對應的埠號,重啟RPC後,RPC所管理的所有NFS功能服務都需重新向RPC註冊。

設定NFS需要安裝nfs-utils和portmap程式,使用rpm –q可以檢視是否安裝

Nfs-utils:提供rpc.nfsd和rpc.mountd兩個daemon與其他document說明檔案。

rpc.nfsd:管理client是否能夠登入主機,及對登入者ID的辨別。

rpc.mountd:管理NFS檔案系統,讀取/etc/exports對比client取得相應的許可權。

Portmap:埠對映;在啟動rpc之前做好埠對映工作。

NFS服務

service portmap start

service nfs start

檢視開啟的服務

netstat -ntpl

NFS的配置檔案有兩個:

/etc/exports:NFS配置檔案

/var/lib/nfs/*tab:NFS伺服器日誌放置路徑;etab記錄共享出來的目錄完整許可權設定值;xtab記錄曾經連線到此NFS主機的相關客戶端資料

兩個命令:

/usr/sbin/exportfs:維護NFS共享資源;重新共享/etc/exports變更目錄或將NFSserver共享目錄解除安裝或重新共享

/usr/sbin/showmount:在客戶端檢視NFS伺服器共享出來的目錄資源

/etc/exports配置檔案

首先需要手動編輯/etc/exports配置檔案

共享目錄必須使用絕對路徑,許可權部分依照不同的許可權共享給不同的主機,括號內是設定許可權引數的位置,許可權不止一個時,使用,隔開,主機名和括號連在一起。

主機名設定可以使用網段:192.168.1.0/24或完整IP:192.168.1.23也可以使用主機名稱,但此主機名稱需要存在於/etc/hosts中或使用DNS可以找到,找到IP即可,主機名支援萬用字元,如*?

/mnt/sda4/share/a      192.168.23.129(rw)

設定共享目錄/mnt/sda4/share/a,僅192.168.23.129主機允許訪問此共享目錄,具有讀寫許可權

/mnt/sda4/share/b      192.168.23.129(rw) *(ro)

設定共享目錄/mnt/sda4/share/b,192.168.23.129可以讀寫該共享目錄,其他主機只可以讀取該共享目錄

/mnt/sda4/share/c       192.168.23.129(no_root_squash)

設定共享目錄/mnt/sda4/share/c,僅192.168.23.129可以訪問和讀寫,root登入時擁有root許可權

/mnt/sda4/share/d      192.168.23.0/24(rw)

設定共享目錄/mnt/sda4/share/d,僅有192.168.23.0/24網段的主機才可訪問和讀寫此目錄檔案

/mnt/sda4/share/e      *(rw,all_squash,anonuid=500,anongid=500)

設定共享目錄/mnt/sda4/share/e,所有主機都允許訪問此共享目錄,具有讀寫許可權,但他們訪問該共享目錄時,已將其UID、GID設定成500。NFSserver主機中UID、GID=500的許可權已經設定好

許可權引數說明如下:

Rw:read-write可讀寫的許可權

Ro:read-only只讀許可權

no_root_squash:登入NFS主機使用共享目錄的使用者,如果是使用者root,對於此共享目錄具有root許可權,不建議使用。

root_squash:登入NFS主機使用共享目錄的使用者,如果是使用者root,此使用者許可權將被壓縮為匿名使用者,其UID和GID都會被壓縮為nobody(nfsnobody)系統賬號的身份。

all_squash:不論登入NFS的使用者身份為何,其身份都被轉換成為匿名使用者,即nobody。

Anonuid:anonymous;即nobody,可以自行設定此UID值,但此UID必須存在於/etc/passwd中。

Anongid:同anonuid,變成group ID即可。

Sync:資料同步寫入到記憶體與硬碟中

Async:資料先暫存於記憶體中,而非直接寫入硬碟

許可權說明:

1.NFS server和NFS client具有相同的UID和賬號

如果NFSserver和NFSclient具有相同共享檔案賬號和相同UID,客戶端登入NFSserver時,就會擁有/etc/exports設定的許可權

2.NFS server和NFS client具有不同的賬號

如果NFSclient不擁有NFSserver共享檔案賬號,或NFSclient的賬號在NFSserver不存在,是否可以讀寫共享目錄,需要檢視NFSserver的許可權而定,其身份會變為匿名使用者nobody

3.NFS client的身份為root

預設情況下,客戶端的root身份會被壓縮成匿名使用者nobody

啟動NFS

啟動NFS只需啟動portmap和NFS服務即可。如果需要啟動資料一致性檢查,則需啟動nfslock服務。

service portmap start

service nfs start

使用netstat–tnlu可以檢視nfs開放了哪些埠。Portmap的埠為111,nfs的埠為2049

[root@localhost share]# rpcinfo -p

程式       版本 協議   埠               服務名稱

100000    2   tcp   111        portmapper

100000    2   udp  111        portmapper

100024    1   udp  695        status

100003    2   udp  2049     nfs

100021    1   udp   46017  nlockmgr

………………………………………………

如果rpcinfo–p的資料無法輸出,表示註冊的資料有問題,重新啟動portmap和nfs即可。

client檢視Server有提供哪些NFS服務,可以使用showmount

# showmount -e  顯示某臺主機的/etc/exports所共享的目錄資料

# showmount -a  顯示當前主機與客戶端NFS聯機共享狀態

# showmount -e

Export list for localhost.localdomain:

/mnt/sda4/share/e *

/mnt/sda4/share/d 192.168.23.0/24

/mnt/sda4/share/c 192.168.23.129

/mnt/sda4/share/b (everyone)

/mnt/sda4/share/a 192.168.23.129

需要掃描某臺主機提供的NFS共享目錄,使用showmount–e ip(hostname)即可

檢視/var/lib/nfs/etab可以檢視NFSserver目錄許可權設定情況

# cat /var/lib/nfs/etab

/mnt/sda4/share/a      192.168.23.129(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)

…………………………………………………………

如果修改/etc/exports檔案之後無需重啟nfs,只需重新掃瞄一次檔案/etc/exports,並且重新將設定載入即可;

Exportfs:

-a:全部掛載(或解除安裝)/etc/exports 檔案內的設定。

-r:重新掛載/etc/exports裡的設定,同時同步更新/etc/exports及/var/lib/nfs/xtab的內容。

-u:解除安裝某一目錄。

-v:在export時,將共享的目錄顯示在螢幕上。

重新掛載/etc/exports的設定:#exportfs–arv

全部解除安裝/etc/exports的設定:#exportfs–auv

客戶端配置:

# mkdir -p /mnt/share/client/b

# mount -t nfs  192.168.23.128:/mnt/sda4/share/b /mnt/share/client/b

# df

檔案系統                                                             1K-塊      已用    可用        已用%   掛載點

/dev/sda2                                                            5952284    3158868  2486176 56%               /

/dev/sda1                                                            101086     11481   84386                    12%      /boot

tmpfs                                                    127720     0          127720    0%        /dev/shm

192.168.23.128:/mnt/sda4/share/b   3905632   73408          3633824   2%       /mnt/share/client/b

設定成開機啟動掛載

修改/etc/fstab檔案

192.168.23.128:/mnt/sda4/share/e  /mnt/share/client/e  nfs  defaults,rw   0 0

此外可以使用autofs設定客戶端需要時自動掛載,不需要時若干分鐘後自動解除安裝,還可在/etc/fstab或客戶端手動掛載時設定一些引數,方便客戶端使用。

使用/etc/fstab來掛載NFS

要掛載其他機器上的NFS共享的另一種方法是在/etc/fstab檔案中新增一行,在這一行中必須宣告NFS伺服器的主機名、要匯出的目錄,以及要掛載NFS共享的本地機器目錄。必須是根使用者才能修改/etc/fstab檔案。

/etc/fstab中每行的一般語法如下所示:

server:/usr/local/pub  /pub nfs  rsize=8192,wsize=8192,timeo=14,intr

掛載點/pub在客戶端機器上必須存在。在客戶端系統的/etc/fstab檔案中新增這一行後在shell提示下鍵入命令mount,以及將會從伺服器中掛載的掛載點/pub。

使用autofs來掛載NFS

掛載NFS共享的第3種方法是使用autofs,它使用automount守護程序來管理掛載點,只在檔案系統被訪問時才動態地掛載。

autofs諮詢主對映配置檔案/etc/auto.master來決定要定義哪些掛載點,然後使用適用於各個掛載點的引數來啟動automount守護程序。主對映配置中的每一行都定義一個掛載點,一個分開的對映檔案定義在該掛載點下要掛載的檔案系統。如/etc/auto.misc檔案可能會定義/misc目錄中的掛載點,這種關係在/etc/auto.master檔案中會被定義。

auto.master檔案中的每個專案都有3個欄位,第1個欄位是掛載點;第2個欄位是對映檔案的位置;第3個欄位可選,可以包括超時數值之類的資訊。

例如,要在機器上的/misc/myproject掛載點上掛載遠端機penguin.example.net中的/project52目錄,在auto.master檔案中新增以下行:

/misc /etc/auto.misc --timeout 60

在/etc/auto.misc檔案中新增以下行:

myproject  -rw,soft,intr,rsize=8192,wsize=8192 penguin.example.net:/proj52

/etc/auto.misc中的第1個欄位是/misc子目錄的名稱,該目錄被automount動態地建立,它不應該在客戶端機器上實際存在;第2個欄位包括掛載選項,如rw代表讀寫訪問權,第3個欄位是要匯出的NFS的位置,包括主機名和目錄。

autofs是一種服務,要啟動這項服務,在shell提示下鍵入以下命令:

/sbin/service autofs restart

要檢視活躍的掛載點,在shell提示下鍵入以下命令:

/sbin/service autofs status

如果在autofs執行時修改了/etc/auto.master配置檔案,則必須在shell提示下鍵入以下命令來通知automount守護程序重新載入配置檔案:

/sbin/service autofs reload


取消掛載用umount ,而不是unmount