部署NFS服务端
1.yum -y install nfs-utils #安装NFS软件
------------------------------------------------
2 创建nfs运行的虚拟用户
服务端创建用户,默认是nfsnobody。为配合rsync备份数据,改成www用户。
groupadd -g 666 www
-----------------------------
useradd -s /sbin/nologin -M -u 666 -g 666 www
---------------------------------------------
[root@nfs /data]# id www
uid=666(www) gid=666(www) groups=666(www)
3.修改nfs服务端配置文件
vi /etc/exports #配置nfs服务
---------------------------
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) #配置内容
--------------------------------------------------------------------
cat /etc/exports #检测
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) #检测结果
-----------------------------------------------------------------------
4.创建数据目录并授权
[root@nfs ~]# mkdir -p /data
---------------------------------------
[root@nfs ~]# chown -R www.www /data/
---------------------------------------
5.启动rpcbind和nfs服务
systemctl start rpcbind #打开rpc
--------------------------------------
systemctl status rpcbind #检测
---------------------------------------------
systemctl start nfs-server.service #打开NFS
--------------------------------------------------
systemctl status nfs-server.service #检测
---------------------------------------------------
设置开机自启:
systemctl enable rpcbind nfs-server #开机自启
-----------------------------------------------------------
systemctl restart rpcbind nfs-server #重启rpc
-----------------------------------------------------------------
6.服务端检查命令
[root@nfs ~]# showmount -e 172.16.1.31
----------------------------------------------
Export list for 172.16.1.31:
/data 172.16.1.0/24
7.查看端口
#rpc主端口:111
#nfs主端口:2049(随机的,可变)
[root@nfs /server/scripts]# 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 42622 nlockmgr
100021 3 udp 42622 nlockmgr
100021 4 udp 42622 nlockmgr
100021 1 tcp 44645 nlockmgr
100021 3 tcp 44645 nlockmgr
100021 4 tcp 44645 nlockmgr
部署NFS客户端在【172.16.1.41】配置
1. yum -y install nfs-utils #安装NFS软件
---------------------------------
2.启动rpcbind服务
#客户端只需要启动rpcbind,不需要启动nfs
systemctl start rpcbind #启动rpc
systemctl enable rpcbind #开机自启
systemctl status rpcbind #检测
-------------------------------------------------
3 创建www虚拟用户
创建相同uid gid的用户,如果客户端没有创建这个用户 ,查看文件的时候显示的是666。
groupadd -g 666 www
useradd -s /sbin/nologin -M -u 666 -g 666 www
--------------------------------------------------
4 查询NFS远程共享信息
使用showmount命令查看nfs共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
--------------------------------------
5 客户端挂载并查看
在 NFS 客户端创建一个挂载目录, 使用 mount 命令并结合-t 参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的 IP 地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录
mkdir -p /data
mount -t nfs 172.16.1.31:/data /data
#查看是否挂载成功
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos_mode-root 37G 1.8G 36G 5% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.6M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/data 37G 2.8G 35G 8% /data
------------------------------------------------------------------------
6 写入开机自动挂载
[root@backup ~]# tail -1 /etc/fstab
172.16.1.31:/data /data nfs defaults 0 0
----------------------------------------------------------------------
mount -a #重新加载/etc/fstab,不用重启直接挂载。
-----------------------------------------------------
7 卸载
umount /data/
umount -rl /data #强制卸载
#卸载的时候如果提示"umount.nfs: /nfsdir: device is busy"先切换到其他目录再卸载
nfs 服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的 NFS 客户端(共享权限参数)格式书写,定义要共享的目录与相应的权限,具体书写方式如下图所示
![image-20200330175531035](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200330175531035.png)
扩展
NFS天坑
1.如果在客户端挂载172.16.1.31:/data后,服务端重启网卡,会导致客户端查看data目录卡顿。
解决:强制卸载后重新挂载
umount-rl/data
mount-tnfs172.16.1.31:/data /data
2.如果nfs服务挂了,访问客户端data目录会卡住。
解决:1.服务端重启nfs即可 2.客户端强制卸载umunt-rl/data
3.如果客户端设置了开机自动挂载,服务端nfs挂掉了,重启客户端会卡住很久,会一直在等挂载。
解决:
#如果是物理服务器
1、观察读秒时间,如果比较短,宁愿等1分42秒(看读秒),也不进单用户模式。进单用户模式会花费至少五分钟以上。
#如果是云服务器
1.不愿意等就进单用户模式,注释掉开机自动挂载的参数。
#进入单用户模式的方法:
开机启动时按e,然后光标移动到倒数第二行尾部添加rd.break
ctrl+x
mount-oremount,rw /sysroot/
chroot/sysroot/
NFS共享多个目录
1.配置文件修改
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data2 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
2.重启nfs服务
systemctl restart nfs
3.客户端挂载测试
showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
/data2 172.16.1.0/24
NFS固定端口号
1.固定NFS随机端口
[root@nfs01 ~]# vim /etc/sysconfig/nfs
RQUOTAD_PORT=4001
LOCKD_TCPPORT=4002
LOCKD_UDPPORT=4002
MOUNTD_PORT=4003
STATD_PORT=4004
--------------------------------------------------------
[root@nfs01 ~]# tail -5 /etc/sysconfig/nfs #尾部追加
2.重启rpcbind和nfs
systemctl restart rpcbind.service nfs-server.service
3.查看端口
[root@nfs /data]# 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
100005 1 udp 4003 mountd
100005 1 tcp 4003 mountd
100005 2 udp 4003 mountd
100005 2 tcp 4003 mountd
100005 3 udp 4003 mountd
100005 3 tcp 4003 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 4002 nlockmgr
100021 3 udp 4002 nlockmgr
100021 4 udp 4002 nlockmgr
100021 1 tcp 4002 nlockmgr
100021 3 tcp 4002 nlockmgr
100021 4 tcp 4002 nlockmgr
4.firewalld开放端口(C7)
firewall-cmd --add-service=nfs --permanent
firewall-cmd --add-service=mountd --permanent
firewall-cmd --add-service=rpc-bind --permanent
firewall-cmd --reload
5.iptables开放端口(C6)
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 111 -j ACCEPT
-A INPUT -p udp -m udp --dport 111 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT
-A INPUT -p udp -m udp --dport 2049 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 4001:4004 -j ACCEPT
-A INPUT -p udp -m udp --dport 4001:4004 -j ACCEPT
iptables-save #保存配置
iptables -nL
NFS小结
#NFS 存储优点
1.NFS 文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2.NFS 文件系统内存放的数据都在文件系统之上,所有数据都是能看得见
#NFS 存储局限
1.存在单点故障, 如果构建高可用维护麻烦 web->nfs()->backup
2.NFS 数据明文, 并不对数据做任何校验。
3.客户端挂载 NFS 服务没有密码验证, 安全性一般(内网使用)
#NFS 应用建议
1.生产场景应将静态数据尽可能往前端推, 减少后端存储压力
2.必须将存储里的静态资源通过 CDN 缓存 jpg\png\mp4\avi\css\js
3.如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用