Linux架构之NFS
NFS 网络存储
- 简介
- 实现NFS多主机共享
1. NFS简介
NFS是Network File System的缩写。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph
2. NFS应用
- 用户访问NFS客户端,将请求转化为函数
- NFS通过TCP/IP连接服务端
- NFS服务端接收请求,会先调用portmap进程进行端口映射
- Rpc.nfsd进程用于判断NFS客户端能否连接服务端
- Rpc.mount进程用于判断客户端对服务端的操作权限
- 如果通过权限验证,可以对服务端进行操作,修改或读取
3. NFS实践
服务端
1. 安装NFS和rpcbind
yum install nfs-utils rpcbind -y
??????"nfs-tools"×
2. 创建挂载点
mkdir /web/nfs{1..9}
3. 配置挂载点
vim /etc/exports
格式: [挂载点] [可以访问的IP]([权限])
/web/nfs1 172.16.1.0/20(rw,sync,all_squash)
4. 关闭selinux和防火墙
setenforce 0
systemctl disable --now firewalld
5. 启动nfs和rpcbind服务器
systemctl start nfs-server
systemctl start rpcbind
6. 检查服务端是否正常
showmount -e [服务端的地址,默认是本机地址]
showmount -e
Export list for nfs:
/web/nfs1 172.16.1.0/20
showmount -e 172.16.1.31
Export list for 172.16.1.31:
/web/nfs1 172.16.1.0/20
cat /var/lib/nfs/etab
7. 给挂载点授权
chown -R nfsnobody.nfsnobody /web
客户端
1. 安装NFS
yum install -y nfs-utils
2. 创建目录
mkdir /opt/nfs/
3. 挂载NFS
mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
4. 测试NFS文件同步功能
4. NFS配置详解
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的用户GID,必须存在系统(常用) |
1. 控制读写
rw、ro
2. 控制文件权限
root_squash
no_root_squash
all_squash
no_all_squash
3. 控制写模式
sync
async
4. 控制用户
anonuid
anongid
统一用户:
1. 创建用户
groupadd www-g 666
useradd www -u 666 -g 666 -M -r -s /sbin/nologin
2. 修改挂载点权限
chown -R www.www /web/
3. 使用
5. 搭建考试系统
5.1 搭建web服务
1. 安装web软件
yum install httpd php php-devel -y
2. 将代码放置于网站的根目录
cd /var/www/html/
# 上传代码
yum install lrzsz
压缩文件kaoshi那个
unzip 解压
3. 授权
chown -R www.www /var/www/html
4. 关闭selinux和防火墙
setenforce 0
systemctl disable --now firewalld
5. 修改web软件的用户
vim /etc/httpd/conf/httpd.conf
User www
Group www
6. 启动web软件
systemctl start httpd
7. 测试
1.上传
1_linux.jpg(命名有讲究)
2.访问
http://172.16.1.7/upload/1_linux.jpg
5.2 配合NFS实现文件共享
1. 修改NFS配置文件
vim /etc/exports
/web/upload 172.16.1.0/20(rw.sync,all_squash,anonuid=666,anongid=666)
2. 创建挂载点
mkdir /web/upload
chown www.www /web/upload
3. 重启NFS
systemctl restart nfs-server rpcbind
4. 客户端安装NFS软件
"web01" yum install nfs-utils -y
"web02" yum install nfs-utils -y
"web03" yum install nfs-utils -y
5. 挂载
"web01" mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
"web01" mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
"web01" mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload
6. 测试
用web2上传,web3查看