配置NFS服務器並實現開機自動掛載
NFS服務端概述:
NFS,是Network File System的簡寫,即網絡文件系統。網絡文件系統是FreeBSD支持的文件系統中的一種,也被稱爲NFS. NFS允許一個系統在網絡上與他人共享目錄和文件。通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件。
模式: C/S 模式
端口:
RHEL7是以NFSv4作爲默認版本,NFSv4使用TCP協議(端口號是2049)和NFS服務器建立連接
安裝NFS
[root@localhost178 ~]# yum -y install rpcbind nfs-utils
配置文件位置
[root@localhost178 ~]# ls /etc/exports
/etc/exports
啓動NFS服務
[root@localhost178 ~]# systemctl start rpcbind #啓動nfs前,先啓動rpcbind
[root@localhost178 ~]# systemctl start nfs-server.service
[root@localhost178 ~]# netstat -anltpu |grep 2049 #查看端口2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp6 0 0 :::2049 :::*
配置開機自啓動
[root@localhost178 ~]# chkconfig nfs-server on
注意:正在將請求轉發到“systemctl enable nfs-server.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
客戶端
[root@localhost181 ~]# yum -y install rpcbind nfs-utils #安裝不需要啓服務
[root@localhost181 ~]# showmount -e 10.10.100.178 #能夠查看到這樣的內容,就可以進行掛載了
Export list for 10.10.100.178:
服務端配置文件
[root@localhost178 ~]# mkdir /web
[root@localhost178 ~]# vim /etc/exports #寫入內容
/web *(rw)
共享文件夾 對所有開放(讀寫權限)
注意: * 表示對所有網段開放權限
也可以指定特定的網段
重啓服務
[root@localhost178 ~]# exportfs -rv ##重新讀取配置文件,不中斷服務.
exporting *:/web
客戶端掛載共享
[root@localhost181 ~]# mkdir /test1
[root@localhost181 ~]# mount -t nfs 10.10.100.178:/web /test1
[root@localhost181 ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root 50G 1.5G 49G 3% /
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 1014M 133M 882M 14% /boot
/dev/mapper/centos-home 47G 33M 47G 1% /home
tmpfs 199M 0 199M 0% /run/user/0
10.10.100.178:/web 50G 1.4G 49G 3% /test1 #查看掛載成功
開機自動掛載:
[root@localhost181 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Oct 17 08:19:57 2019
#
# 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/centos-root / xfs defaults 0 0
UUID=e1a9a299-73a7-4f54-a401-f4031627ab79 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
10.10.100.178:/web /test1 nfs defaults 0 0 #添加這一行,注意不要寫錯
驗證寫入權限
[root@localhost181 test1]# mkdir 11
mkdir: 無法創建目錄"11": 權限不夠
解決方法:
設置訪問權限一般包含2部分
1)服務本身權限
2)目錄訪問權限
nfs默認使用nfsnobody用戶
[root@localhost178 ~]# grep nfs /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@localhost178 ~]# chmod o+w /web/
或者直接修改目錄的屬主與屬組
[root@localhost178 ~]# ll -d /web/
drwxr-xrwx 3 root root 16 10月 17 13:40 /web/
[root@localhost178 ~]# chown nfsnobody.nfsnobody -R /web/
再次驗證寫入權限
[root@localhost181 test1]# mkdir 11
[root@localhost181 test1]# ll
總用量 0
drwxr-xr-x. 2 nfsnobody nfsnobody 6 10月 17 13:40 11
下面是一些NFS共享的常用參數:
ro 只讀訪問
rw 讀寫訪問
sync 資料同步寫入到內存與硬盤當中
async 資料會先暫存於內存當中,而非直接寫入硬盤
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_squash root用戶具有根目錄的完全管理訪問權限
[root@localhost178 ~]# cat /etc/exports
/web/a/ *(rw,no_root_squash)
/web/a/sync 10.10.100.0/24(rw,sync)
/web/a/ro 10.10.100.181(ro)
/web/a/all_squash 10.10.100.0/24(rw,all_squash,anonuid=500,anongid=500)
/web/a/async 10.10.100.0/255.255.255.0(async)
/web/a/rw 10.10.100.0/255.255.255.0(rw) 10.10.101.0/255.255.255.0(rw)
/web/a/root_squash *(rw,root_squash)
注意:在發佈共享目錄的格式中除了共享目錄是必跟參數外,其他參數都是可選的。並且共享
目錄與客戶端之間及客戶端與客戶端之間需要使用空格符號,但是客戶端與參數之間是不能有
空格的
NFS客戶端掛載參數的優化:
NFS高併發環境下的服務端重要優化(mount -o 參數)
async 異步同步,此參數會提高I/O性能,但會降低數據安全(除非對性能要求很高,對數據可靠性不要求的場合。一般生產環境,不推薦使用)
noatime 取消更新文件系統上的inode訪問時間,提升I/O性能,優化I/O目的,推薦使用。
nodiratime 取消更新文件系統上的directory inode訪問時間,高併發環境,推薦顯式應用該選項,提高系統性能
intr:可以中斷不成功的掛載
rsize/wsize 讀取(rsize)/寫入(wsize)的區塊大小(block size),這個設置值可以影響客戶端與服
務端傳輸數據的緩衝存儲量。一般來說,如果在局域網內,並且客戶端與服務端都具有足夠的內存,這個
值可以設置大一點,比如說32768(bytes),提升緩衝區塊將可提升NFS文件系統的傳輸能力。但設置的值也不要太大,最好是實現網絡能夠傳輸的最大值爲限。
內核優化:
net.core.wmem_default = 8388608 #內核默認讀緩存
net.core.rmem_default = 8388608 #內核默認寫緩存
net.core.rmem_max = 16777216 #內核最大讀緩存
net.core.wmem_max = 16777216 #內核最大寫緩存
用法:
[root@localhost181 test1]#mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072,intr 10.10.100.178:/web/NFS /test1
或者寫到掛載文件裏:
[root@localhost181 test1]#vim /etc/fstab
10.10.100.178:/web/NFS /test1 nfs noatime,nodiratime,rsize=131072,wsize=131072,intr 0 0