통합 아키텍처 스토리지 서비스
00 서론 부분
1) 存储服务的概念
2) 存储服务的部署(NFS)
3) 存储服务的配置
服务端配置操作
客户端配置操作
4) 存储服务的原理(数据无法存储)
5) 客户端挂载应用
mount -o ro
6) 存储服务企业应用
01. 기술 검토
1) 项目完成前项目规划(和领导确认)
2) 按照规划一步一步完成任务
如何编写脚本实现运维自动化(逻辑)
3) 进行检查测试
02. NFS 스토리지 서비스 개념
NFS是Network File System的缩写,中文意思是网络文件共享系统,
它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
原理图:
存储服务的种类
데이터 공유 저장 : 중소 기업에 대한
早期:FTP(文件传输协议)
运维01 服务器A 服务器B FTP服务器
运维02 服务器C 服务器D
中小型电商公司(游戏点卡 游戏币 道具 Q币 充值话费) --- 财务对账信息(数据库) --- 对账文件 --- FTP服务器
权限(用户认证的权限 存储目录的权限(用户))
获取数据的方式 ??? SSH远程服务 sFTP
samba windows--linux之间数据传输 Linux部署samba
NFS linux--linux之间数据传输
포털 (대기업)의 경우 :
一个用户 -- 存储服务器
上万个用户 -- 存储服务器
利用分布式存储
Moosefs(mfs) 比较落伍,初学学习比较简单
GlusterFS
FastDFS 企业应用较多
03. NFS 스토리지 서비스 역할
1) 实现数据的共享存储
2) 编写数据操作管理
3) 节省购买服务器磁盘开销 淘宝--上万 用电开销
04. NFS 서비스 배포 프로세스
NFS 워크 플로우 다이어그램 :
RPC: 远程过程调用服务程序--- 相当于租房的中介(网络编程知识)
NFS会想RPC服务注册启动的端口(NFS启动会产生多个随机端口,rpc服务就是解决NFS多端口问题的)
1.先启动RPC服务
2.启动NFS服务
3.客户端请求NFS服务(向RPC请求NFS服务)
4.RPC服务向客户端返回NFS的端口
5.客户端拿到NFS的地址端口向NFS请求传输数据
서버 배포
첫 번째 코스 : 다운로드 및 설치 소프트웨어
rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind
두 번째 코스 : NFS를 서비스 구성 파일을 작성
vim /etc/exports (man exports)
01 02(03)
01: 设置数据存储的目录 /data
02: 设置网络一个白名单 (允许哪些主机连接到存储服务器进行数据存储)
03: 配置存储目录的权限信息 存储目录一些功能
/data 172.16.1.0/24(rw,sync)
세 번째 코스 : 저장 디렉토리를 생성
mkdir /data
chown nfsnobody.nfsnobody /data
넷째 물론 시작 서비스 프로그램
先启动 rpc服务
systemctl start rpcbind.service
systemctl enable rpcbind.service
再启动 nfs服务
systemctl start nfs
systemctl enable nfs
클라이언트 배포
첫 번째 코스 : NFS 서비스 설치 소프트웨어 (파일 형식을 마운트하기 위해이 때 NFS를 식별 할 수 있습니다)
yum install -y nfs-utils
두 번째 코스는 원격 공유 디렉토리를 마운트
mount -t nfs 172.16.1.31:/data /mnt
-t -type 文件类型
05. NFS 서비스의 작동 :
服务端:
1. 启动rpc服务,开启111端口
2. 启动nfs服务
3. 实现nfs服务进程和端口好的注册
补充: 检查nfs服务进程与端口注册信息
systemctl stop nfs
systemctl stop rpcbind.service,rpcbind.socket
systemctl start rpcbind.service
rpcinfo -p localhost
systemctl start nfs
rpcinfo -p localhost
没有注册时候:
[root@nfs01 ~]# rpcinfo -p 172.16.1.31
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
nfs服务注册之后信息:
[root@nfs01 ~]# rpcinfo -p 172.16.1.31
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
100024 1 udp 53997 status
100024 1 tcp 49863 status
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
客户端:
1. 建立TCP网络连接
2. 客户端执行挂载命令,进行远程挂载
3. 可以实现数据远程传输存储
06. NFS 서버의 자세한 구성 지침
구현 여러 네트워크 호스트를 마운트 할 수 있습니다
第一种方法:
/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)
第二种方法:
/data 172.16.1.0/24(rw,sync)
/data 10.0.0.0/24(rw,sync)
总结:共享目录的权限和哪些因素有关:
1)和存储目录的本身权限有关 (755 属主:nfsnobody)
2)和配置文件中的权限配置有关 rw/ro xxx_squash anonuid/anongid
3)和客户端挂载命令的参数有关 ro
??
NFS 구성 매개 변수 기관
rw -- 存储目录是否有读写权限
ro -- 存储目录是否时只读权限
sync -- 同步方式存储数据 直接将数据保存到磁盘(数据存储安全)
async -- 异步方式存储数据 先将数据保存到内存(提高数据存储效率)
no_root_squash -- 不要将root用户身份进行转换
root_squash -- 将root用户身份进行转换
all_squash -- 将所有用户身份都进行转换
no_all_squash -- 不要将普通用户身份进行转换
操作演示all_squash参数功能:
vim /etc/exports
/data 172.16.1.0/24(ro,sync,all_squash)
[oldboy@backup mnt]$ touch oldboy_data.txt
[oldboy@backup mnt]$ ll
total 4
-rw-rw-r-- 1 nfsnobody nfsnobody 0 May 9 12:11 oldboy_data.txt
操作演示no_all_squash参数功能:
[root@nfs01 ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,no_all_squash)
[oldboy@backup mnt]$ touch oldboy_data02.txt
touch: cannot touch ‘oldboy_data02.txt’: Permission denied
解决权限问题:
[root@nfs01 ~]# chmod o+w /data/
[root@nfs01 ~]# ll /data/ -d
drwxr-xrwx. 2 nfsnobody nfsnobody 52 May 9 12:11 /data/
[oldboy@backup mnt]$ touch oldboy_data02.txt
[oldboy@backup mnt]$ ll
total 4
-rw-r--r-- 1 nfsnobody nfsnobody 7 May 9 10:57 backup_data.txt
-rw-rw-r-- 1 oldboy oldboy 0 May 9 12:17 oldboy_data02.txt
-rw-rw-r-- 1 nfsnobody nfsnobody 0 May 9 12:11 oldboy_data.txt
操作演示root_squash参数功能:
vim /etc/exports
/data 172.16.1.0/24(rw,sync,root_squash)
[root@backup mnt]# touch root_data.txt
[root@backup mnt]# ll
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 9 12:20 root_data.txt
操作演示no_root_squash参数功能
[root@backup mnt]# ll
total 4
-rw-r--r-- 1 root root 0 May 9 12:23 root_data02.txt
어떻게 NFS 비즈니스 인터넷 기업들에게 스쿼시 다양한 매개 변수를 구성합니다
保证网站存储服务器用户数据安全性:
no_all_squash 需要进行配置 共享目录权限为www(确保客户端用户 服务端用户 uid数值一致)
root_squash 需要进行配置 root---nfsnobody data目录---www
以上默认配置(很多服务默认配置都是从安全角度出发)
服务端:
useradd www;id www --id=1022
cat >/etc/exports<<EOF
/data 172.16.1.0/24(rw,root_squash,no_all_squash)
EOF
chown -R www.www /data
客户端:
mount -t nfs 172.16.1.31:/data /mnt
useradd www -u 1022
su - www
cd mnt
어떻게 기본 구성 NFS를 볼 수 있습니다
cat /var/lib/nfs/etab --- 记录nfs服务的默认配置记录信息
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
如何让root用户可以操作管理www用户管理的data目录
root --- root_squash --- www ---操作--- data目录
anonuid=65534,anongid=65534 --- 可以指定映射的用户信息
修改映射用户:www=1002,服务端
/data 172.16.1.0/24(rw,sync,anonuid=1002,anongid=1002)
기업은 어떻게 구성 파일 NFS를 편집
01. 通用方法 *****
/data 172.16.1.0/24(rw,sync)
02. 特殊情况 (让部分人员不能操作存储目录 可以看目录中的数据)
/data 10.0.0.0/24(ro,sync)
03. 修改默认的匿名用户
/data 10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)
NFS 서비스 문제 :
01. nfs服务器重启,挂载后创建数据比较慢
服务器重启方式不正确
服务重启:
01. restart 重启服务 强制断开所有连接 用户感受不好
02. reload 重启服务(平滑重启) 强制断开没有数据传输的连接 提升用户感受
07. NFS 클라이언트 자세한 구성 지침
mount -t nfs 172.16.1.31:/data /mnt
如何实现自动挂载:
01. 利用rc.local
echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
02. 利用fstab文件
vim /etc/fstab
172.16.1.31:/data /mnt nfs defaults 0 0
特殊的服务已经开启了
centos6:无法实现网路存储服务自动挂载原因
根据系统服务启动顺序
假设按照顺序依次启动 network服务--- sshd服务--- crond服务--- rsync服务--- rpcbind服务--- nfs服务
先加载/etc/fstab --- network服务 --- autofs服务
autofs服务程序:开机自动启动
服务启动好之后,重新加载fstab
centos7:无法实现网路存储服务自动挂载原因
根据系统服务启动顺序
network服务
sshd服务
crond服务
rsync服务
先加载/etc/fstab network服务
autofs==centos7??
客户端mount命令参数
rw --- 实现挂载后挂载点目录可读可写 (默认)
ro --- 实现挂载后挂载点目录可读可写
suid --- 在共享目录中可以让setuid权限位生效 (默认)
nosuid --- 在共享目录中可以让setuid权限位失效 提供共享目录的安全性
exec --- 共享目录中的执行文件可以直接执行
noexec --- 共享目录中的执行文件可以无法直接执行 提供共享目录的安全性
auto --- 可以实现自动挂载 mount -a 实现加载fstab文件自动挂载
noauto --- 不可以实现自动挂载
nouser --- 禁止普通用户可以卸载挂载点
user --- 允许普通用户可以卸载挂载点
[oldboy@web01 ~]$ umount /mnt
umount: /mnt: umount failed: Operation not permitted
客户端如何卸载
umount -lf /mnt --- 强制卸载挂载点
-l 不退出挂载点目录进行卸载
-f 强制进行卸载操作
08. 요약 :
1)NFS存储服务器概念
2)NFS存储工作原理图
3)NFS存储服务部署
4)NFS服务端详细配置说明
服务端配置参数 xxx_squash
5) NFS客户端详细配置说明
如何实现自动挂载
客户端挂载参数说明 man mount
如何强制卸载共享目录
작업 :
- 어떤 특별한 서비스를 자동으로 fatab 달성 파일이 탑재?
- 사용자 매개 변수의 역할에 대한 연구
- NFS 서비스 배포 프로세스
실시간 동기화 서비스
SSH 원격 서비스