为什么用NFS网络文件存储系统?
1)实现数据信息统一一致
2)节省局域网数据同步传输的带宽
3)节省网站架构中服务器硬盘资源
NFS系统存储原理介绍
RPC服务类似一个中介服务,NFS服务端与NFS客户端之间
RPC服务用于管理端口,由于NFS服务启动时会产生多个端口信息,不便于客户端访问,因此需要利用RPC服务统一管理
进行NFS服务部署
理解一个知识概念:什么是RPC服务(远程调用服务-中介)
NFS服务端部署流程
第一个历程:检查nfs/rpc程序服务有没有安装
rpm -qa rpcbind nfs-utils
第二个历程:安装nfs与rpc服务软件
yum install -y rpcbind nfs-utils
第三个历程:编写nfs服务配置文件
vim /etc/exports
存储目录信息 允许哪些主机进行数据存储(权限参数)
/data/ 172.16.1.0/24(rw,sync)
第四个历程:创建共享存储目录,授权目录
mkdir /data/ -p
chown -R nfsnobody.nfsnobody /data/
第五个历程:启动程序服务
/etc/init.d/rpcbind start
/etc/init.d/nfs start
rpcinfo -p 10.0.0.31 <-- 检查房源信息是否向中介进行注册
NFS客户端部署流程
第一个历程:检查nfs/rpc程序服务有没有安装
rpm -qa rpcbind nfs-utils
第二个历程:安装nfs与rpc服务软件
yum install -y rpcbind nfs-utils
第三个历程:进行远程共享目录挂载
[root@backup ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@backup ~]# # mount -t 指定挂载文件系统类型nfs 指定存储服务器地址信息:共享目录 本地挂载点路径信息
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 3.4G 5.0G 41% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 8.8G 3.3G 5.1G 40% /mnt
第四个历程:进行存储数据信息测试
NFS和RPC服务软件都干了什么事
1.1 NFS和RPC服务软件都干了什么事
rpm -ql rpcbind
/etc/rc.d/init.d/rpcbind <-- 生成服务启动脚本文件
/usr/sbin/rpcinfo <-- 生成查看房源信息命令文件
rpm -ql nfs-utils
/etc/rc.d/init.d/nfs <-- 生成服务启动脚本文件
/usr/sbin/showmount <-- 生成查看共享目录列表信息命令
总结:nfs-utils和rpcbind软件必须也要安装在nfs客户端
01. 客户端不安装nfs软件无法识别nfs文件类型
02. 客户端不安装nfs和rpc软件,无法使用rpcinfo和showmount命令,进行查看服务端信息
配置文件编写说明
NFS 共享目录 NFS客户端地址(参数1,参数2,...)
/data 172.16.1.0/24(参数1) rw sync 通不到磁盘
/data 10.0.0.0/24(参数1) ro async 内存
共享目录影响权限的因素
01. nfs配置文件中权限参数会影响共享目录权限
02. nfs服务端共享目录本身权限也会影响目录目录权限
2. 参数信息说明
root_squash <-- 将root用户映射为相应nfsnobody用户
no_root_squash <-- 将root用户不映射为相应nfsnobody用户
all_squash <-- 将所有用户映射为相应nfsnobody用户
no_all_squash <-- 将所有用户不映射为相应nfsnobody用户
1.1 nfs客户端操作流程:root 所有用户
第一个历程:创建出要映射的用户信息
useradd oldboy -u 500
说明:如果客户端没有服务端映射的用户信息,存储的文件默认属主属组权限为nobody
nfs服务端操作流程:
第一个历程:创建默认匿名用户
useradd oldboy -s /sbin/nologin -M -u 500
第二个历程:编写配置文件
vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=500,anongid=500)
chown -R oldboy.oldboy /data/
第三个历程:重启nfs服务(平滑重启)
/etc/init.d/nfs reload
1.1 nfs服务器172.16.1.31,共享下面nfs服务端:
nfs服务器 172.16.1.31,共享下面两个目录:
/data/w 要求的权限可读写,同步数据,所有用户都压缩为匿名用户
/data/r 要求的权限为只读,同步数据,所有用户都压缩为匿名用户
客户端上面要求:
backup服务器 把NFS服务器的/data/r 挂载到/data/r
web01服务器 把NFS服务器的/data/w 挂载到/data/w
第一个历程:编写配置文件
vim /etc/exports
/data/w
172.16.1.0/24(rw,sync,all_squash)
/data/r
172.16.1.0/24(ro,sync,all_squash)
第二个历程:创建存储目录,修改目录权限
mkdir /data/{w,r} -p
chown -R nfsnobody.nfsnobody
/data/
第三个历程:平滑重启nfs服务
/etc/init.d/nfs reload
nfs客户端:
第一个历程:创建挂载点目录
mkdir /data/{w,r} -p
第二个历程:进行共享目录挂载
backup
mount -t nfs 172.16.1.31:/data/r
/data/r
web01
mount -t nfs 172.16.1.31:/data/w /data/w
说明:在这是nfs共享目录时,会有子集目录继承父亲目录的权限问题
尽量在配置共享目录时,避免目录继承权限问题,不要上级目录和子集目录同时存在
1.1 NFS客户端自动挂载
①. 利用/etc/rc.local文件实现开机自动挂载
echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
②. 利用fstab文件实现开机自动挂载
tail -1 /etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
chkconfig netfs on
/etc/init.d/netfs start 临时开启