通过GlusterFS黏合多节点SSD剩余空间

2023-11-20 12:41

本文主要是介绍通过GlusterFS黏合多节点SSD剩余空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

固态盘(SSD)的速度比机械硬盘快很多(400MB/s~1.7GB/s),但是价格昂贵,所以往往容量比较小。通过GlusterFS可以把多节点SSD黏合为一块大的网络SSD,可以在局域网上任意节点上连接使用,从而更方便使用,大幅度提高SSD的使用效率,提升系统速度、降低总体成本。

  • 建议使用多口的万兆网络,否则网络会成为GlusterFS传输的瓶颈。
  • 带宽计算参考:一般带宽使用bps计算,标称带宽*80%/8为以Byte计算的带宽。
    • 如10Gbps网络,实际传输速度大概为1GB/s。
    • Intel 760P写入速度大概1.4GB/s,Samsung 960P写入速度大约1.7GB/s。
    • 同一个盘同时读写,速度至少减半。

这里使用的系统为Ubuntu18.04.1 LTS版本,下面是对实验过程的一些记录。

1、安装支持软件

安装软件:

#安装ZFS系统
sudo apt install zfsutils-linux#安装GlusterFS系统
sudo apt install glusterfs-server

在所有节点上安装上面的软件,也可以通过ansible来批量完成。

每个节点创建好zfs的存储池zpool,如:sudo zpool create zpool /dev/sda /dev/sdb /dev/sdc,更多的设置模式参见:

  • ZFS的配置参见 ZFS快速安装和性能测试 。

然后在每个节点上添加存储的对端节点,如下(假设操作服务器为server1):

gluster peer probe server2
gluster peer probe server3

然后,确认一下设置是否成功:

gluster peer status
  • GlusterFS的配置参见 安装 GlusterFS - 快速开始 。

2、创建三种GlusterFS卷

主要创建分布式卷、条带卷、副本卷三种进行测试。

  • 分布式卷,将不同文件分别放到不同的节点文件夹中,可以获得一个虚拟的“大”硬盘。
    • 比如,我这三个节点分别有2T、2T、1T的空间,最后可以得到5T的GlusterFS虚拟卷。
    • 对单个文件的读写是由单节点完成,性能受制于该选中节点的最大速度。
    • 节点之间没有镜像等容错,建议节点内设置RAID1/5等容错机制。
  • 条带卷,将同一个文件分带存放到不同节点文件夹,容量加合可以获得“大”硬盘,可以并行地对条带读写,适合大文件。
  • 副本卷,将同一个文件在多个节点上复制,可以提升可靠性和读取性能,写入性能比单节点略有降低。
  • 还有一些其它的的卷类型(比如副本+条带),这里暂不做测试。

脚本命令如下:

echo "创建分布式卷gvx"
gluster volume create gvx \
server1:/home/supermap/gvx \
server2:/home/supermap/gvx \
server3:/home/supermap/gvxecho "创建条带卷gvxs"
gluster volume create gvxs strip 3 \
server1:/home/supermap/gvxs \
server2:/home/supermap/gvxs \
server3:/home/supermap/gvxsecho "创建分布式卷gvxr"
gluster volume create gvx0 replica 3 \
server1:/home/supermap/gvx \
server2:/home/supermap/gvx \
server3:/home/supermap/gvxecho "启动卷gvx gvxs gvxr"
gluster volume start gvx gvxs gvxrecho "当前Gluster的卷信息:"
gluster volume info

3、挂载GlusterFS卷

可以从任意一个节点挂载GlusterFS网络卷。如下:

echo "挂载分布式卷/home/supermap/gvxv"
mkdir /home/supermap/gvxv
mount -t glusterfs server1:/gvx /home/supermap/gvxvecho "挂载条带卷/home/supermap/gvxsv"
mkdir /home/supermap/gvxsv
mount -t glusterfs server1:/gvxs /home/supermap/gvxsvecho "挂载副本卷/home/supermap/gvxrv"
mkdir /home/supermap/gvxrv
mount -t glusterfs server1:/gvxr /home/supermap/gvxrv

使用命令 ls -l 查看目录信息,df -h查看挂载卷的信息。

  • 注意:显示的每个卷容量是共享的最大容量,系统并没有所显示的加和总容量。

4、性能简单测试

使用dd进行简单的测试,如下:

echo "=============================================="
echo "测试分布式SSD,基于GlusterFS。"echo "================="
echo "测试分布式卷gvxv"
echo "写入:"
sudo dd if=/dev/zero of=/home/supermap/gvxv/testx.img bs=1M count=20480
echo "复制:"
sudo dd if=/home/supermap/gvxv/testx.img of=/home/supermap/gvxv/testx2.img bs=1M count=20480
echo "读取:"
sudo dd if=/home/supermap/gvxv/testx2.img of=/dev/null bs=1M count=20480echo "================="
echo "测试条带卷gvxsv"
echo "写入:"
sudo dd if=/dev/zero of=/home/supermap/gvxsv/testx.img bs=1M count=20480
echo "复制:"
sudo dd if=/home/supermap/gvxsv/testx.img of=/home/supermap/gvxsv/testx2.img bs=1M count=20480
echo "读取:"
sudo dd if=/home/supermap/gvxsv/testx2.img of=/dev/null bs=1M count=20480echo "================="
echo "测试复本卷gvxrv"
echo "写入:"
sudo dd if=/dev/zero of=/home/supermap/gvxrv/testx.img bs=1M count=20480
echo "复制:"
sudo dd if=/home/supermap/gvxrv/testx.img of=/home/supermap/gvxrv/testx2.img bs=1M count=20480
echo "读取:"
sudo dd if=/home/supermap/gvxrv/testx2.img of=/dev/null bs=1M count=20480echo "=============================================="
echo "Finished, by openthings"
echo "=============================================="

更细节的测试,可以使用pts,具体方法参见 Ubuntu测试-使用phoronix-test-suite 。

上面的方法也适用于其它磁盘,包括通过USB连接的外置磁盘盒。

  • 对于机械硬盘建议使用ZFS或RAID工具建立条带或冗余机制,以加快性能和提升容错能力。

 

转载于:https://my.oschina.net/u/2306127/blog/2876340

这篇关于通过GlusterFS黏合多节点SSD剩余空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/394688

相关文章

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA