一种存储区域网络虚拟化管理方法_3

文档序号:9710722阅读:来源:国知局
来说,元数据服务器映射给虚拟化代理的元数据是以虚拟卷为单位。
[0030]元数据服务器传给虚拟化代理的每个虚拟卷的元数据是使用段来组织。一个段将虚拟卷的一段连续扇区对应到一个目标段,一个目标段是一个(线性)或多个(条分)存储设备上的一段连续的扇区。每个段的组织如下:
(逻辑起始扇区,扇区数目,目标段类型,目标段描述符)
目标段类型有两种:线性(linear)和条分(striped)。每个后面都带有各自的目标段描述符,其组织格式如下:
线性:
(目标设备标识,起始扇区)
比如:linear /dev/ada 0条分:
(条分数,条带大小,目标设备1,起始扇区1,目标设备2,起始扇区2,......)
比如:striped 2 32 /dev/ada 0/dev/sdb 0将按照如下原则映射第一个16K大小的逻辑块(chunk):
LV chunk 1_> sda, chunk 1LV chunk 2_> sda, chunk 1LV chunk 3_> sda, chunk 2LV chunk 4_> sda, chunk 2综合起来,一个可能的虚拟卷的元数据表如下:
0 1028160 linear/dev/sda 01028160 3903762 1106 inear/dev/ada 0
上述的虚拟卷元数据表是将sda和sdb线性的连接起来。或者0 2056320 striped 232/dev/sda 0 /dev/sdb 02056320 2875602 linear/dev/sdb 1028160
上述的虚拟卷元数据表是将逻辑块0-2056320条分映射到磁盘sda和磁盘sdb上,条带大小为16K。而逻辑块2056320-2875602则是线性映射到磁盘sdb从1028160扇区开始的819282个扇区。
[0031]元数据服务器发送给虚拟化代理的一个虚拟卷的元数据的完整结构见图4。
[0032]其中,虚拟卷头包含虚拟卷的有关信息,如卷大小,读写权限等;段头指明了其后所接的段的数目;每个段的格式如前所述。
[0033]这种分段表示方法和映射表表示方法(把虚拟卷分为若干固定大小的块,每个块对应一个存储设备上相同大小的块〕相比,大大减少了表示一个虚拟卷所需的元数据的长度,缩短了元数据在元数据服务器上存储以及在网络上传输的时间。
[0034]元数据服务器和虚拟化代理通过各自的通信接口通过以太网进行通信。通信以会话为基本单位,一个完整会话由两个部分组成:
1.请求:由通信模型的一端向另外一端发送一个请求包,包头+数据(如果有)。
[0035]2.应答:在另外一端受到请求的时候,就执行这个请求,并返回一个包头+数据(如果有)的执行结果。
[0036]如果在规定的时间内没有应答的化,就认为通信失败,不再等待,认为这个通信过程失败。
[0037]所有的通信的请求都是如RQST_XXXX表示,所有的通信的应答都是如RESP_XXXX表示。主要的请求类型包括:
RQST_L0GIN主机登陆到元数据服务器 RQST_L0G0UT主机从元数据服务器退出 RQST_SETPV 设置主机所需的物理卷 RQST_SETLV 设置主机的虚拟卷的元数据 RQST_RESETLV重新设置虚拟卷的元数据 RQST_L0CKLV锁定虚拟卷 RQSTJJNLOCKLV解锁虚拟卷
一台主机要加入虚拟化存储系统中,需要向元数据服务器注册。主机启动后,虚拟化代理自动发送注册包给元数据服务器返回给主机一个唯一的主机标识,即Host ID,和一个验证码,即host key虚拟化代理可将该标识存入本地文件。以后的所有该主机和元数据服务器交互,都以主机标识来区分主机。
[0038]主机完成注册后,元数据服务器就可以根据管理员的命令把逻辑卷分配给主机使用。元数据服务器首先向虚拟化代理发送AETPV请求包,把主机所用到的物理卷的全局唯一标识符信息发送给虚拟化代理。虚拟化代理根据此请求扫描磁盘,找到对应的物理卷,在内核中建立所有物理卷的列表,并向元数据服务器发送响应包。然后元数据服务器向虚拟化代理发送SETLV请求包,把分配给主机的虚拟卷的元数据信息发送给虚拟化代理。虚拟化代理根据元数据信息在内核中构造出相应的虚拟设备,并给元数据服务器发送SETLV响应包。之后,主机就可以对该虚拟设备进行使用了。在使用过程中,虚拟化代理利用从元数据服务器得到的元数据对发往虚拟卷的I/O命令重定向,除非虚拟卷的元数据发生改变,否则虚拟化代理不需要与元数据服务器通信。
[0039]在存储区域网络的多前端主机共享存储环境中,一个虚拟卷可能分配给多个前端主机使用。为了满足不间断服务的需求,当配置操作需要改变该虚拟卷的元数据(即虚拟卷和物理卷的映射关系,如虚拟卷扩容)时,不能中断前端主机提供的服务。因此该过程中必须对前端主机对虚拟卷的访问进行控制,以确保数据的一致性。虚拟化管理系统釆用一种锁机制保证虚拟卷的元数据发生改变时数据的一致性。元数据服务器可以向前端主机的虚拟化代理发出对虚拟卷的加锁和解锁请求。虚拟化代理收到对一个虚拟卷的加锁请求后,把所有I/o命令队列中已经被重定向但还没有完成的I/O命令被发往底层存储设备执行,所有后续的对虚拟卷的I/o命令被推迟执行,并且不被重定向。虚拟化代理收到对一个虚拟卷的解锁请求后,把所有被推迟的的I/o命令用新的元数据重定向,并重新放入I/O命令队列中等待执行。
[0040]在线改变虚拟卷元数据的过程如图5所示。首先元数据服务器会根据元数据确定这个虚拟卷已经分配给哪些前端主机使用,然后向这些前端主机的虚拟化代理发送加锁该虚拟卷的请求,虚拟化代理收到该请求后执行加锁操作并向元数据服务器发回响应。元数据服务器在收到所有的加锁虚拟卷的成功响应之后,它的元数据管理模块按照需要生成新的元数据,再向拥有该虚拟卷使用权限的前端主机发送重置虚拟卷的请求,虚拟化代理收到请求后把虚拟卷旧的元数据替换为新的元数据。最后,元数据服务器在收到所有的重置虚拟卷的成功响应之后,向虚拟化代理发送解锁虚拟卷请求,虚拟化代理把所有被推迟的的I/o命令用新的元数据重定向并执行。
[0041]由于只有当所有虚拟化代理的相应虚拟卷的旧元数据都替换为新元数据后,元数据服务器才会发送解锁请求,所以可以避免不同虚拟化代理使用不同元数据对虚拟卷进行访问造成数据不一致的情况。另外,当这个过程中的某个环节产生错误时,元数据服务器用一种回滚的方式恢复到命令执行前的状态保证元数据的一致性。
[0042]各服务器上的虚拟化代理主要实现虚拟卷到实际物理盘的地址转换,以及从元数据服务
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1