NFS,是Network File System的缩写,中文意思是网络文件系统、它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
ext4 C6
swap 交换分区
tmpfs 内存文件系统 存放的数据相当于存放在内存中
内存文件系统 ,加速,存放缓存
什么是文件系统:决定文件和数据如何在系统存放
常用软件
GlusterFS 分布式存储
Fastdfs 分布式存储
NFS 单点共享
应用场景:共享存储
存放用户上传 附近(zip) 图片(头像 文章里面的图片)
NFS流程原理图
大型企业存储数据,主要使用的是分布式存储系统
mfs
fastdfs 分部式文件系统
glustfs 优秀开源分部式文件系统**
优势:
01. 存储压力减轻了
02. 提升数据安全性
03. 提升存储数据容量
劣势:
01. 成本高
02. 配置复杂 管理(分布式算法)
03. 数据恢复难度较大
服务端部署:
第一个历程:确认检查服务软件是否安装
[root@nfs01 ~]#rpm -qa|grep -E "nfs|rpc"
[root@nfs01 ~]#yum install -y nfs-utils rpcbind (centos7 centos6)
[root@nfs01 ~]#yum install -y nfs-utils portmap (centos5)
第二个历程:启动服务
[root@nfs01 ~]#systemctl start rpcbind.service 首先启动
[root@nfs01 ~]#systemctl start nfs.service 其次启动
第三个历程: 编写配置文件
[root@nfs01 ~]#vim /etc/exports
man exports
#存储数据目录信息 主机地址或网段信息(参数信息)
/upload 172.16.1.0/24(rw,sync)
第四个历程:创建一个共享目录 并且授权为nfsnobody用户管理
[root@nfs01 ~]# mkdir /upload
[root@nfs01 ~]# chown nfsnobody.nfsnobody /upload
第五个历程:测试验证的工作
1)检验nfs进程信息是否向rpc服务进行注册
部署nfs存储服务
RPC(远程过程调用服务--python 网络编程)
相当于一个中介服务
[root@nfs01 ~]#rpcinfo -p 172.16.1.31
2)检查是否有共享存储数据的目录信息
[root@nfs01 ~]#showmount -e 172.16.1.31
Export list for 172.16.1.31:
/upload 172.16.1.0/24
3)本地址进行一下挂载操作
[root@nfs01 ~]# mount -t nfs 172.16.1.31:/upload /mnt
[root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
172.16.1.31:/data 45M 1.0M 40M 3% /mnt
[root@nfs01 ~]# cd /mnt
[root@nfs01 mnt]# touch oldboy123.txt
touch: cannot touch ‘oldboy123.txt’: Permission denied 修改/data 目录权限
常见问题:
[root@nfs01 /]# umount /mnt
umount.nfs4: /mnt: device is busy
1)你所在目录就是在/mnt目录中
2)你挂载目录正在被程序进程所占用
解决
[root@nfs01 ~]#umount -lf /mnt
-l Lazy unmount 懒惰卸载 解决异常问题第一个原因
-f Force unmount 强制卸载 解决异常问题第二个原因
客户端部署:
第一个历程:需要安装服务软件
[root@nfs01 ~]# yum install -y nfs-utils
如果软件不进行安装
挂载:[root@nfs01 ~]#mount -t nfs 172.16.1.31:/upload /mnt
错误提示:
mount: wrong fs type, bad option, bad superblock on 172.16.1.31:/data,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
In some cases useful info is found in syslog - try dmesg | tail or so.
第二个历程:利用命令进行远程挂载
[root@nfs01 ~]#mount -t nfs 172.16.1.31:/upload /mnt
第三个历程:完成之后进行测试,并讲命令放入开机自动里面
nginx配置文件参数补充:
- nfs配置文件中常见的参数
rw 重点掌握 Read-write,表示可读可写权限
ro Read-only,表示只读权限
sync (同步传输数据) 通过网络传输到存储服务器 在内存里面缓冲 尽可能快的保存在硬盘
async (异步传输数据) 通过网络传输到存储服务器 先在内存里保存 在慢慢保存到硬盘里
no_root_squash 数据的属主属组用户如果是root,保存的时候属主属组属性信息不变
root_squash 数据的属主属组用户如果是root,保存的时候属主属组属性信息发生改变
nfsnobody
all_squash 数据的属主属组用户如果是普通用户,保存的时候属主属组属性信息发生改变
nfsnobody
no_all_squash 数据的属主属组用户如果是普通用户, 保存的时候属主属组属性信息不变
anonuid 指定默认将用户身份进行如何转换 默认都转换为nfsnobody
anongid 指定默认将用户组身份进行如何转换 默认都转换为nfsnobody