CN1254748C - 存储区域网络中分布式虚拟化存储的方法 - Google Patents
存储区域网络中分布式虚拟化存储的方法 Download PDFInfo
- Publication number
- CN1254748C CN1254748C CNB2003101030449A CN200310103044A CN1254748C CN 1254748 C CN1254748 C CN 1254748C CN B2003101030449 A CNB2003101030449 A CN B2003101030449A CN 200310103044 A CN200310103044 A CN 200310103044A CN 1254748 C CN1254748 C CN 1254748C
- Authority
- CN
- China
- Prior art keywords
- module
- metadata
- kernel
- network
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000001360 synchronised effect Effects 0.000 claims abstract description 29
- 230000006870 function Effects 0.000 claims description 63
- 238000012986 modification Methods 0.000 claims description 8
- 230000004048 modification Effects 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 7
- 230000037430 deletion Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 5
- 239000013307 optical fiber Substances 0.000 claims description 5
- 238000012545 processing Methods 0.000 claims description 4
- 230000000712 assembly Effects 0.000 claims description 3
- 238000000429 assembly Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000011800 void material Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
存储区域网络中分布式虚拟化存储的方法属于虚拟化存储技术的领域,其特征在于:基于存储区域网络的虚拟化网络存储系统,系统的内核模块将文件系统的I/O请求操作地址映射到适当的网络磁盘内,实现虚拟化存储的功能,同时用以太网向机群系统中的其它节点提交内核元数据进行同步操作的请求后,在管理节点机中的中央控制和管理模块统一控制,对其中的元数据作相应的操作,并把操作结果加入到内核模块中的元数据表中去,使得机群系统所有节点的虚拟存储元数据保持一致,提供一个统一格式的网络存储资源视图,以实现分布式虚拟化存储系统。
Description
技术领域
存储区域网络中分布式虚拟化存储的实现方法属于存储区域网络领域,尤其涉及其中的虚拟化存储技术领域。
背景技术
存储区域网络(Storage Area Networks:SAN)技术是专门针对计算机存储领域的技术,具有高可靠性(High Reliability)、可延伸性(Extendibility)和高性能性(High Performance)等特点。虚拟化存储系统是在实际的物理存储设备基础上,虚拟出逻辑磁盘设备供文件系统使用,它被认为是可以简化管理大型、复杂、异构的存储环境的技术,它具有存储资源控制灵活,能够动态更改存储资源和数据镜像等功能。
但是目前的虚拟化存储系统只有单机版本,不能适应于分布式机群环境系统。Sistina公司发布了LVM(Logical Volume Manager)作为Linux操作系统内核的一部分,目前还不支持分布式环境下的虚拟化存储。这给应用范围很广泛的机群系统实现虚拟化存储的功能提出了困难,本发明拟解决该问题。
本发明实现了分布式环境下的虚拟化存储,是针对SAN环境下的分布式系统(机群系统,cluster)实现虚拟化存储。
发明内容
本发明的目的在于提供一种在SAN环境下实现分布式虚拟化存储系统的方法。采用本方法可以在分布式系统上实现统一的存储资源的动态管理,更加有效的利用网络存储资源。本方法的核心是在单机虚拟化系统基础上,设计同步各个节点机之间的虚拟化系统元数据的方法,保持内核元数据与磁盘元数据的一致性;同时通过设定管理节点,统一管理分布式虚拟存储系统的虚拟化操作和行为,提供给每个节点机上的文件系统一个统一一致的虚拟化存储视图实现基于机群系统的统一管理模块、元数据模块和控制管理平台的虚拟化存储。
本发明的特征在于:基于由分布式节点机群和其中任意指定的一台管理机、网络磁盘和光纤交换机且按网络存储系统组成的分布式集群网络存储系统,管理控制台提供给用户Telnet登陆服务进行分布式虚拟化存储系统的管理功能,向管理节点机中的中央控制和管理模块提交功能性的或者对分布式机群中的作为实际的逻辑设备文件系统使用的逻辑磁盘LV、逻辑磁盘卷集合VG内的内核元数据进行相应的操作请求;在单机虚拟化系统基础上,设计同步各个节点机之间的虚拟化系统元数据的方法,保持内核元数据与磁盘元数据的一致性;同时通过设定管理节点,统一管理分布式虚拟存储系统的虚拟化操作和行为,提供给每个节点机上的文件系统一个统一一致的虚拟化存储视图实现基于机群系统的统一管理模块、元数据模块和控制管理平台的虚拟化存储;所述方法依次含有以下步骤:
(1)设置模块结构:
在管理节点机中设置中央控制与管理模块、简称管理配置模块的分布式虚拟化系统管理配置模块、简称同步模块的元数据同步模块以及内核模块;在各分布式节点机内设置分别与上述同步模块、管理配置模块和内核模块内容相同的同名的模块;其中
(1.1)中央控制和管理模块:
控制网络上所有存储资源:该模块在启动时通过读配置文件和查询网络磁盘得到节点配置信息,生成内含节点序号信息、LV信息和VG信息的节点信息表,也称资源信息表;
为用户进行以下操作提供接口:
对逻辑磁盘LV的操作、块文件LV的创建或删除、LV容量的增加和减少;
对逻辑磁盘卷集合VG的操作:查询信息;
对网络磁盘即物理磁盘PV的操作:查询PV内的相应于逻辑磁盘卷的元数据VGDA;
向管理配置模块提供发送和接收的两个接口;
通过内核模块提供的IOCTL函数接口,来控制内核模块执行相应的功能性操作;该函数的不同操作参数值对应于要对VG、LV执行的不同操作;
(1.2)内核模块
在截获中央控制和管理模块发出的所有对逻辑磁盘LV、逻辑磁盘卷集合VG的操作后,把传来的文件系统的I/O操作的逻辑空间地址映射到网络磁盘的实际物理地址,以实现虚拟化存储;
(1.3)元数据同步模块
在其分布式节点机对网络存储资源作虚拟化存储操作时,同步模块各节点的内核模块元数据和网络磁盘元数据保持一致;
同步模块向管理配置模块提供用于同步各分布式节点机内核模块元数据接口函数,记为sync_init_request;
同步模块向内核模块提供用于在某分布式节点机对网络存储资源进行虚拟化存储时,执行同步类型操作命令的接口函数,记为sync_do_request;
所述的同步操作包括VG数据同步和LV数据同步,而同步操作的数据分成两个部分:用户空间地址数据的修改和内核模块元数据的更新;
(1.4)分布式虚拟化存储管理配置模块
它分别设置发送接口函数Send(Host,Data)、接受接口函数Recv(Host,Data),提供给中央控制和管理模块、元数据同步模块和内核模块作通信用,其中Host是节点序号,用于标识节点;
(2)依次按以下步骤执行虚拟化存储:
(2.1)启动中央控制和管理模块,初始化,创建TCP监听线程;
(2.2)用户通过telnet登陆服务管理,向中央控制和管理模块发出操作请求;
(2.3)TCP线程收到用户广播请求后,为每一个用户创建一个TCP处理线程,并调用Tcp_request_dispatch函数;
(2.4)Tcp_request_dispatch函数判断操作命令类型后,对所述操作命令进行分类处理;
(2.5)若为信息查询命令,则查询本中央控制和管理模块的节点信息表,把查询结果经以太网返回用户;
(2.6)若为功能性操作命令,则通过管理配置模块直接调用内核模块的IOCTL接口函数,执行中央控制和管理模块制定的操作,把操作结果返回管理配置模块,再经中央控制和管理模块返回用户;同时,经管理配置模块由光纤交换机把修改后的VGDA的vg表送到各分布式节点机,相应地,把VG、LV的逻辑地址映射到网络磁盘,并按修改后的VGDA的vg表修改网络磁盘元数据;
(2.7)若为同步类型操作指令,则通过管理配置模块调用同步模块的接口函数,执行如下操作:
(2.7.1)先由接口函数sync_init_request区别消息类型,即同步操作的类型:VG同步还是LV同步,再分别调用不同的函数处理;
(2.7.2)在处理时,先从传过来的文件中,根据vg_name即VG名达到指向VG的指针,若为LV同步,则根据lv_name即LV名从VG表中得到指向LV的指针,然后,分别按照指针位置更新逻辑地址;
(2.7.3)同步内核数据:通过给内核模块发送IOCTL命令,完成对VGDA元数据的更新;
(2.7.4)对系统文件按VG和LV分别进行创建、删除、修改或更名的操作;
(2.7.5)从内核模块中读出VGDA元数据,通过接口函数sync_init_request向管理配置模块发送,同步地保持分布式虚拟化存储系统内核元数据和网络磁盘元数据的一致性。
本系统在清华大学计算机高性能研究所的TH-MSNS网络存储系统上进行了功能的有效性测试。在前端8个节点的机群上安装了分布式虚拟化存储系统,借助该系统实现机群环境下的网络存储资源虚拟化功能,提供了多个主机的统一存储,实现了虚拟存储池,即提供了磁盘空间的动态随意分配和修改逻辑磁盘大小的功能,同时提供了逻辑磁盘数据镜像和快照功能,充分验证了本发明的有效性。
附图说明
图1:分布式虚拟化存储系统原理示意图;
图2:分布式虚拟化存储系统结构示意图;
图3:分布式虚拟化存储系统软件结构图;
图4:逻辑磁盘卷集合VG的构成图;
图5:分布式虚拟化存储系统软件模块框图;
图6:中央控制和管理模块的程序流程图;
图7:本发明所述方法的程序流程框图;
图8:管理配置模块的状态转换图;
图9:内核模块LVM的内核结构图;
具体实现方式
本发明的具体应用的硬件平台是分布式集群网络存储环境,多个机群的服务器通过存储网络共享网络磁盘空间。节点机群和管理节点机都连接到以太网络上,通过IP网络进行数据通讯。具体的硬件连接环境如图1所示。
其中,分布式机群和管理节点机上均安装了光纤通道卡,通过光纤通道卡与光纤交换机相连,组成了存储光纤网络。网络磁盘阵列通过光纤网给分布式机群提供存储资源的服务。网络磁盘是通过I/O节点机挂载SCSI磁盘阵列来实现的,具体的硬件框图如图2所示。
机群系统的操作系统为Linux,内核版本为2.4.18以上。分布式虚拟化存储系统所在的I/O逻辑位置如图3所示。
如图4所示,PV(Physical Volume)是Linux LVM中最底层的单元,它是单个的设备或者分区。每个PV都包含该PV所属VG的VGDA(Volume Group Descriptor Area),它包含一些特殊的用于LVM配置的信息。在任何时间PV都能够加入已经存在的VG(Volume Group)中。一个VG可以看作一个很大的存储池,它包含一个或者多个LV(Logical Volume),而每个LV是作为实际的逻辑设备供文件系统使用。图4表示了PV,VG和LV之间的关系。LVM系统的核心思想是基于物理磁盘资源虚拟出逻辑磁盘,供文件系统使用。LVM依据配置情况适当修改文件系统发出的I/O请求命令的操作地址,将它从逻辑地址空间映射到物理地址空间后执行该操作。
以下结合图5,对本发明的方法作详尽描述。
用户通过操作界面可以发送虚拟化存储的配置操作给分布式虚拟化存储系统,用户登陆到管理节点机后,通过相应的操作指令来控制虚拟存储系统的运行。
用户可以执行的操作包括:
●LV对象操作(创建和删除,增加容量,减少容量);
●PV对象操作(查询PV的信息资料);
●VG的操作(查询的详细信息)。
中央控制和管理模块依据用户的数据输入产生操作指令字段,其结构定义如下:
typedef struct lvm_msg_tcp
{
int cmd_type;//COMMAND type
int cmd_index;//COMMAND index
int send_host_id;
int receive_host_id;
unsigned int length;
int ack;
void *data;//buffer pointer
}_attribute_((packed))lvm_msg_tcp_t;
其中,cmd_type用来表示操作的类型,cmd_index用来表示操作的指令,其他的指令域是一些附加的指令参数信息。
中央控制和管理模块控制着网络上的所有存储资源。它对网络存储资源和机群中的节点机进行统一的编号,例如san1,san2,host1,host2等等,所有这些都是该模块需要管理的基本单元,中央控制和管理模块在启动的时候通过读配置文件方式和通过查询(发送INQUIRY命令给网络磁盘)得到了这些信息。集群节点配置信息保存于/etc/clvm/node table,每次中央控制和管理模块启动时读入节点配置信息,并通过UDP广播以收集所有子节点状态信息,最终生成节点信息表,它的定义如下所示:
typedef struct node_table_entry //construct cluster_geometry
{
int status;//节点状态
struct in_addr addr;//节点inet地址
}_attribute_((packed))node_table_entry_t;
typedef struct
{
int node_nr;//节点数目
node_table_entry_t table[MAX_NODE_NR];
}_attribute_((packed))node_table_t;
extern node_table_t node_table;
对于中央控制和管理模块,得到操作指令字段之后一个典型的管理操作的流程如图6所述:
(1)信息的查询
一种用户发送的操作请求只是一些信息的查询,例如LV,VG信息的查询等,这部分操作中央控制和管理模块直接查询自己维护的信息表就可以得到操作的结果信息。在中央管理和控制模块中包含的信息资源表有:
机群节点信息表,也就是host信息表,一个简单的例子如表1所示;
表1 host信息表
节点序号 | 节点IP | 节点名称 |
1 | 192.168.0.1 | 服务节点1 |
2 | 192.168.0.2 | 服务节点2 |
3 | 192.168.0.3 | 服务节点3 |
LV信息列表,也就是逻辑卷信息表,一个简单的例子如表2所示:
表2 逻辑卷信息表
LV名称 | 所属VG | 所属节点 | 包含的网络磁盘 |
LV1 | VG1 | 2 | 磁盘1,磁盘4,磁盘5 |
LV2 | VG2 | 3 | 磁盘6,磁盘7 |
LV3 | VG3 | 2 | 磁盘2,磁盘3 |
VG信息列表,一个简单的例子如表3所示:
表3 VG信息列表
VG名称 | 包含的网络磁盘 |
VG1 | 磁盘1,磁盘4,磁盘5 |
VG2 | 磁盘6,磁盘7 |
VG3 | 磁盘2,磁盘3 |
如果用户操作是信息查询,那么中央控制和管理模块直接查询上述的数据之后返回结果信息给用户。
(2)功能配置,例如逻辑磁盘(LV)的容量增加与减少
分布式虚拟化存储系统中,内核里的LVM模块完成物理卷的虚拟功能;同步模块在各个节点机之间同步元数据使得每个节点机保持一致的视图;控制模块控制着整个系统的工作,它们是整个系统最核心的三个部分。图中的各个模块的功能分列于表1:
表4 分布式虚拟化存储系统软件模块列表
名称 | 功能 |
cLVM内核模块 | 映射转换I/O地址功能,实现核心的虚拟存储功能 |
管理和配置模块 | 对内核模块和同步模块进行一些管理和配置操作 |
同步模块 | 同步机群各个节点之间的存储元数据保持和网络磁盘一致 |
管理节点的中央控制和管理模块 | 控制协调整个分布式虚拟化存储系统的工作,提供用户操作的接口 |
如图9所示,内核功能维护着一张VGDA的列表:vg,每次创建VG都要把VG所对应的VGDA放入vg中,删除VG时则把相应的VGDA从表中删除。
VGDA结构中在内核源代码中是一个结构vg_t,其中两个域pv和lv类型分别是pv_t和lv_t的指针数组。这两个数组分别存放指向结构pv_t和lv_t的指针,指明构成该VG的PV和LV。
vg_t中的lv_cur和pv_cur则说明当前的LV数和PV数。
lv_t的lv_stripes域说明该LV映射的方法,如果lv_stripes<2说明是Linear映射,如果lv_stripes>=2则说明LV是striped映射并且映射到lv_stripes个PV上。Lv_stripesize则说明每一个stripe的大小,单位是sector。lv_t中的lv_current_pe则是一个pe_t指针的数组,说明了当前该LV所映射到的pe(physical extent)。
pv_t的pe域是pe_t指针的数组,指明该PV的pe。pv_on_disk、vg_on_disk和lv_on_disk是存放在该PV上的metadata。
内核功能模块截获Linux操作系统的所有磁盘I/O操作,通过I/O操作的逻辑空间地址到实际物理地址的转化来实现虚拟化功能。
内核模块提供给中央控制和管理模块的接口是IOCTL功能函数,不同的操作参数对应了不同的操作命令,这些接口函数的说明如下面表5所示:
表5 用户操作和IOCTL命令对应表
用户操作 | IOCTL命令 | 描述 |
Vgcreate | VG_CREATE | 创建一个新的Volume Group。 |
Vgremove | VG_REMOVE | 删除一个已存在的Volume Group。 |
Vgrename | VG_RENAME | 对一个已存在的Volume Group进行更名操作。 |
Vgextend | VG_EXTEND | 对一个已存在的Volume Group进行扩展。 |
Vgreduce | VG_REDUCE | 减少一个已存在的Volume Group的容量。 |
Vgmerge | VG_MERGE | 把两个Volume Group合并成一个Volume Group。 |
Vgsplit | VG_SPLIT | 把一个Volume Group划分成两个Volume Group。 |
Lvcreate | LV_CREATE | 创建一个Logical Volume。 |
Lvremove | LV_REMOVE | 删除一个已存在的Logical Volume。 |
Lvrename | LV_RENAME | 对一个LV重新命名 |
Lvresize | LV_RESIZE | 改变一个LV小 |
Lvextend | LV_EXTEND | 增加一个LV的大小 |
Lvreduce | LV_REDUCE | 减少一个LV的大小 |
IOCTL接口函数被调用后返回一个表示是否成功的值给中央控制和管理模块。中央控制和管理模块根据该值来确定操作的流程。
如果操作失败,则直接将失败结果返回给用户,如果操作成功,则调用同步模块进行分布式机群节点的元数据同步操作,将该操作的结果返回给用户。对于同步模块的调用接口和具体的元数据的实施方式,后面将给予说明。
机群中的节点机对网络存储资源进行虚拟化操作(例如针对某一个已经存在的逻辑卷进行扩容操作)时,需要对其他节点机的内核数据进行同步以保持它们与网络磁盘上的内容一致。同步模块的主要功能就是对内核元数据进行同步。
节点机之间的内核元数据同步操作包括VG元数据同步和LV元数据同步,而同步操作的工作成两个部分:
(1)用户空间数据的修改,包括改变存储磁盘的元数据、改变元数据备份文件和改变对应的设备文件等;
(2)内核空间信息的更新,即更新分布式虚拟化存储系统内核功能模块中的对象信息。
而具体需要同步的元数据即为VGDA信息模块,同步的功能就是从管理节点的内存中读出VGDA的信息,然后发送到其他的分布式机群节点机器的内存中,使得其他节点机器的内存数据和管理节点的内存数据保持一致性。
分布式虚拟化系统同步模块对外提供主要的接口和功能函数有:
void sync_init_request(int argc,char **argv,Cluster_Message *msg);
void sync_do_request(Cluster_Message *msg);
其中Cluster_Message结构是网络传输的数据格式协议。当机群系统的一个节点进行了虚拟化操作后,系统的管理和配置模块将调用同步模块的接口函数sync_init_request(char **argv,Cluster_Message *msg)填充msg结构并且广播到各个服务器节点进行同步操作。ClusterMessage的主要结构定义如下:
typedef struct MSG_cLVM{
int cmd_type;
int cmd_index;
int ack;
int send_host_id;
int receive_host_id;
unsigned int length;
void *data;
}Cluster_Message;
Cluster_Message中的cmd_type用于区分消息类型,对于同步操作消息,这个值被设置为LVM_SYNC_TYPE。而cmd_index被分布式虚拟化存储系统同步模块用于区分是何种操作,它的值相应的被设置为上表中的IOCTL命令。Data域是sync_info_t结构指针,提供LVM操作需要的相关信息。
Sync_info_t的结构如下:
typedef struct
{
char *command;
int num;
char *info[128];
}syn_info_t;
这个结构的command域即操作的名字,num为info域中的项数,info为与该操作相关的一些信息。
被同步机群服务器节点接到要求同步的Message后,同步模块提供的接口函数sync_do_request(Cluster_Message *msg)将被调用。Sync_do_request根据msg中的信息对分布式虚拟化存储系统的内核数据进行更新,更新的步骤流程如下:
(1)Sync_do_request首先区分同步操作的类型,请求是VG同步还是LV同步,前者则调用vg_sync(Cluster_Message *msg)进行处理,后者则调用lv_sync(Cluster_Message *msg)进行内核数据的同步操作;
(2)Vg_sync和lv_sync都首先从传过来vgda文件中根据vg_name得到指向Volume Group的指针vg(vg_cfgrestore函数)。如果是LV同步,则还需根据lv_name从vg中得到指向LogicalVolume的指针lv(lv_get_index_by_name函数);
(3)在得到vg和lv后,对vg->pv[p]->pv_dev和lv->lv_current_pe[le].dev进行更新,更新的过程通过查找DEV表完成(sync_update_dev函数),sync_update_dev从代理程序Agent中得到设备在本服务器节点上的Major和Minor号后对dev重新赋值。
(4)同步内核数据的操作。通过给内核发送IOCTL命令完成;利用Lvmlib库提供的相关的函数,如vg_create等,通过调用这些函数即可向LVM内核发送操作命令,把相关的vg或者lv传送到内核模块以对数据进行更新。
(5)完成对内核数据的更新后,CREATE,REMOVE和RENAME等操作还需对系统文件作一些相应的修改,如表6所示:
表6 cLVM需要修改操作
IOCTL命令 | 需要的修改 |
VG_CREATE | 在/dev/下创建一个VG_NAME目录,并且创建一个/dev/VG_NAME/group的字符设备文件。并且在/etv/lvmtab中增加Volume Group入口,创建/dev/lvmtab.d/VG_NAME的vgda备份文件。 |
VG_REMOVE | 删除/dev/VG_NAME/目录,删除/dev/lvmtab中该Volume Group的入口。删除/dev/lvmtab.d/VG_NAME。 |
VG_RENAME | 先做VG_REMOVE,然后VG_CREATE对系统文件的修改。 |
VG_MERGE | 先做VG_REMOVE,然后VG_CREATE对系统文件的修改。 |
VG_SPLIT | 先做VG_REMOVE,然后VG_CREATE对系统文件的修改。 |
LV_CREATE | 创建一个新的块设备文件/dev/VG_NAME/LV_NAME。 |
LV_REMOVE | 删除块设备文件/dev/VG_NAME/LV_NAME |
LV_RENAME | 块设备文件/dev/VG_NAME/LV_NAME更名为/dev/VG_NAME/LV_NEW_NAME |
(6)最后,sync_do_request填充msg为ack Message,返回到初始机群节点,通知其同步操作成功信息。
管理和配置模块的功能比较单一,仅仅对内核模块和同步模块进行一些简单的管理和配置操作,和提供各个节点机之间的数据通讯功能。机群节点机的管理与配置模块的状态转换图如图8所示:
中央控制和管理模块提供了两个接口函数给管理和配置模块以及同步模块用于数据传输,它们是:
Send(Host,Data);
Recv(Host,Data);
通过这两个通讯函数,处于不同机器的同步模块之间进行数据的通讯。
本系统在清华大学计算机系高性能研究所的TH-MSNS网络存储系统上进行了功能的有效性测试。在前端8个节点的机群上安装了分布式虚拟化存储系统,借助该系统实现了机群环境下的网络存储资源虚拟化的功能,提供了多个主机的统一存储,实现了虚拟存储池,即提供了磁盘空间的动态随意分配和修改逻辑磁盘大小的功能,同时提供了逻辑磁盘数据镜像和快照功能,充分验证了本发明的有效性。
Claims (1)
1.存储区域网络中分布式虚拟化存储的方法,其特征在于:基于由分布式节点机群和其中任意指定的一台管理机、网络磁盘和光纤交换机且按网络存储系统组成的分布式集群网络存储系统,管理控制台提供给用户Telnet登陆服务进行分布式虚拟化存储系统的管理功能,向管理节点机中的中央控制和管理模块提交功能性的或者对分布式机群中的作为实际的逻辑设备文件系统使用的逻辑磁盘LV、逻辑磁盘卷集合VG内的内核元数据进行相应的操作请求;在单机虚拟化系统基础上,设计同步各个节点机之间的虚拟化系统元数据的方法,保持内核元数据与磁盘元数据的一致性;同时通过设定管理节点,统一管理分布式虚拟存储系统的虚拟化操作和行为,提供给每个节点机上的文件系统一个统一一致的虚拟化存储视图实现基于机群系统的统一管理模块、元数据模块和控制管理平台的虚拟化存储;所述方法依次含有以下步骤:
(1)设置模块结构:
在管理节点机中设置中央控制与管理模块、简称管理配置模块的分布式虚拟化系统管理配置模块、简称同步模块的元数据同步模块以及内核模块;在各分布式节点机内设置分别与上述同步模块、管理配置模块和内核模块内容相同的同名的模块;其中
(1.1)中央控制和管理模块:
控制网络上所有存储资源:该模块在启动时通过读配置文件和查询网络磁盘得到节点配置信息,生成内含节点序号信息、LV信息和VG信息的节点信息表,也称资源信息表;
为用户进行以下操作提供接口:
对逻辑磁盘LV的操作、块文件LV的创建或删除、LV容量的增加和减少;
对逻辑磁盘卷集合VG的操作:查询信息;
对网络磁盘即物理磁盘PV的操作:查询PV内的相应于逻辑磁盘卷的元数据VGDA;
向管理配置模块提供发送和接收的两个接口;
通过内核模块提供的IOCTL函数接口,来控制内核模块执行相应的功能性操作;
该函数的不同操作参数值对应于要求VG、LV执行的不同操作;
(1.2)内核模块
在截获中央控制和管理模块发出的所有对逻辑磁盘LV、逻辑磁盘卷集合VG的操作后,把传来的文件系统的I/O操作的逻辑空间地址映射到网络磁盘的实际物理地址,以实现虚拟化存储;
(1.3)元数据同步模块
在其分布式节点机对网络存储资源作虚拟化存储操作时,同步模块各节点的内核模块元数据和网络磁盘元数据保持一致;
同步模块向管理配置模块提供用于同步各分布式节点机内核模块元数据接口函数,记为sync_init_request;
同步模块向内核模块提供用于在某分布式节点机对网络存储资源进行虚拟化存储时,执行同步类型操作命令的接口函数,记为sync_do_request;
所述的同步操作包括VG数据同步和LV数据同步,而同步操作的数据分成两个部分;
用户空间地址数据的修改和内核模块元数据的更新;
(1.4)分布式虚拟化存储管理配置模块
它分别设置发送接口函数Send(Host,Data)、接受接口函数Recv(Host,Data),提供给中央控制和管理模块、元数据同步模块和内核模块作通信用,其中Host是节点序号,用于标识节点;
(2)依次按以下步骤执行虚拟化存储:
(2.1)启动中央控制和管理模块,初始化,创建TCP监听线程;
(2.2)用户通过telnet登陆服务管理,向中央控制和管理模块发出操作请求;
(2.3)TCP线程收到用户广播请求后,为每一个用户创建一个TCP处理线程,并调用Tcp_request_dispatch函数;
(2.4)Tcp_request_dispatch函数判断操作命令类型后,对所述操作命令进行分类处理;
(2.5)若为信息查询命令,则查询本中央控制和管理模块的节点信息表,把查询结果经以太网返回用户;
(2.6)若为功能性操作命令,则通过管理配置模块直接调用内核模块的IOCTL接口函数,执行中央控制和管理模块制定的操作,把操作结果返回管理配置模块,再经中央控制和管理模块返回用户;同时,经管理配置模块由光纤交换机把修改后的VGDA的vg表送到各分布式节点机,相应地,把VG、LV的逻辑地址映射到网络磁盘,并按修改后的VGDA的vg表修改网络磁盘元数据;
(2.7)若为同步类型操作指令,则通过管理配置模块调用同步模块的接口函数,执行如下操作:
(2.7.1)先由接口函数sync_init_request区别消息类型,即同步操作的类型:VG同步还是LV同步,再分别调用不同的函数处理;
(2.7.2)在处理时,先从传过来的文件中,根据vg_name即VG名达到指向VG的指针,若为LV同步,则根据lv_name即LV名从VG表中得到指向LV的指针,然后,分别按照指针位置更新逻辑地址;
(2.7.3)同步内核数据:通过给内核模块发送IOCTL命令,完成对VGDA元数据的更新;
(2.7.4)对系统文件按VG和LV分别进行创建、删除、修改或更名的操作;
(2.7.5)从内核模块中读出VGDA元数据,通过接口函数sync_init_request向管理配置模块发送,同步地保持分布式虚拟化存储系统内核元数据和网络磁盘元数据的一致性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101030449A CN1254748C (zh) | 2003-10-31 | 2003-10-31 | 存储区域网络中分布式虚拟化存储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101030449A CN1254748C (zh) | 2003-10-31 | 2003-10-31 | 存储区域网络中分布式虚拟化存储的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1540524A CN1540524A (zh) | 2004-10-27 |
CN1254748C true CN1254748C (zh) | 2006-05-03 |
Family
ID=34333198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101030449A Expired - Fee Related CN1254748C (zh) | 2003-10-31 | 2003-10-31 | 存储区域网络中分布式虚拟化存储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1254748C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101277317B (zh) * | 2008-04-29 | 2010-10-13 | 北京锐安科技有限公司 | 一种分布式处理系统的数据均衡分发方法 |
US11983147B2 (en) | 2021-06-02 | 2024-05-14 | International Business Machines Corporation | Deduplicating data integrity checks across systems |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480654B2 (en) * | 2004-12-20 | 2009-01-20 | International Business Machines Corporation | Achieving cache consistency while allowing concurrent changes to metadata |
CN100354833C (zh) * | 2005-01-14 | 2007-12-12 | 英业达股份有限公司 | San系统异常情况下的保护方法 |
CN1299207C (zh) * | 2005-01-21 | 2007-02-07 | 清华大学 | San环境中基于网络的海量存储资源管理方法 |
CN100337218C (zh) * | 2005-02-23 | 2007-09-12 | 北京邦诺存储科技有限公司 | 网络存储系统中的数据管理方法及其构建的网络存储系统 |
CN1322427C (zh) * | 2005-02-25 | 2007-06-20 | 清华大学 | Windows平台下动态管理存储资源的通用方法 |
CN1304961C (zh) * | 2005-03-11 | 2007-03-14 | 清华大学 | 基于元数据服务器的存储虚拟化管理方法 |
CN100347692C (zh) * | 2005-05-31 | 2007-11-07 | 清华大学 | San系统中虚拟化智能控制器的实现方法 |
CN100356308C (zh) * | 2005-11-21 | 2007-12-19 | 余波 | 一种网络虚拟磁盘的实现方法 |
CN100423491C (zh) * | 2006-03-08 | 2008-10-01 | 杭州华三通信技术有限公司 | 虚拟化网络存储系统及其网络存储设备 |
CN100464535C (zh) * | 2006-05-09 | 2009-02-25 | 国家数字交换系统工程技术研究中心 | 一种路由器虚拟驱动模块的动态加载与控制方法 |
CN100405777C (zh) * | 2006-07-27 | 2008-07-23 | 清华大学 | 以太网存储区域网络中基于目标器内存设备的缓存方法 |
CN101232422B (zh) * | 2008-01-18 | 2010-06-02 | 北京交通大学 | 一种基于网格技术的网络存储系统 |
CN101763221B (zh) | 2008-12-24 | 2013-01-30 | 成都市华为赛门铁克科技有限公司 | 一种存储方法、存储系统及控制器 |
CN101477444B (zh) * | 2008-12-29 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种虚拟存储方法和设备 |
CN102036419B (zh) * | 2009-09-30 | 2013-04-24 | 华为技术有限公司 | 网络节点配置信息处理方法、网络节点以及通信系统 |
CN101894066B (zh) * | 2010-04-28 | 2012-11-28 | 北京同有飞骥科技股份有限公司 | 一种基于磁盘阵列虚拟化的网络存储管理软件测试方法 |
US8918615B2 (en) * | 2011-04-27 | 2014-12-23 | Hitachi, Ltd. | Information storage system including a plurality of storage systems that is managed using system and volume identification information and storage system management method for same |
CN102868754B (zh) * | 2012-09-26 | 2016-08-03 | 北京联创信安科技股份有限公司 | 一种实现集群存储高可用性的方法、节点装置和系统 |
CN102970204B (zh) * | 2012-10-24 | 2017-09-01 | 曙光信息产业(北京)有限公司 | 一种基于xen虚拟化平台的分布式交换机系统及其实现方法 |
CN103118073B (zh) * | 2013-01-08 | 2015-07-22 | 华中科技大学 | 一种云环境下虚拟机数据持久化存储系统和方法 |
CN103268252A (zh) * | 2013-05-12 | 2013-08-28 | 南京载玄信息科技有限公司 | 基于分布式存储的虚拟化平台系统及其实现方法 |
CN104219318B (zh) * | 2014-09-15 | 2018-02-13 | 北京联创信安科技股份有限公司 | 一种分布式文件存储系统及方法 |
CN107888638A (zh) * | 2016-09-30 | 2018-04-06 | 中移(苏州)软件技术有限公司 | 一种因特网存储区域网络的分布式存储方法及装置 |
CN106713465B (zh) * | 2016-12-27 | 2020-11-17 | 北京锐安科技有限公司 | 一种分布式存储系统 |
CN106648474A (zh) * | 2017-01-01 | 2017-05-10 | 国云科技股份有限公司 | 一种基于逻辑卷恢复虚拟机磁盘的方法 |
CN107104911B (zh) * | 2017-04-06 | 2020-02-14 | 清华大学 | Udp数据包的分割方法和发送方法 |
CN107608857A (zh) * | 2017-09-25 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种san存储健康状态检查方法、装置及可读存储介质 |
JP6734251B2 (ja) * | 2017-11-30 | 2020-08-05 | 株式会社日立製作所 | システム及びその制御方法並びにプログラム |
CN112783804B (zh) | 2019-11-08 | 2024-10-18 | 华为技术有限公司 | 数据访问方法、装置及存储介质 |
CN114089920B (zh) * | 2021-11-25 | 2024-08-20 | 北京字节跳动网络技术有限公司 | 数据存储方法、装置、可读介质及电子设备 |
-
2003
- 2003-10-31 CN CNB2003101030449A patent/CN1254748C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101277317B (zh) * | 2008-04-29 | 2010-10-13 | 北京锐安科技有限公司 | 一种分布式处理系统的数据均衡分发方法 |
US11983147B2 (en) | 2021-06-02 | 2024-05-14 | International Business Machines Corporation | Deduplicating data integrity checks across systems |
Also Published As
Publication number | Publication date |
---|---|
CN1540524A (zh) | 2004-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1254748C (zh) | 存储区域网络中分布式虚拟化存储的方法 | |
JP5393515B2 (ja) | サーバイメージマイグレーション | |
EP3210103B1 (en) | Disk partition stitching and rebalancing using a partition table | |
JP5496254B2 (ja) | マシンから仮想マシンへの変換 | |
CN1955912A (zh) | 海量存储系统中的资源分配方法 | |
CN1645330A (zh) | 用于应用程序分布式管理的启用网格的虚拟机的方法和系统 | |
CN1545048A (zh) | 一种用二维表实现的树的存储、访问的方法 | |
CN1906580A (zh) | 对于具有可移动对象的启用网格的虚拟机的方法和系统 | |
CN114450678B (zh) | 实现对异构数据源的联合查询访问 | |
CN101056175A (zh) | 磁盘阵列及其访问权限控制方法与装置、服务器及服务器系统 | |
CN1277210C (zh) | 一种文件同步的方法 | |
JP5248912B2 (ja) | サーバ計算機、計算機システムおよびファイル管理方法 | |
US20220413819A1 (en) | Code translations of resilient distributed datasets in databases | |
US11216421B2 (en) | Extensible streams for operations on external systems | |
US11620395B1 (en) | Replication of account security configurations | |
JP2024521730A (ja) | Sqlクエリを加速するための決定的分散キャッシュのための技術 | |
CN1374587A (zh) | 取得数据库匹配性的信息管理装置和记录该库程序的媒体 | |
CN116069811A (zh) | 使用用户定义的函数扩展数据库外部函数 | |
US20220342888A1 (en) | Object tagging | |
CN1791027A (zh) | 网格信息模型系统及模型化处理网格信息的方法 | |
US20100169271A1 (en) | File sharing method, computer system, and job scheduler | |
WO2023179784A1 (zh) | 数据处理方法以及装置 | |
CN1314229C (zh) | 一种用于网络计算机配置参数的自动分配与获取方法 | |
CN111597011A (zh) | 一种基于私有云资源模型的连接方法和系统 | |
US11461274B2 (en) | Processing streams on external data sources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060503 Termination date: 20111031 |