块存储的世界

转自:https://www.ustack.com/blog/block-storage-overview/

在OpenStack中,存储是非常重要的一块,但是因为其提供方式的不同,即使是专业的工程师也会感到十分困惑。OpenStack的存储主要分为三大类,一是对象存储服务,Swift解决的问题,二是块设备存储服务,在OpenStack里主要是提供给虚拟机的作为“硬盘”的存储,这里又分为本地块存储和分布式块存储,Cinder项目正在解决相关的问题;第三类,数据库存储服务,Databases as a Service(DBaaS), 对应AWS里面的RDC,目前是一个正在孵化的项目,Trove,前身是Rackspace开源出来的RedDwarf。

单机块存储

首先一个硬盘是一个块设备,内核检测到硬盘然后在/dev/下会看到/dev/sda/。因为我们需要利用一个硬盘来得到不同的分区来做不同的事,通过fdisk工具得到/dev/sda1, /dev/sda2等,这种通过直接写入分区表来规定和切分硬盘,是最死板的分区方式。

LVM & Device-mapper

LVM是一种逻辑卷管理器,通过LVM来对硬盘创建逻辑卷组和得到逻辑卷来完成目的比fdisk方式更加弹性。LVM对于不太熟悉其机制的人看来可能会造成不小的开销,但是相对于LVM对来的易用性其映射机制的负载小的足以忽略(在snapshot的情况会有不小的负载)。

LVM在大多数Linux使用者看来非常普通的工具,它同时也是OpenStack块存储项目的一种backend并且是默认的。通过LVM在每个主机创建Volume Group,通过Cinder(OpenStack块存储项目)的调度器可以在任何一个合适的主机(满足容量和其他要求)使用lvcreate创建一个块设备供Nova(OpenStack Computing项目)使用。

Device-mapper是一种支持逻辑卷管理的通用设备映射机制,为存储资源管理的块设备驱动提供了一个高度模块化的内核架构。LVM是基于Device-mapper的用户程序实现。

Device-mapper在内核中它通过一个模块化的Target Driver插件实现对IO请求的过滤或者重定向工作,当前已经实现的Target Driver插件包括软Raid、软加密、逻辑卷条带、多路径、镜像、快照等。整个 device mapper 机制由两部分组成–内核空间的 device mapper 驱动、用户空间的device mapper 库以及它提供的 dmsetup 工具。内核中主要提供完成这些策略所需要的机制。Device-mapper 用户空间相关部分主要负责配置具体的策略和控制逻辑,比如逻辑设备和哪些物理设备建立映射,怎么建立这些映射关系等等,而具体过滤和重定向 IO 请求的工作由内核中相关代码完成。

SAN & iSCSI

在接触了单机下的逻辑卷管理后,你需要了解SAN,目前主流的企业级存储方式。

大部分SAN使用SCSI协议在服务器和存储设备之间传输和沟通,通过在SCSI之上建立不同镜像层,可以实现存储网络的连接。常见的有iSCSIFCPFibre Channel over Ethernet等。

SAN通常需要在专用存储设备中建立,而iSCSI是基于TCP/IP的SCSI映射,通过iSCSI协议和Linux iSCSI项目我们可以在常见的PC机上建立SAN存储。。

如何建立在PC机上的SAN可以参考iSCSI建立,这篇文章的iSCSI target管理方式不太方便,通常利用targetcli管理target是及其方便的。targetcli可以直接建立和管理不同backstone类型的逻辑卷和不同的export方式,如建立ramdisk并且通过iSCSI export非常方便,操作方式见targetcli screencast Part 2 of 3: ISCSI – YouTube

分布式块存储服务

总结

参考资料

 

posted @ 2017-03-24 11:14  gold叠  阅读(595)  评论(0编辑  收藏  举报