目录
4. 分布式条带卷(Distributed Striped Volume):
5. 分布式复制卷(Distributed Replicated Volume):
GlusterFS 的特点:
-
分布式存储:GlusterFS 将多个存储服务器汇聚成一个统一的存储池,用户无需关心具体的存储节点,访问时就像访问本地文件系统一样简单。
-
横向扩展:通过添加更多的存储节点,可以轻松地扩展 GlusterFS 的存储容量和性能。
-
高可用性:GlusterFS 提供了多种复制和条带化(striping)策略,确保数据在多个节点之间的冗余备份,提高了数据的可靠性和可用性。
-
统一命名空间:无论数据存储在哪个节点上,用户都可以通过统一的命名空间访问数据,使得管理和使用更加简单。
-
透明性:对于用户来说,GlusterFS 是透明的,他们只需要像使用本地文件系统一样使用 GlusterFS,不需要关心底层的存储节点和数据分布。
架构和组件:
-
Brick:在 GlusterFS 中,每个存储节点被称为一个 Brick。Brick 是 GlusterFS 中的最小存储单元,可以是一个独立的硬盘、一个目录,甚至是一个逻辑卷(LVM)。
-
Volume:Volume 是由多个 Brick 组合而成的逻辑存储单元,用户操作的就是 Volume。Volume 可以是分布式的、条带化的、复制的或者是这些策略的组合。
-
Translator:GlusterFS 使用 Translator 来处理数据和元数据。例如,文件系统模块(FUSE)、存储模块(Brick)、复制模块(Replicate)等都是 Translator 的例子。
-
客户端:GlusterFS 提供了多种客户端接口,包括 FUSE(Filesystem in Userspace)、NFS(Network File System)和 CIFS(Common Internet File System)等。
使用 GlusterFS 的步骤:
-
安装:在每个节点上安装 GlusterFS,并确保节点间可以相互访问。
-
创建 Volume:使用
gluster volume create
命令创建一个新的 Volume,并指定 Brick 的路径、复制策略等。 -
启动 Volume:使用
gluster volume start
命令启动 Volume,使其生效。 -
挂载 Volume:在客户端系统上使用
mount
命令将 GlusterFS Volume 挂载到本地文件系统。 -
使用:现在可以像使用本地文件系统一样使用 GlusterFS 了。可以在 Volume 上创建、读取、写入文件。
在GlusterFS(GFS)中,有几种不同类型的卷,每种类型都有不同的特点和适用场景。以下是对GlusterFS中常见卷类型的详细解释:
1. 分布式卷(Distributed Volume):
-
特点:
- 分布式卷将文件分布在多个存储服务器(Brick)上,以实现数据的水平扩展。
- 读写操作会均匀分布在各个Brick上,从而提高性能。
- 没有数据复制,因此不提供数据冗余和高可用性。
-
适用场景:
- 用于需要大容量存储、高性能的场景,如存储大型媒体文件、日志文件等。
- 不适合需要数据冗余和高可用性的场景,因为数据只存储在一个Brick上。
2. 条带卷(Striped Volume):
-
特点:
- 条带卷将文件分成固定大小的块,然后将这些块分布在多个Brick上。
- 读写操作被分散到各个Brick上,以提高性能。
- 与分布式卷不同的是,条带卷会将文件切分成块,然后分散存储,而不是整个文件存储在一个Brick上。
-
适用场景:
- 用于需要高性能、大文件存储的场景,如大型科学计算、大型数据库等。
- 也不提供数据冗余和高可用性,因为数据仍然只存储在一个Brick上的不同块中。
3. 复制卷(Replicated Volume):
-
特点:
- 复制卷会在多个Brick之间复制数据,以提供数据冗余和高可用性。
- 数据会在多个Brick上保持同步,如果一个Brick失效,数据仍然可以从其他Brick访问。
- 读操作可以在任何Brick上完成,但写操作会同时写入所有复制的Brick,因此写性能可能有所下降。
-
适用场景:
- 用于需要数据冗余和高可用性的场景,如重要的生产数据、数据库等。
- 对读操作性能要求不那么高的场景,因为写操作会涉及到多个Brick的同步写入。
4. 分布式条带卷(Distributed Striped Volume):
-
特点:
- 分布式条带卷是分布式卷和条带卷的结合,它将文件切分成块,并将这些块分布在多个Brick上。
- 读写操作会在多个Brick上进行,以提高性能。
- 没有数据复制,因此不提供数据冗余和高可用性。
-
适用场景:
- 用于需要高性能、大容量存储的场景,如大型媒体文件、日志文件等。
- 不适合需要数据冗余和高可用性的场景,因为数据只存储在一个Brick上的不同块中。
5. 分布式复制卷(Distributed Replicated Volume):
-
特点:
- 分布式复制卷结合了分布式卷和复制卷的特点,它将文件复制到多个Brick上以提供数据冗余和高可用性,并且将这些文件在多个Brick上分布以提高性能。
- 数据会在多个Brick之间复制,并且在多个Brick上分布,因此具有高可用性和高性能的特点。
- 读写操作可以在任何Brick上完成,写操作会同时写入所有复制的Brick。
-
适用场景:
- 用于需要高性能、高可用性和数据冗余的重要数据存储,如生产数据、数据库等。
- 读写操作性能要求较高的场景,因为数据会在多个Brick上并行操作,同时具有数据冗余和高可用性。
实验举例
以四台服务器各自配置raid5,gfs配置分布式复制卷举例
1、四台服务器各自新增硬盘并配置raid5
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mkfs.xfs /dev/md0
mkdir -p /data/raid5
mount /dev/md0 /data/raid5/
修改四台服务器的主机名
hostnamectl set-hostname node1
添加hosts文件
echo "192.168.1.11 node1" >> /etc/hosts
echo "192.168.1.22 node2" >> /etc/hosts
echo "192.168.1.33 node3" >> /etc/hosts
echo "192.168.1.44 node4" >> /etc/hosts
在任意节点添加其他节点并查看节点状态
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status
创建分布式复制卷并启动
gluster volume create dis-rep replica 2 node1:/data/raid5 node2:/data/raid5 node3:/data/raid5 node4:/data/raid5 force
gluster volume start dis-rep
gluster volume info dis-rep
这条命令用于在 GlusterFS 中创建一个分布式复制卷(Distributed Replicated Volume),命名为 dis-rep
,它包含了两个复制(replica)和四个存储服务器(Brick)。每个存储服务器都位于不同的节点上,路径分别为 node1:/data/raid5
、node2:/data/raid5
、node3:/data/raid5
和 node4:/data/raid5
。
在客户端添加hosts文件
在客户端创建挂载点并将gfs文件系统挂载
mkdir /gfs
mount.glusterfs node1:dis-rep /gfs
创建多个文件以验证分布式复制卷
dd if=/dev/zero of=/gfs/demo1.log bs=1M count=40
dd if=/dev/zero of=/gfs/demo2.log bs=1M count=40
dd if=/dev/zero of=/gfs/demo3.log bs=1M count=40
dd if=/dev/zero of=/gfs/demo4.log bs=1M count=40
dd if=/dev/zero of=/gfs/demo5.log bs=1M count=40
查看四台服务器文件分布情况
关闭其中一台后从客户端验证是否可以正常访问
在其中一台服务器掉线的情况下从客户端创建多个文件
恢复掉线的服务器查看是否自动复制文件
通过查看四台服务器和客户端存储空间可以发现,当创建分布式复制卷,复制(replica)的数量为2时,可用空间为总容量的一半。
总结:
- GlusterFS提供了多种类型的卷,每种类型都有不同的特点和适用场景。
- 选择合适的卷类型取决于数据的重要性、读写性能要求和可用性需求。
- 分布式卷适合大容量存储和高性能需求,但不提供数据冗余和高可用性。
- 复制卷适合需要数据冗余和高可用性的场景,但写性能可能会下降。
- 分布式复制卷结合了两者的优点,提供高性能、高可用性和数据冗余。
- 条带卷和分布式条带卷适合大文件存储和高性能需求,但不提供数据冗余和高可用性,这两种类型在新版本都已取消不再使用。