目录
在node1、node2、node3、node4中查看分布式复制卷文件分布
GlusterFS
简介
- 开源的分布式文件系统
- 由存储服务器、客户端、NFS/Samba存储网关组成
- 无元数据服务器(去中心化)
元:是对某一种对象的描述信息(属性)
概念
文件系统
是基于操作系统内核的软件形式,管理磁盘上存储的文件
通信方式
- TCP/IP
- 客户端和服务端基于网络通信
- 通信速度会降低
- InfiniBand
- 无线带宽,是一种通信技术
- 实现了低延迟高带宽,也是基于网络连接,但是不采用TCP/IP协议
- 绕过系统内核,直接在底层的程序(Gluster)让客户端和服务端之间通信
Cluster特点
-
扩展性和高性能
- 每个节点都存放数据,访问时并行读取数据,访问的越多,同时读取数据的节点就越多
-
高可用性
- 节点之间互相复制数据,不会因为某个节点失效导致整个环境失效
-
全局统一命名空间
- 在服务端给卷起的名字,这个名字是全局统一的,不能重名。客户端可以根据卷名使用
-
弹性卷管理
- 卷大小可扩展、可收缩,通过弹性哈希算法决定数据放到哪个卷
-
基于标准协议
- 可以基于TCP/IP协议连接
GlusterFS术语
(1)Brick
存储块。如果ClusterFS是由多个服务器构成的,每个服务器至少要提供一个该服务器的磁盘分区,然后把分区加入到ClusterFS的分布式存储环境中
所以Brick就是加入到ClusterFS分布式存储环境中的一个分区,服务器可以有多个Brick
(2)Volume
卷,可以把多个磁盘上独立的分区(Brick),合并到一个卷组中,可以从这个卷组调用空间
所调用的空间可能是来自多个不同服务器中的多个不同的磁盘,这就是卷
(3)FUSE
FUSE:Filesystem in Userspace,文件系统用户空间
是内核中的一个模块,创建客户端本地文件系统的,通过FUSE做接口让用户去挂载远程的GlusterFS文件系统
(4)VFS
客户端要通过FUSE的文件系统连接远程服务器上的存储,但远程服务器是分布式的存储环境,这时就需要为用户提供一个接口
VFS是一种让客户端FUSE连接远程服务器时,为磁盘提供的一个接口
(5)Glusterd
GlusterFS程序启动后,进程名就叫Glusterd
运行架构
- 模块化(每个环节都可以单独存在)、堆栈式的架构(把各个模块以相应的接口或协议连接起来)
- 通过对模块的组合,实现复杂的功能
- POSIX:挂载时分区连接内核的接口
工作原理
当用户使用客户端访问数据时,会向VFS发送请求,VFS接口结合/dev/fuse指向GlusterFS客户端,客户端使用TCP/IP或无线带宽来连接服务器,服务器再通过本地的VFS找到服务器内硬盘本身的分区
弹性HASH算法
解决了数据能够均衡地存放到服务器上的哪一个Brick
- 通过HASH算法得到一个32位的整数
- 把哈希值划分为N个连续的子空间(取决于Brick的数量),每个空间对应一个Brick
- 尽量平均让文件放置到不同的Brick中,以保证相对均衡
优点
- 让数据尽量平均分布在每一个Brick中
- 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
过程
- 当GlusterFS文件系统接收到存储请求以后,需要先得到这个文件
- 假如这个文件很大的话GlusterFS就要把这个文件分成很多份
- 针对每一份数据进行HASH运算生成一个32位的整数(哈希值)
- 然后把计算的哈希值和Brick进行匹配,假如有4个Brick,弹性HASH算法会把2的32次方以内的数字分成4份
- 匹配到哪个Brick的区间就把文件存储到哪个Brick中
- 这4个Brick可能在同一个服务器,也可能不在同一个服务器,这些Brick就是服务器最底层存放数据的空间
GlusterFS卷类型
条带卷在GlusterFS 6.0版本之后就不再支持条带卷,不再进行讲解
因为条带卷只要有一个节点故障,那么所有的节点都会受到影响不能使用
分布式卷(dis-volume)
在GlusterFS中,不指定卷的类型,默认创建的就是分布式卷
- 不对文件进行分块处理,直接存储在服务器节点上使用本地文件系统进行存储
- 通过扩展文件属性保存HASH值
- 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等
特点
- 文件分布在不同的服务器,不具备冗余性
- 更廉价的扩展卷大小
- 单点故障会造成数据丢失,如果一个Brick故障了,那么该Brick中的分布式卷就会丢失,但是不会影响其他卷
- 依赖底层的数据保护
复制卷(rep-volume)
- 同一文件保存一份或多份副本
- 因为要保存副本,所以磁盘利用率低
- 若多个节点上的存储空间不一致,将按照木桶原则取最小节点的容量作为该卷的总容量
特点
- 卷中所有的Brick均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 创建复制卷最少需要2个Brick
- 具备冗余性
分散卷(stripe-volume)
- 基于ErasureCodes(纠错码)校验,存储大文件时性能突出
- 通过配置Redundancy(冗余)级别提高可靠性,在保证较高的可靠性同时,可以提升物理存储空间的利用率
- 必须包含3个Brick
特点
- Redundancy(冗余)级别必须大于0,并且brick的总数必须大于2 * 冗余度
- 分散卷最少需要3个brick
- 防止单点故障,提高IO性能
分布式复制卷(dis-rep)
- 兼顾分布式卷和复制卷的功能
- 用于需要冗余的情况
特点
- 配置分布式复制卷时,brick包含的存储服务器数必须是复制数的 >=2的倍数
分布式分散卷(dis-stripe)
- 在分散的子卷上分发文件
- 等效于分布式复制卷,但是不是复制子卷而是分散子卷
冗余级别为1的情况下(最少要求):2 * (2 + 1) = 6 ——》2 * (2个存储数据的服务器 + 1个存储纠错码的服务器)
案例
部署GFS分布式文件系统的集群环境,然后把每个卷都创建一遍,然后测试效果是否达到预期
案例环境
操作系统 | 系统IP | 主机名 | 挂载磁盘 | 挂载目录 |
Centos 7 | 192.168.10.101 | node1 | /dev/sdb(3G) /dev/sdc(4G) /dev/sdd(5G) /dev/sde(6G) /dev/sdf(7G) | /b3 /c4 /d5 /e6 /f7 |
Centos 7 | 192.168.10.102 | node2 | /dev/sdb(3G) /dev/sdc(4G) /dev/sdd(5G) /dev/sde(6G) /dev/sdf(7G) | /b3 /c4 /d5 /e6 /f7 |
Centos 7 | 192.168.10.103 | node3 | /dev/sdb(3G) /dev/sdc(4G) /dev/sdd(5G) /dev/sde(6G) /dev/sdf(7G) | /b3 /c4 /d5 /e6 /f7 |
Centos 7 | 192.168.10.104 | node4 | /dev/sdb(3G) /dev/sdc(4G) /dev/sdd(5G) /dev/sde(6G) /dev/sdf(7G) | /b3 /c4 /d5 /e6 /f7 |
Centos 7 | 192.168.10.105 | node5 | /dev/sdb(3G) /dev/sdc(4G) /dev/sdd(5G) /dev/sde(6G) /dev/sdf(7G) | /b3 /c4 /d5 /e6 /f7 |
Centos 7 | 192.168.10.106 | node6 | /dev/sdb(3G) /dev/sdc(4G) /dev/sdd(5G) /dev/sde(6G) /dev/sdf(7G) | /b3 /c4 /d5 /e6 /f7 |
Centos 7 | 192.168.10.107 | 客户端 |
初步设置
添加硬盘
给每个节点(101 ~ 106)添加5块硬盘,分别是3G、4G、5G、6G、7G大小的硬盘
启动101 ~ 106的6台主机,并连接上XShell
设置主机名
依次为所有节点修改主机名
101主机
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# bash
102主机
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# bash
103主机
[root@localhost ~]# hostnamectl set-hostname node3
[root@localhost ~]# bash
104主机
[root@localhost ~]# hostnamectl set-hostname node4
[root@localhost ~]# bash
105主机
[root@localhost ~]# hostnamectl set-hostname node5
[root@localhost ~]# bash
106主机
[root@localhost ~]# hostnamectl set-hostname node6
[root@localhost ~]# bash
开启会话同步
为了方便实验,防火墙和内核安全机制。修改hosts文件,末尾追加以下内容
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
[root@node1 ~]# vim /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
192.168.10.104 node4
192.168.10.105 node5
192.168.10.106 node6
为新硬盘分区、格式化、挂载
使用fdisk 磁盘路径依次为每个新加硬盘分区
输入"n"一直回车直到分区结束,最后输入"w"保存退出
[root@node1 ~]# fdisk /dev/sdb
[root@node1 ~]# fdisk /dev/sdc
[root@node1 ~]# fdisk /dev/sdd
[root@node1 ~]# fdisk /dev/sde
[root@node1 ~]# fdisk /dev/sdf
使用mkfs命令格式化这5个分区
[root@node1 ~]# mkfs -t ext4 /dev/sdb1
[root@node1 ~]# mkfs -t ext4 /dev/sdc1
[root@node1 ~]# mkfs -t ext4 /dev/sdd1
[root@node1 ~]# mkfs -t ext4 /dev/sde1
[root@node1 ~]# mkfs -t ext4 /dev/sdf1
创建挂载目录
[root@node1 ~]# mkdir /b3
[root@node1 ~]# mkdir /c4
[root@node1 ~]# mkdir /d5
[root@node1 ~]# mkdir /e6
[root@node1 ~]# mkdir /f7
挂载
[root@node1 ~]# mount /dev/sdb1 /b3
[root@node1 ~]# mount /dev/sdc1 /c4
[root@node1 ~]# mount /dev/sdd1 /d5
[root@node1 ~]# mount /dev/sde1 /e6
[root@node1 ~]# mount /dev/sdf1 /f7
永久挂载,修改fstab文件,末尾追加以下内容,然后保存退出
[root@node1 ~]# vim /etc/fstab
/dev/sdb1 /b3 ext4 defaults 0 0
/dev/sdc1 /c4 ext4 defaults 0 0
/dev/sdd1 /d5 ext4 defaults 0 0
/dev/sde1 /e6 ext4 defaults 0 0
/dev/sde1 /f7 ext4 defaults 0 0
安装GlusterFS
修改yum仓库源为阿里云的yum仓库
直接把下方命令复制进XShell终端回车即可
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
安装生成GlusterFS的仓库软件包
[root@node1 ~]# yum -y install centos-release-gluster
生成的GlusterFS仓库位置在/etc/yum.repo.d/目录下,然而生成的仓库文件指定的URL不可用,为了能够继续使用yum安装后续软件包,需要修改GlusterFS生成的仓库文件
[root@node1 ~]# vim /etc/yum.repos.d/CentOS-Gluster-9.repo
[centos-gluster9]
name=CentOS-$releasever - Gluster 9
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-9
baseurl=http://mirrors.aliyun.com/$contentdir/$releasever/storage/$basearch/gluster-9/
gpgcheck=1s
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
[centos-gluster9-test]
name=CentOS-$releasever - Gluster 9 Testing
baseurl=http://buildlogs.centos.org/centos/$releasever/storage/$basearch/gluster-9/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
[root@node1 ~]# yum clean all
[root@node1 ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
centos-gluster9/7/x86_64 CentOS-7 - Gluster 9 181
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,791
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 6,173
repolist: 30,743
安装GlusterFS相关软件包
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
- glusterfs:gluster客户端主程序
- glusterfs-server:gluster服务端主程序
- glusterfs-fuse:fuse是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
- glusterfs-rdma:为gluster提供远程直接内存访问,支持不通过双方的OS进行直接内存访问。
启动GlusterFS
[root@node1 ~]# systemctl start glusterd
[root@node1 ~]# systemctl enable glusterd
配置GlusterFS
添加节点
关闭会话同步
在101(node1)主机操作
可以在任意一个节点添加,如果在node1添加就添加除了node1自己的其他所有节点
- gluster peer probe 节点主机名
[root@node1 ~]# gluster peer probe node2
[root@node1 ~]# gluster peer probe node3
[root@node1 ~]# gluster peer probe node4
[root@node1 ~]# gluster peer probe node5
[root@node1 ~]# gluster peer probe node6
查看状态
添加完在其他任意节点查看状态,在查看状态时,是不会显示当前节点的信息,只会显示其他节点的信息
下方就是在node2节点查询状态,但是结果就是除了node2都显示了
[root@node2 ~]# gluster peer status
Number of Peers: 5
Hostname: node1
Uuid: 4531d86a-cd66-4cc0-abbf-85bd0361ffc8
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 43f272b5-5ef4-41ce-a1ad-2530ab94659c
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 12fb7f0d-0b53-4a4e-8cad-23b00014b1b5
State: Peer in Cluster (Connected)
Hostname: node5
Uuid: 5cb65298-a630-44e1-bd35-b2995550e810
State: Peer in Cluster (Connected)
Hostname: node6
Uuid: d74f536a-bba5-4b1a-b7a3-6c1d8ab4f64e
State: Peer in Cluster (Connected)
创建卷
创建分布式卷
在101(node1)主机操作
默认创建的就是分布式卷
使用gluster命令创建一个分布式卷,指定卷名为dist-volume,指定为node1节点上的/e6目录,node2节点上的/e6目录,加force参数来强制创建
然后使用info选项查看信息,然后启动该卷
[root@node1 ~]# gluster volume create dist-volume node1:/e6 node2:/e6 force
[root@node1 ~]# gluster volume info dist-volume
Volume Name: dist-volume
Type: Distribute
Volume ID: 40946bd8-cc79-406a-be3c-5c03dd2a207e
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/e6
Brick2: node2:/e6
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@localhost ~]# gluster volume start dist-volume
- force:强制
创建复制卷
复制卷要求复制的数量和Brick Server的数量(node的数量)相同
在创建分布式卷以外类型的卷时,要指定卷的类型,,然后启动该卷
[root@node1 ~]# gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
[root@node1 ~]# gluster volume info rep-volume
Volume Name: rep-volume
Type: Replicate
Volume ID: b5d1afda-ab03-47a7-82b9-2786648a9b3a
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/d5
Brick2: node4:/d5
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@localhost ~]# gluster volume start rep-volume
分散卷
- disperse:指定构建分散卷的节点数
- redundancy:冗余度,允许几个节点出故障
[root@node1 ~]# gluster volume create disp-volume disperse 3 redundancy 1 node1:/b3 node2:/b3 node3:/b3 force
[root@node1 ~]# gluster volume info disp-volume
[root@node1 ~]# gluster volume start disp-volume
分散卷中每三个brick允许有一个失效(3*1或6*2)
创建分布式复制卷
分布式复制卷要求Brick Server的数量必须是复制数的倍数(两倍或更高的倍数)
如果replica指定的是2,后面跟了4个brick,那就是两两复制,分开2组存储
[root@node1 ~]# gluster volume create dist-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
[root@node1 ~]# gluster volume info dist-rep
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 197055f7-37d8-419f-bb22-9f05c7e1a032
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/c4
Brick2: node2:/c4
Brick3: node3:/c4
Brick4: node4:/c4
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start dist-rep
分布式分散卷
分布式分散卷需要用六个节点,每三个节点做一个分散卷,两组分散卷做成复制卷
[root@node1 ~]# gluster volume create dist-disp disperse 3 redundancy 1 node1:/f7 node2:/f7 node3:/f7 node4:/f7 node5:/f7 node6:/f7 force
[root@node1 ~]# gluster volume start dist-disp
部署GFS客户端
再打开107主机,连接上XShell。作为客户端来测试
安装客户端软件
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum -y install glusterfs glusterfs-fuse
如果用的是带桌面的CentOS 7系统,上面两个包是已经自动安装过了
创建挂载目录
[root@localhost ~]# mkdir -p /test/{dist,rep,disp,dist_and_rep,dist_and_disp}
[root@localhost ~]# ls /test
修改hosts文件
在hosts文件末尾追加下方内容
[root@localhost ~]# vim /etc/hosts
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
192.168.10.104 node4
192.168.10.105 node5
192.168.10.106 node6
挂载Gluster文件系统
使用mount命令,指定文件系统为glusterfs,然后指定任意一个主机名:卷名,最后指定挂载目录
因为GlusterFS是去中心化的环境,所以挂载时可以指定任意一个主机名来挂载
[root@localhost ~]# mount -t glusterfs node1:dist-volume /test/dist
[root@localhost ~]# mount -t glusterfs node1:rep-volume /test/rep
[root@localhost ~]# mount -t glusterfs node1:disp-volume /test/disp
[root@localhost ~]# mount -t glusterfs node1:dist-rep /test/dist_and_rep
[root@localhost ~]# mount -t glusterfs node1:dist-disp /test/dist_and_disp
[root@localhost ~]# df -h
修改fstab配置文件
在fstab末尾添加以下内容
[root@localhost ~]# vim /etc/fstab
node1:dist-volume /test/dist glusterfs defaules,_netdev 0 0
node1:rep-volume /test/rep glusterfs defaules,_netdev 0 0
node1:dist-rep /test/dist_and_rep glusterfs defaules,_netdev 0 0
node1:disp-volume /test/disp glusterfs defaules,_netdev 0 0
node1:disp-rep /test/disp_and_rep glusterfs defaules,_netdev 0 0
在客户端测试Gluster文件系统
在卷中写入文件
创建测试文件
[root@localhost ~]# dd if=/dev/zero of=/root/demo1.log bs=1M count=43
[root@localhost ~]# dd if=/dev/zero of=/root/demo2.log bs=1M count=43
[root@localhost ~]# dd if=/dev/zero of=/root/demo3.log bs=1M count=43
[root@localhost ~]# dd if=/dev/zero of=/root/demo4.log bs=1M count=43
[root@localhost ~]# dd if=/dev/zero of=/root/demo5.log bs=1M count=43
[root@localhost ~]# dd if=/dev/zero of=/root/demo6.log bs=1M count=43
[root@localhost ~]# dd if=/dev/zero of=/root/demo7.log bs=1M count=43
把每个卷中写入文件
[root@localhost ~]# cp demo* /test/dist
[root@localhost ~]# cp demo* /test/rep
[root@localhost ~]# cp demo* /test/dist_and_rep
[root@localhost ~]# cp demo* /test/disp
[root@localhost ~]# cp demo* /test/dist_and_disp
查看文件分布
在node1和node2中查看分布式卷文件分布
这些文件存放的位置就是通过弹性HASH算法决定的
在101(node1)主机操作
[root@node1 ~]# ll -h /e6
总用量 173M
-rw-r--r--. 2 root root 43M 4月 17 22:06 demo1.log
-rw-r--r--. 2 root root 43M 4月 17 22:06 demo2.log
-rw-r--r--. 2 root root 43M 4月 17 22:06 demo3.log
-rw-r--r--. 2 root root 43M 4月 17 22:06 demo4.log
在102(node2)主机操作
[root@node2 ~]# ll -h /e6
总用量 216M
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo1
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo3
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo4
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo5
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo6
drwx------. 2 root root 16K 8月 19 15:24 lost+found
在node3和node4中查看复制卷文件分布
在103(node3)主机操作
[root@node3 ~]# ll /d5/
总用量 352332
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo1
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo2
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo3
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo4
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo5
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo6
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo7
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo8
drwx------. 2 root root 16384 8月 19 15:24 lost+found
在104(node4)主机操作
[root@node4 d5]# ll /d5
总用量 352336
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo1
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo2
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo3
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo4
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo5
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo6
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo7
-rw-r--r--. 2 root root 45088768 8月 19 17:00 demo8
drwx------. 2 root root 16384 8月 19 15:24 lost+found
在node1、node2、node3、node4中查看分布式复制卷文件分布
在101(node1)主机操作
[root@node1 e6]# ll -h /c4
总用量 130M
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo2
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo7
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo8
drwx------. 2 root root 16K 8月 19 15:24 lost+found
在102(node2)主机操作
[root@node2 ~]# ll -h /c4
总用量 130M
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo2
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo7
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo8
drwx------. 2 root root 16K 8月 19 15:24 lost+found
在103(node3)主机操作
[root@node3 ~]# ll -h /c4
总用量 216M
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo1
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo3
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo4
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo5
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo6
drwx------. 2 root root 16K 8月 19 15:24 lost+found
在104(node4)主机操作
[root@node4 d5]# ll -h /c4
总用量 216M
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo1
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo3
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo4
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo5
-rw-r--r--. 2 root root 43M 8月 19 17:00 demo6
drwx------. 2 root root 16K 8月 19 15:24 lost+found
数据都被创建了副本,案例完成