2011年(264)
分类: 服务器与存储
2011-03-19 17:10:37
一、引言
计划下周搭建一个XEN的高可用集群环境。事先深入了解一下相关的技术资料,为实验做好准备。主要包括一些基础协议、网络、服务器及存储内容。
二、什么是ISCSI协议
目前网络存储技术采用的连接技术主要有光纤通道和TCP/IP。基于IP的网络存储能解决基于光纤通道的网络存储中存在的兼容性和传输距离问题,而且能提供相对廉价的解决方案。iSCSI协议是IP存储网络协议之一,它将广泛应用的两种工业标准SCSI和TCP/IP结合起来,为存储设备提供面向数据块级的连接服务。
iSCSI使用TCP/IP协议在不稳定网络上进行可靠的数据传输。
图1 iSCSI协议分层模型
这个架构各层的理解:
SCSI层:根据应用发出的请求建立SCSI CDB(命令描述块),并传给iSCSI层;同时接受来自iSCSI层的CDB,并向应用返回数据。
iSCSI层:对SCSI CDB进行封装,以便能够在基于TCP/IP协议的网络上进行传输,完成SCSI到TCP/IP的协议映射。这一层是iSCSI协议的核心层。
TCP层:提供端到端的透明可靠传输。
IP层:对IP报文进行路由和转发。
Link层:提供点到点的无差错传输
iSCSI属于端到端的会话层协议,它定义的是SCSI到TCP/IP的映射,即Initiator将SCSI指令和数据封装成iSCSI协议数据单元, 向下提交给TCP层,最后封装成IP数据包在IP网络上传输,到达Target后通过解封装还原成SCSI指令和数据,再由存储控制器发送到指定的驱动 器,从而实现SCSI命令和数据在IP网络上的透明传输。它整合了现有的存储协议SCSI和网络协议TCP/IP,实现了存储与TCP/IP网络的无缝融 合。
FC和iSCSI是目前存储区域网络SAN(Storage Area Network)的两个主流协议。
iSCSI发起端为了和iSCSI目标端建立iSCSI会话,iSCSI需要知道ISCSI目标端的IP地址,TCP端口号和名字三个信息。iSCSI发现的目的是为了让iSCSI发起端获取一条到iSCSI目标端的通路。iSCSI有三种发现机制:
⑴ 静态配置:在iSCSI发起端已经知道iSCSI目标端的IP地址TCP端口号和名字信息时,iSCSI发起端不需要执行发现。iSCSI发起端直接通过 IP地址和TCP端口来建立TCP连接,使用iSCSI目标端的名字来建立iSCSI会话。这种发现机制比较适合比较小的iSCSI体系结构
⑵ SendTarget发现:在iSCSI发起端知道iSCSI目标端的IP地址和TCP端口的情况下,iSCSI使用IP地址和TCP端口号建立TCP连 接后建立发现对话。iSCSI发起端发送SendTarget命令查询网络中的存在的iSCSI信息。这种方法主要用于网关设备,iSCSI发起端被静态 配置连接到指定的iSCSI设备。iSCSI发起端和iSCSI网关设备建立对话并发送SendTarget请求给iSCSI网关设备。iSCSI网关设 备返回一系列和它相连的ISCSI目标端的信息。iSCSI发起端选择一个目标端来建立对话。
⑶ 零配置发现:这种机制用于iSCSI发送设备完全不知道ISCSI目标端的信息的情况下。iSCSI发起端利用现有的IP网络协议SLP(Service Location Protocol for Discovery,服务定位协议)。iSCSI目标端使用SLP来注册,iSCSI发起端可以通过查询SLP代理来获得注册的iSCSI目标端的信息。 当iSCSI目标端加入到网络中的时候,拓扑结构也随之改变。虽然这种方法增加了实现的复杂性,但它不需要重新配置发起端即可找到新的目标端。
三、介绍一下XEN的blktap
Blktap 是XEN 提供给我们的一套实现虚拟块设备的框架,它是运行在用户控件的,所以他能给我们提供和平常一样的文件I/O 操作接口,该特性也决定了Blktap 能使我们的块存储设备系统具有更好的可兼容性。因此它可以使我们更加轻松的去实现我们的fileSystem,例如vhd、qcow 等,它使我们摆脱了复杂而又易错的kernel 程序。当然和普通的后端驱动类似,blktap 也需要一个内核模块运行在Dom-0 上。现在我们来描述下blktap 的工作流程
描述了 blktap 的基本工作流程,当xen 启动的时候,他会先启动blktapctl,它是一个后台程序。当我们启动虚拟机的时候就会通过xenBus 这个通道把需要的虚拟块存储设备注册到blktapctrl 中,该注册过程会创建两个命名管道以及一个字符设备,这两个命名管道将被用于字符设备与图中tapdisk 之间的通信。而这个字符设备会利用mmap 这个系统调用把fe_ring 与共享内存映射起来。这时tapdisk 主要用于打开镜像文件以及向blktapctrl 发送镜像的基本信息,比如镜像的大小等。当tapdisk 初始化好的时候,它会开始监听上面创建好的两个命名管道,并获取从前端(FrontEnd)发送过来的数据。这里的的通信和普通的前后端通信方式一样,采 用的共享内存事件通道来实现的,这种简单的通信方式也大大提高了块设备的性能
详细:
参考资料:
四、基于分布式文件系统当XEN的存储
blktap 就是截获虚拟机磁盘的读/写操作,磁盘的读写就是根据相应的扇区号读取该扇区的数据,而在blktap 里面我们会将Dom-U所要访问虚拟磁盘的扇区号转化为物理磁盘的扇区号。传统的虚拟块存储设备都是将虚拟机中的扇区号重新定位到物理设备上,由于物理设备是基于单机的,所以我们无法保证数据的可靠性。现在我们假设将虚拟机读写扇区号重新定位到一个分布文件系统中,那么我们就可以利用分布式文件系统的特点来解决数据的可靠性。
我们知道在磁盘文件数据读写其实就是根据一个扇区号读取一个该扇区中的内容,这里的扇区号和数据都是一一对应的,所以这个的过程也就是从某一个key 里面获取相应的value。(简单理解:从一个扇区中读取其相应的内容。相对应的就是一个KEY-VALUE的关系)现在我们将物理磁盘的扇区号映射为我们key-value 系统中的key,而物理磁盘数据映射到我们key-value 系统中的value。这样一来,我们所有的虚拟机数据都将会被存放到key-value 系统中,其实就是存放在分布式文件系统中。
PS:期待期待……
从我们可以看到,所有的数据都被以key-value 的形式存放到分布式文件系统中,这样意味着虚拟机里面的运行数据是分布在集群中不同的机器中。
分布式的优点总结如下几点:
1. 数据可靠性
2. 负载均衡
3. 效率较高。由于数据被分布在不同的服务器上,所以所有的数据读写操作都是多点对一点,这类似于P2P,在集群规模足够大的时候,磁盘读写的速度会趋近于网络的速度。而从目前情况来看,网络的速度是远远高于硬盘速度的。
4. 服务可靠性高。由于虚拟机的磁盘数据是被存放到分布式文件系统中的,该特点也大大降低了虚拟机在线迁移的难度。有了在线迁移以后,虚拟机的所提供的服务可靠性就得到了大大的提高。
五、LVM介绍
Linux的LVM仍然非常强大,可以在生产运行系统上面直接在线扩展硬盘分区,可以把分区umount以后收缩分区大小,还可以在系统运行过程中把一个分区从一块硬盘搬到另一块硬盘上面去等等。
参考资料:
http://www.ibm.com/developerworks/cn/linux/filesystem/lvm/lvm-1/index.html
下一篇开始系统整理一下这个测试环境的搭建文档!