本发明涉及分布式存储技术领域,尤其是一种分布式块存储卷性能统计的实现方法及系统。
背景技术:
分布式存储系统采用可扩展的架构,利用存储节点分担存储负荷,不但提高了系统的可靠性、可用性和存取效率,还更易于扩展。因此,在大数据时代,分布式存储被广泛使用。
在分布式块存储中,卷(通常也称之为盘或者分区)是我们使用的对于文件管理的基本容器单位。在传统的san(storageareanetwork)存储中,主控一般为2个,互为主备模式,存储卷信息统计采用静态变量即可解决。但是在分布式存储中,因存储节点为集群运行,提供的卷在多个节点中都可访问,故使用静态变量已无法准确统计存储卷性能。
技术实现要素:
本发明的目的是提供一种分布式块存储卷性能统计的实现方法及系统,可准确统计每个存储卷的iops、带宽、延时等信息,并显著降低对内存、cpu的资源消耗。
为实现上述目的,本发明采用下述技术方案:
一种分布式块存储卷性能统计的实现方法,包括以下步骤:
在读写io的线程/进程中,对多个存储卷进行共享内存映射;
将存储卷的性能统计数据写入分布式存储集群的对应元数据信息;
使用存储卷信息查看命令查看存储卷的性能统计信息。
进一步地,所述在读写io的线程/进程中,对多个存储卷进行共享内存映射,包括:
检测内存卷的内存映射文件是否存在,如果存在,转入下一步骤;如果不存在,创建该内存卷对应的内存映射文件;
针对每个内存卷的读写io进行内存映射,并获取性能统计数据。
进一步地,所述内存卷的内存映射文件的命名格式为“存储池名称”+“/”+“卷名称”。
进一步地,所述获取性能统计数据包括,根据记录的时间戳,对记录的iops值和带宽值置0,记录1秒的时间间隔内的iops和带宽值。
进一步地,所述将存储卷的性能统计数据写入分布式存储集群的对应元数据信息,包括,每秒的处理时间间隔上,把iops值和带宽值写入分布式存储集群的该卷元数据信息中。
进一步地,所述将存储卷的性能统计数据写入分布式存储集群的对应元数据信息,包括,将存储卷的性能统计信息追加写入分布式存储池内部该存储卷对应的元数据信息中。
一种分布式块存储卷性能统计系统,包括分布式存储集群,由若干个分布式存储节点构成;
分布式存储池,由分布式存储集群抽象的数据组织单元;
存储卷,分布式存储池存储空间的组织单元。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本发明提出一种分布式块存储的卷性能统计的实现方案,采用linux系统的systemv共享内存,使多个线程、多个进程全部可访问存储卷的统计信息,同时每秒把计算出的iops、带宽、延时等性能统计信息存放到分布式存储池的卷数据信息对应的对象中。通过采用systemv共享内存解决多线程、多进程对同一个卷的访问问题,然后使用分布式数据池存放统计数据,在减少系统资源消耗的同时,准确统计出每个存储卷的性能数据。使用该方案可准确统计每个存储卷的iops、带宽、延时等信息,并显著降低对内存、cpu的资源消耗。
附图说明
图1是本发明分布式存储卷信息统计架构示意图;
图2是本发明分布式存储卷性能统计的实现示意图;
图3是本发明分布式块存储卷性能统计的实现方法流程图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
如图1所示,设计合理的分布式块存储的卷信息统计架构,在多个存储节点组成的分布式存储集群抽象出若干个分布式存储池进行数据组织,一个分布式存储集群可以构建多个分布式存储池,存储卷是存储池的一种存户空间组织架构。
如图2所示,采用linux系统的systemv共享内存,使多个线程、多个进程全部可访问存储卷的统计信息,同时每秒把计算出的iops、带宽、延时等性能统计信息存放到分布式存储池的卷数据信息对应的对象中。
在多个存储卷的数据读写进程或线程中,存储卷共享内存映射到kernel,主要是为了解决在同一个存储节点中,多个读写进程同时读写一个存储卷时进程统计信息不能共享的问题。
内存映射是解决单节点的多进程问题,写入存储集群的元数据信息是为了解决分布式存储集群中存储节点的统计信息共享问题。通过使用存储卷信息查看命令,在任意存储节点查看存储卷的性能统计信息。
如图3所示,一种分布式块存储卷性能统计的实现方法,包括以下步骤:
s1、在读写io的线程/进程中,对多个存储卷进行共享内存映射;
s2、将存储卷的性能统计数据写入分布式存储集群的对应元数据信息;
s3、使用存储卷信息查看命令查看存储卷的性能统计信息。
步骤s1中,在读写io的线程/进程中,对多个存储卷进行共享内存映射,包括:
s11、检测内存卷的内存映射文件是否存在,如果存在,转入下一步骤;如果不存在,创建该内存卷对应的内存映射文件;内存卷的内存映射文件的命名格式为“存储池名称”+“/”+“卷名称”。
s12、针对每个内存卷的读写io进行内存映射,并获取性能统计数据。获取性能统计数据包括,根据记录的时间戳,对记录的iops值和带宽值置0,记录1秒的时间间隔内的iops和带宽值。
步骤s2中,将存储卷的性能统计数据写入分布式存储集群的对应元数据信息,将存储卷的性能统计信息追加写入分布式存储池内部该存储卷对应的元数据信息中。包括,每秒的处理时间间隔上,把iops值和带宽值写入分布式存储集群的该卷元数据信息中。存储卷本身在存储池中就保存了一份自己的元数据信息,这个修改只是在元数据信息中追加元数据信息,具体底层设计是通过k/v的键值对保存,相当于存入数据库一样。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。