本文主要讲述VDSM块存储Block Domain实现原理和thin provision的实现。
首先介绍一下背景: VDSM中对存储的管理采用了分层建模的思想,在共享SAN存储模式下,自下而上分别是LUN(Block Domain),Block Storage Pool。
在一个集群中,同一种存储类型的domain组成一个pool。在一个pool内部,存在一个SPM(Storage Pool Manager)节点,该节点负责管理Pool中存储分配和元数据的记录情况。同样,为了持久化Pool中的volume/image等元数据信息,在Pool内部还存在一个Master Domain,该Domain上存放Pool中的元数据信息。
SPM是普通Ovirt Node节点获取到集群锁之后的一个Role,在一个Storage Pool内部,为了保证元数据的安全和一致性,VDSM规定,只有SPM有元数据的修改权限。
VDSM中集群锁是通过sanlock实现的,sanlock通过磁盘心跳和磁盘通信来进行节点存活判断和集群一致性信息计算,它能够保证,在同一时刻,集群只有一个节点能够获取到集群锁。如果某一个Node长期持有集群锁,那它就扮演了SPM的角色。
普通的创建/删除卷等元数据修改操作,这些请求消息由engine节点直接发送给SPM节点,SPM在修改完元数据后&#