您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何實現linux兩臺主機nfs共享,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
NFS:Network File System,linux中共享文件的服務。
使用NFS需要啟用RPC(remoteprocedure call),RPC可以指定每個NFS功能所對應的端口號,重啟RPC后,RPC所管理的所有NFS功能服務都需重新向RPC注冊。
設置NFS共享需要安裝nfs和portmap包,使用rpm –qa可以查看是否安裝
nfs-utils-lib-1.0.8-7.6.el5、nfs-utils-1.0.9-50.el5和portmap-4.0-65.2.2.1程序
Nfs-utils:提供rpc.nfsd和rpc.mountd兩個daemon與其他document說明文件。
rpc.nfsd:管理client是否能夠登入主機,及對登入者ID的辨別。
rpc.mountd:管理NFS文件系統,讀取/etc/exports對比client取得相應的權限。
Portmap:端口映射;在啟動rpc之前做好端口映射工作。
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(sync,rw)
sync:同步寫入資料到內存與硬盤中 async:資料會暫存到內存中,而非直接寫入硬盤
設置共享目錄/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服務即可。
#service nfs start #service portmap start
如果需要啟動數據一致性檢查,則需啟動nfslock服務。
使用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/b
注:如需修改掛載目錄可以這樣操作mount --move /mnt/share/b /usr/local/test
# df -h
文件系統 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% /usr/local/test
如果需要設置成開機啟動掛載
請修改/etc/fstab文件
192.168.23.128:/mnt/sda4/share/e /usr/local/test nfs defaults,rw 0 0
此外可以使用autofs設置客戶端需要時自動掛載,不需要時若干分鐘后自動卸載,還可在/etc/fstab或客戶端手動掛載時設置一些參數,方便客戶端使用。
關于如何實現linux兩臺主機nfs共享就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。