一、NFS简单概述
NFS 是Network File System 的缩写及网络文件系统。NFS 主要功能是通过局域网络让不同的主机系统之间可以共
享文件或目录。
NFS 系统和Windows 网络共享、网络驱动器类似, 只不过windows 用于局域网, NFS 用于企业集群架构中, 如果是
大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS
1.1 为什么要使用数据存储共享服务?
实现多台服务器之间数据共享
实现多台服务器之间数据一致
1.2 NFS的应用场景
软件
NFS服务
分布式存储:GlusterFS、Fastdfs(扩展)
1.3 NFS服务的执行过程或工作流程图
1.4 NFS的工作原理图
注:RPC服务的端口为111,rsync服务的端口873
二、NFS服务操作
2.1 环境准备
1>准备测试机
NFS客户端:web01(外网:10.0.0.7;内网:172.16.1.7)
NFS服务端:nfs01(外网:10.0.0.31;内网:172.16.1.31)
2>涉及软件:
RPC服务:rpcbind(CentOS6 7);portmap(CentOS5)
NFS服务:nfs-utils
3>软件安装
NFS服务端:nfs-utils(NFS服务)、rpcbind(RPC服务)
NFS客户端:nfs-utils(NFS服务)
4>启动服务
NFS服务端:
启动rpcbind:systemctl restart rpcbind.service
查看rpc服务的注册信息:rpcinfo -p
启动nfs:systemctl restart nfs-server.service
用户映射基础:
rpc.ibmap(不管哪个用户进入nfs,都属于nfsnobody,在安装nfs时默认创建了这个用户)
2.2 NFS服务配置
nfs服务端
1>编写NFS配置文件/etc/exports
格式:NFS共享目录 NFS共享客户端地址(参数1,参数2,……)
如:/data 172.16.1.0/24(rw)
注:系统中一定要有这个共享目录,没有创建
2>启动nfs服务
systemctl reload nfs
reload:平滑重启/优雅重启---不中断当前正在处理的请求,只影响新的请求。 注意:尽量不要使用restart,使用之后会卡住90秒
3>检查服务端可以挂载的信息:showmount -e 172.16.1.31
4>本地实测:mount -t nfs 172.16.1.31:/upload/ /mnt
mount参数补充(-t:指定挂载的文件系统类型)
nfs客户端
1>首先在客户端创建挂载目录,如:创建/video
2>将服务端的共享目录临时挂载到/video下
mount -t nfs 172.16.1.31:/upload/ /video
df参数补充(-T:显示文件系统类型,如:df -hT)
[root@web01 ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 18G 1.8G 17G 10% /
devtmpfs devtmpfs 980M 0 980M 0% /dev
tmpfs tmpfs 991M 0 991M 0% /dev/shm
tmpfs tmpfs 991M 9.6M 981M 1% /run
tmpfs tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 xfs 197M 105M 93M 54% /boot
172.16.1.31:/app/w nfs4 18G 1.8G 17G 10% /data/w
tmpfs tmpfs 199M 0 199M 0% /run/user/0
[root@web01 ~]#
三、NFS权限控制
配置文件中权限/etc/exports
Linux服务端共享目录权限755 nfsnobody
三、NFS排错流程
确保道路通畅
如:ping 172.16.1.31
rpc服务状态
如:rpc -p 172.16.1.31
nfs服务共享信息
如:showmount -e 172.16.1.31
四、NFS配置文件详情
权限 | 详细解释 |
---|---|
rw* | 读写权限 |
ro | 只读权限 |
root_squash | 当NFS 客户端以root 管理员访问时,映射为NFS 服务器的匿名用户(不常用) |
no_root_squash | 当NFS 客户端以root 管理员访问时,映射为NFS 服务器的root 管理员(不常用) |
all_squash | 无论NFS 客户端使用什么账户访问,均映射为NFS 服务器的匿名用户(常用) |
no_all_squash | 无论NFS 客户端使用什么账户访问,都不进行压缩 |
sync* | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
anonuid* | 配置all_squash 使用,指定NFS 的用户UID,必须存在系统 |
anongid* | 配置all_squash 使用,指定NFS 的用户UID,必须存在系统 |
作业练习
实例一:
共享/data目录给10.0.0.0/24整个网段的主机读写(该例将实现把nfs server上的/data目录共享给10.0.0.0/24整个网段的主机,且可读写)
服务端:
[root@nfs01 ~]# cat /etc/exports
/data 10.0.0.0/24(rw)
[root@nfs01 ~]#
[root@nfs01 ~]# chown nfsnobody.nfsnobody /data
[root@nfs01 ~]# ls -ld /data
drwxr-xr-x 2 nfsnobody nfsnobody 6 May 22 19:30 /data
[root@nfs01 ~]# tree /data
/data
└── oldboy.txt
0 directories, 1 file
[root@nfs01 ~]#
客户端:
[root@web01 ~]# mkdir /data
[root@web01 ~]# mount -t nfs 10.0.0.31:/data /data
[root@web01 ~]# touch /data/oldboy.txt
[root@web01 ~]#
实例二:
nfs服务器172.16.1.31
共享下面两个目录
/app/w 要求的权限可读写,同步数据,所有用户都压缩为匿名用户
/app/r 要求的权限为只读,同步数据,所有用户都压缩为匿名用户
[root@nfs01 ~]# vim /etc/exports
/data 10.0.0.0/24(rw)
/app/w 172.16.1.0/24(rw,sync,all_squash)
/app/r 172.16.1.0/24(ro,sync,all_squash)
[root@nfs01 ~]# mkdir -p /app/w /app/r
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /app/r /app/w
[root@nfs01 ~]# ls -ld /app/r /app/w
drwxr-xr-x 2 nfsnobody nfsnobody 21 May 22 20:33 /app/r
drwxr-xr-x 2 nfsnobody nfsnobody 6 May 22 19:53 /app/w
2 directories, 0 files
[root@nfs01 ~]#
客户端上面的要求:
backup服务器 把 nfs服务器的/data/r 挂载到 /data/r
[root@backup ~]# mount -t nfs 172.16.1.31:/app/r /data/r
[root@backup ~]# file /data/r
/data/r: directory
[root@backup ~]# touch /data/r/aaa.txt
touch: cannot touch ‘/data/r/aaa.txt’: Read-only file system
[root@backup ~]#
web01 服务器 把 nfs服务器的/data/w 挂载到 /data/w
[root@web01 ~]# mount -t nfs 172.16.1.31:/app/w /data/w
[root@web01 ~]# touch /data/w/abc.txt
[root@web01 ~]# ls -ld /data/w/abc.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 20:43 /data/w/abc.txt
如何让nfs永久挂载???
1>写入到/etc/rc.local开机自启动文件中
2>追加到/etc/fstab开机自动挂载文件中
[root@backup ~]# tail -1 /etc/fstab
172.16.1.31:/app/r /data/r nfs defaults 0 0
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.8G 17G 10% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
172.16.1.31:/app/r 18G 1.8G 17G 10% /data/r
tmpfs 199M 0 199M 0% /run/user/0
[root@backup ~]#
【面试题】Rsync(全网备份)和NFS(文件系统)
https://www.jianshu.com/p/216c31a57844
未写完……