一种分布式存储系统中TGT稳定性优化方法转让专利

申请号 : CN201710453948.6

文献号 : CN107277131B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张朝潞

申请人 : 深圳市云舒网络技术有限公司

摘要 :

本发明公开了一种分布式存储系统中TGT稳定性优化方法,所述优化方法应用于分布式存储系统或单机存储使用,其特征在于,该优化方法是使用TGT对外提供iSCSI Target服务时,通过多进程与模块拆分方式,解决单机内TGT形成单点故障的问题,增加故障隔离性,极大地减少了故障影响范围,将系统稳定性大幅度提升;用户态进程在操作系统实现了资源隔离与抽象,用户态进程之间可以做到完全隔离,互不影响,利用进程隔离性,将TGT服务更加细粒度化,更加可控,更小的影响范围。

权利要求 :

1.一种分布式存储系统中TGT稳定性优化方法,所述优化方法应用于分布式存储系统或单机存储使用,其特征在于:所述优化方法包括分布式iSCSI存储系统,该分布式iSCSI存储系统包括:应用主机:该应用主机是应用程序运行的主机,当应用程序需要使用外部存储时,通过iSCSI initiator将控制主机提供的iSCSI Target中的LUN映射到本主机上,应用程序就像使用本地磁盘一样,使用iSCSI卷;

控制主机:生成iSCSI Target,完成后端存储资源抽象,将后端存储资源通过iSCSI提供存储服务,实现数据通道,IOPS限制,网络RAID,纠删码特性实现;TGT是一个iSCSI Target框架,具体的数据存储由Backend模块实现,通过自定义实现Backend模块,来适配不同的后端存储系统;

存储主机:分布式存储系统中,数据最终的存放地点,将存储资源抽象成多个存储组件;

所述优化方法还包括多进程和共享内存方法,所述多进程和共享内存方法是在TGTD进程外部,设置一片共享内存区域和一个MicroController模块,共享内存区域用于传递数据,由MicroController模块完成数据传输和功能特性的具体实现,具体实施步骤如下:步骤①:在控制主机中规划存储资源,每个存储资源对应一个TGTD进程、一个TGTD进程只包含一个Target和一个LUN;

步骤②:应用主机通过网络发现Target和LUN,根据需求应用主机选择所需的LUN完成登录过程;于是便将LUN映射为应用主机的虚拟块设备;

步骤③:应用主机上的程序使用虚拟块设备,数据通过网络传递TGTD进程,TGT框架将iSCSI协议格式的数据处理后,以SCSI命令格式传递到Backend模块;Backend模块处理后,将数据封装成请求存放到共享内存区域,并通知MicroController模块有新数据到来;

步骤④:MicroController模块收到有新数据到来的通知后,从共享内存区域取出相应的请求,经请求经过处理后通过网络将数据落地到存储主机中。

说明书 :

一种分布式存储系统中TGT稳定性优化方法

技术领域

[0001] 本发明涉及数据存储技术领域,具体的说是涉及一种分布式存储系统中TGT稳定性优化方法。

背景技术

[0002] iSCSI:Internet Small Computer System Interface,是一种基于 TCP/IP的存储协议,用来建立和管理 IP 存储设备、主机和客户机等之间的相互连接,并创建存储区域网络(SAN)。SAN 使得 SCSI 协议应用于高速数据传输网络成为可能,这种传输以数据块级别(block-level)在多个数据存储网络间进行。iSCSI架构是CS模型,Client端为iSCSI initiator,Server端为iSCSI Target。
[0003] TGT是GNU/Linux操作系统上,一款全用户态的开源的iSCSI Target。由于其全用户态实现和框架式的软件架构,可以轻易修改或增加Backend模块,以实现各种后端存储系统的访问。

发明内容

[0004] 针对现有技术中的不足,本发明要解决的技术问题在于提供了一种分布式存储系统中TGT稳定性优化方法。
[0005] 为解决上述技术问题,本发明通过以下方案来实现:一种分布式存储系统中TGT稳定性优化方法,所述优化方法应用于分布式存储系统或单机存储使用,其特征在于,该优化方法是使用TGT对外提供iSCSI Target服务时,通过多进程与模块拆分方式,解决单机内TGT形成单点故障的问题,增加故障隔离性,极大地减少了故障影响范围,将系统稳定性大幅度提升;
[0006] 用户态进程在操作系统实现了资源隔离与抽象,用户态进程之间可以做到完全隔离,互不影响,利用进程隔离性,将TGT服务更加细粒度化,更加可控,更小的影响范围;
[0007] 所述优化方法包括分布式iSCSI存储系统,该分布式iSCSI存储系统包括:
[0008] 应用主机:该应用主机是应用程序运行的主机,当应用程序需要使用外部存储时,通过iSCSI initiator将控制主机提供的iSCSI Target中的LUN映射到本主机上,应用程序就像使用本地磁盘一样,使用iSCSI卷;
[0009] 控制主机:生成iSCSI Target,完成后端存储资源抽象,将后端存储资源通过iSCSI提供存储服务,实现数据通道,IOPS限制,网络RAID,纠删码特性实现;TGT是一个iSCSI Target框架,具体的数据存储由Backend实现,通过自定义实现Backend,来适配不同的后端存储系统;
[0010] 存储主机:分布式存储系统中,数据最终的存放地点,将存储资源抽象成多个存储组件;
[0011] 所述优化方法还包括多进程和共享内存方法,所述多进程和共享内存方法是在TGTD进程外部,设置一片共享内存区域和一个MicroController模块,共享内存区域用于传递数据,由MicroController完成数据传输和功能特性的具体实现,具体实施步骤如下:
[0012] 步骤①:在控制主机中规划存储资源,每个存储资源对应一个TGTD进程、一个TGTD进程只包含一个Target和一个LUN;
[0013] 步骤②:应用主机通过网络发现Target和LUN,根据需求应用主机选择所需的LUN完成登录过程;于是便将LUN映射为应用主机的虚拟块设备;
[0014] 步骤③:应用主机上的程序使用虚拟块设备,数据通过网络传递TGTD进程,TGT框架将iSCSI协议格式的数据处理后,以SCSI命令格式传递到Backend模块;Backend模块处理后,将数据封装成请求存放到共享内存区域,并通知MicroController有新数据到来;
[0015] 步骤④:MicroController收到有新数据到来的通知后,从共享内存区域取出相应的请求,经请求经过处理后通过网络将数据落地到存储主机中。
[0016] 相对于现有技术,本发明的有益效果是:本发明的布式存储系统中TGT稳定性优化方法在分布式存储系统中使用,也可以作为单机存储使用。可以将后端存储系统,网络,本机的各种异常引起的故障的波及范围控制在单个LUN中,不会扩散,极大地提高了系统稳定性。

附图说明

[0017] 图1是本发明的分布式iSCSI存储系统架构图;
[0018] 图2是本发明的多进程方式改进结构图;
[0019] 图3是本发明的多进程和共享内存方式改进结构图。

具体实施方式

[0020] 下面结合附图对本发明的优选实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
[0021] 请参照附图3,本发明的一种分布式存储系统中TGT稳定性优化方法,所述优化方法应用于分布式存储系统或单机存储使用,该优化方法是使用TGT对外提供iSCSI Target服务时,通过多进程与模块拆分方式,解决单机内TGT形成单点故障的问题,增加故障隔离性,极大地减少了故障影响范围,将系统稳定性大幅度提升;
[0022] 用户态进程在操作系统实现了资源隔离与抽象,用户态进程之间可以做到完全隔离,互不影响,利用进程隔离性,将TGT服务更加细粒度化,更加可控,更小的影响范围;
[0023] 所述优化方法包括分布式iSCSI存储系统,该分布式iSCSI存储系统包括:
[0024] 应用主机:该应用主机是应用程序运行的主机,当应用程序需要使用外部存储时,通过iSCSI initiator将控制主机提供的iSCSI Target中的LUN映射到本主机上,应用程序就像使用本地磁盘一样,使用iSCSI卷;
[0025] 控制主机:生成iSCSI Target,完成后端存储资源抽象,将后端存储资源通过iSCSI提供存储服务,实现数据通道,IOPS限制,网络RAID,纠删码特性实现;TGT是一个iSCSI Target框架,具体的数据存储由Backend实现,通过自定义实现Backend,来适配不同的后端存储系统;
[0026] 存储主机:分布式存储系统中,数据最终的存放地点,将存储资源抽象成多个存储组件;
[0027] 图1中,有两个应用主机,分别映射一个iSCSI存储资源,由于TGT设计为单进程多线程模型,Backend由一组线程来完成数据处理。在图1中,是通常的iSCSI使用方式,这里有两个风险点将影响系统稳定性:
[0028] ① 所有iSCSI initiator连接到同一个TGTD进程,由这个TGTD进程负责本控制主机所有Target和LUN。可以看出TGTD进程存在单点的问题,只要其中一个Backend程序导致TGTD进程coredump,整个控制主机所有的Target和LUN都会受到影响。
[0029] ② 上述提到过Backend程序需要完成大量的逻辑,如实现数据通道,IOPS限制,网络RAID,纠删码特性,Cache,网络异常处理等,大量的代码加入到TGT的框架中,会为TGT引入大量Bug。
[0030] 为了解决上述两个影响稳定性的问题,本发明提出两点改进:
[0031] ① TGTD完成多进程。
[0032] ② 将大量逻辑代码从Backend中剥离,由外部独立的进程完成。
[0033] 如图2所示,为本发明的多进程方式改进结构图。将图1中的单进程TGTD,改成多进程TGTD,每个TGTD进程维护一个Target/LUN。应用主机中的每个iSCSI卷都连接到单独的TGTD进程上,如果Backend程序的异常,由于TGTD是纯用户态的进程,只会影响单个TGTD进程,其他Target和LUN将完全不受影响。严格控制故障异常影响范围,对于整个系统来说,是大幅度提高了稳定性。在软件工程中,代码量越少,架构越简单,bug数量将越少,系统更稳定。为了将访问后端存储、各种高级功能特性等代码从TGT剥离,增强TGT的稳定性。
[0034] 如图3所示,所述优化方法还包括多进程和共享内存方法,所述多进程和共享内存方法是在TGTD进程外部,设置一片共享内存区域和一个MicroController模块,共享内存区域用于传递数据,由MicroController完成数据传输和功能特性的具体实现,具体实施步骤如下:
[0035] 步骤①:在控制主机中规划存储资源,每个存储资源对应一个TGTD进程、一个TGTD进程只包含一个Target和一个LUN;
[0036] 步骤②:应用主机通过网络发现Target和LUN,根据需求应用主机选择所需的LUN完成登录过程;于是便将LUN映射为应用主机的虚拟块设备;
[0037] 步骤③:应用主机上的程序使用虚拟块设备,数据通过网络传递TGTD进程,TGT框架将iSCSI协议格式的数据处理后,以SCSI命令格式传递到Backend模块;Backend模块处理后,将数据封装成请求存放到共享内存区域,并通知MicroController有新数据到来;
[0038] 步骤④:MicroController收到有新数据到来的通知后,从共享内存区域取出相应的请求,经请求经过处理后通过网络将数据落地到存储主机中。
[0039] 以上所述仅为本发明的优选实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。