NFS
1. 安裝
yum install nfs-utils -y
2. 配置
主要配置文件: /etc/exports
示例配置:
/nfsfile 192.168.10.*(rw,sync,root_squash)
-
/nfsfile
表示 共享的目錄,注意該目錄的權限,如果我們設置好了其他的內容時,訪問還是報錯的話,我們可以試着將該目錄的權限設置為 777。 -
192.168.10.* ,指定 IP 允許訪問,我們可以設置我們需要訪問的客戶端 IP 或者網段,不限制的話設置為
*
。 -
(rw,sync,root_squash)
參數 作用 ro 只讀 rw 讀寫 root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶 no_root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員 all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶 sync 同步,同時將數據寫入到內存與硬盤中,保證不丟失數據 async 異步,優先將數據保存到內存,然后再寫入硬盤;這樣效率更高,但可能會丟失數據 anonuid 匿名用戶ID anongid 匿名組ID 請注意,NFS客戶端地址與權限之間沒有空格。
NFS 指定端口
# 查看基礎信息
[root@djx ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 36449 nlockmgr
100021 3 udp 36449 nlockmgr
100021 4 udp 36449 nlockmgr
100021 1 tcp 40638 nlockmgr
100021 3 tcp 40638 nlockmgr
100021 4 tcp 40638 nlockmgr
#指定 mountd 端口
[root@djx ~]# [root@mail test]# grep "PORT" /etc/sysconfig/nfs
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
# 上面的這些配置,原本默認是注釋的,我們需要將# 去除,開啟配置。然后我們 還需要在防火牆開啟端口111和2049的tcp/udp,開啟 tcp 端口 2020、662、892、32803,開啟 udp 端口 32769
[root@djx ~]# firewall-cmd --add-port={111/tcp,111/udp,2049/tcp,2049/udp,32769/udp,2020/tcp,662/tcp,892/tcp,32803/tcp} --permanent
[root@djx ~]# firewll-cmd --reload
[root@djx ~]# systemctl restart nfs-server
[root@djx ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 49166 status
100024 1 tcp 58683 status
100005 1 udp 892 mountd
100005 1 tcp 892 mountd
100005 2 udp 892 mountd
100005 2 tcp 892 mountd
100005 3 udp 892 mountd
100005 3 tcp 892 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 32769 nlockmgr
100021 3 udp 32769 nlockmgr
100021 4 udp 32769 nlockmgr
100021 1 tcp 32803 nlockmgr
100021 3 tcp 32803 nlockmgr
100021 4 tcp 32803 nlockmgr
我看到有些文章說還需要加配置
RQUOTAD_PORT
,但是我沒有加該配置,也是可以的,我看/etc/sysconfig/nfs
文件里面也是沒有這個配置的,所以沒有加,也可能是版本不一樣,我的環境是 CentOS Linux release 7.4.1708 , nfs 版本為: nfs-utils-1.3.0-0.61.el7.x86_64
3. 啟動並添加到開機自啟
由於在使用NFS服務進行文件共享之前,需要使用RPC(Remote Procedure Call,遠程過程調用)服務將NFS服務器的IP地址和端口號等信息發送給客戶端。因此,在啟動NFS服務之前,還需要順帶重啟並啟用rpcbind服務程序,並將這兩個服務一並加入開機啟動項中。
[root@djx ~]# systemctl restart rpcbind
[root@djx ~]# systemctl enable rpcbind
[root@djx ~]# systemctl restart nfs-server
[root@djx ~]# systemctl enable nfs-server
4. NFS 客戶端掛載
NFS客戶端的配置步驟也十分簡單。先使用showmount命令(以及必要的參數,見下表)查詢NFS服務器的遠程共享信息,其輸出格式為“共享的目錄名稱 允許使用客戶端地址”。
showmount命令中可用的參數以及作用
參數 | 作用 |
---|---|
-e | 顯示NFS服務器的共享列表 |
-a | 顯示本機掛載的文件資源的情況NFS資源的情況 |
-v | 顯示版本號 |
[root@djx ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile 192.168.10.*
然后在NFS客戶端創建一個掛載目錄。使用 mount 命令並結合-t參數,指定要掛載的文件系統的類型,並在命令后面寫上服務器的IP地址、服務器上的共享目錄以及要掛載到本地系統(即客戶端)的目錄。
[root@linuxprobe ~]# mkdir /nfsfile
[root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile
掛載成功后就應該能夠順利地看到在執行前面的操作時寫入的文件內容了。如果希望NFS文件共享服務能一直有效,則需要將其寫入到fstab文件中:
[root@linuxprobe ~]# cat /nfsfile/readme
welcome to linuxprobe.com
[root@linuxprobe ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 4 19:26:23 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
5 報錯與解決辦法
5.1 NFS root 用戶掛載但普通用戶無寫入權限。
最近在使用 NFS 的過程中遇到了這樣的問題,就是我們掛載好共享的文件后(掛載只能 root 用戶進行掛載),我們用普通用戶來對掛載的目錄進行創建文件是發現會報錯的,會提示權限不足。
這個問題的解決辦法是 :通過設置 anonuid=0
和 anongid=0
和 all_squash
。這個設置實現了無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的 id 為 0 的用戶,也就是 root 用戶。這樣普通用戶也會有權限在該目錄下面創建文件的權限,並且創建的文件的所有者是屬於 root 的。
擴展: 當我們在客戶端和服務端有相同的用戶,而且 id 一致的時候,我們可以 設置
anonuid
為一致的 id。,這樣我們創建文件的所有者就是 該 id 的所對應的用戶了。 注意需要 id 一致哦。
5.2 網絡錯誤 53 內容一
window連接linux nfs服務器 —— 網絡錯誤 53
需要修改配置 ,增加參數: insecure
5.3 網絡錯誤 53 內容二
針對的是 windows 2008 server作為客戶端mount的時候
如果我們設置為上面的內容后,發現連接的時候還是報 53的錯誤。我們可以進行下面的第二步設置。
在 配置文件 /etc/exports
設置讀寫權限的時候 設置參數 no_root_squash
,不設置這個不行。
更改配置后需要重啟 nfs server 。
systemctl start nfs-server
5.4 網絡錯誤 53 內容三
我們映射的目錄權限最好為 777 ,否則可能訪問不到。
5.5 網絡錯誤 53 內容四
客戶端進行 mount
路徑有誤。 看下面示例:
例如映射的 目錄是 /home
,那么 mount 的命令是 :
mount \\192.168.1.23\home X:\
例如映射的 目錄是 /home/test
,那么 mount 的命令是 :
mount \\192.168.1.23\home/test X:\
注意多級目錄后面就不是使用 \
而是用 /
。
5.6 網絡錯誤 53 內容五
映射為本地的磁盤時,我們要選擇我們沒有使用的磁盤符。選用 X、Y、W
等這些平常一般不使用的盤符號。
6. Win 系統安裝 NFS client
Windows 2008 server安裝NFS Client所需軟件
通過Server Manager,
1.添加角色,選中File Services,然后按照向導提示安裝。
2.添加Features,安裝Remote Server Administration Tools/Role Administration Tools/File Services Tool/Services for Network File System Tools
需要安裝Services For Network File System
然后運行Services For Network File system,啟動client for NFS