FusionStorage是一款分布式存储软件,其软件组成是由FusionStorage Manager、FusionStorage Agent两个模块组成,其中FusionStorage Agent还包含(MDC、VBS、OSD)
- FusionStorage Manager(FSM):管理进程,提供告警、监控、日志、配置等操作维护功能,主备部署
- FusionStorage Agent(FSA):管理代理进程,部署在各节点上,实现各节点与FSM通信
- MDC(Meta Data Controller):元数据控制
作用:实现对分布式集群的状态控制,以及控制数据分布式规则、数据重建规则等。MDC部署在3、5、7节点上,形成控制集群。
- VBS(Vritual Block system):虚拟块存储管理组件
作用:负责元数据的管理,提供分布式集群接入点服务,使计算资源能够通过VBS访问分布式存储资源,每个服务器上部署一个VBS进程,形成VBS集群,节点上可以通过部署多个VBS来提升IO性能。
- OSD(Object Storage Device):对象存储设备
作用:执行具体I/O操作。在每个服务器上部署多个OSD进程,一块磁盘对应部署一个OSD进程,SSD可以部署多个OSD可以充分发挥SSD卡作用。
FusionStorage主要模块交互关系
- 系统启动时,MDC与ZK互动决定主MDC。主MDC与其他MDC相互监控心跳,主MDC决定MDC故障后接替者。其他MDC发现主MDC故障又与ZK互动升任主MDC
- OSD启动时向MDC查询归属MDC,向归属MDC报告状态,归属MDC把状态变化发送给VBS。当归属MDC故障,主MDC指定一个MDC接管,最多两个池归属一个MDC
- VBS启动时查询主MDC,向主MDC注册(主MDC维护了一个活动VBS的列表,主MDC同步VBS列表到其他MDC,以便MDC能将OSD的状态变化通知到VBS),向MDC确认自己是否为leader;VBS从主MDC获取IO view,主VBS向OSD获取元数据,其他VBS向主VBS获取元数据
追问:多路径软件的作用?
负载均衡,主备
追问:OSD view,partition view,IO view的作用
IO View:partition主OSD节点的映射关系,一般该视图会有MDC更新并缓存至VBS。
Partition View:Partition主备对应的OSD关系,用来实现多副本机制,IO View是Partition View的子集。
OSD View:确定了 OSD 的 ID 以及 OSD 的状态,一般由 MDC 监控并更新该视图。
追问:几个组件的情况,VBS、MDC、OSD数量是多少?硬盘坏了会怎么样?坏的硬盘换成好的会怎么样?
追问:FusionCompute上的虚拟机和FusionStorage通信用的是ISCSI还是SCSI,为什么?谁的性能好?谁的可靠性高(同一个场景下,可靠性是fs高)
追问:什么是融合部署,分离部署。
融合部署:是将VBS和OSD部署在同一台服务器中,在虚拟化应用场景采用融合部署方式。
分离部署:是将VBS和OSD分别部署在不同的服务器中,在高性能数据库应用场景推荐采用分离部署
追问:融合部署分离部署的使用场景,为什么?
小规模虚拟化/私有云场景可以使用融合部署和分离部署方案
大规模虚拟化/私有云场景强烈要求使用分离部署方案
公有云场景必须使用分离部署方案
数据库场景必须使用分离部署方案,
融合部署性能较差,
追问:分离部署场景下,vbs和osd分别部署在不同的节点上,vbs是否参与io?如何参与?
vbs参与了IO,VBS提供了IO接入服务
追问:fusionstorage 文件和对象的架构与块的架构的区别
块存储:直接访问,开销最小,效率最高,成本最高,扩展困难,场景:企业数据库,Oracle等
文件存储:更易管理,更已与应用对接,具备一定扩展性,但限制较多,场景:企业内部应用整合,文件共享等
对象存储:结构扁平,近乎无限的容量扩展,(对象ID中存放着对象的数据,根据对象ID可以直接找到数据)
追问:4块磁盘,分别需要部署几个MDC/VBS/OSD
追问: fs和传统存储怎么部署,是否都需要多路径软件,多路径软件的作用
答:当主机和存储的通道超过两条时,需要使用多路径软件,防止出现单点故障。
追问:传统存储使用什么介质与主机互联,fs部署的时候需要单独规划网络平面吗?
答:传统存储使用FC和以太网和主机互联,FS部署建议单独规划网络平面
追问:ZK选举机制原理(作用)
MDC主备管理:MDC采用一主两备部署模式;在MDC模块进程启动后,各个MDC进程会向ZK注册选主,先注册的为主MDC;运行过程中,ZK记录MDC主备信息,并通过心跳机制监控MDC主备健康状况,一旦主MDC进程故障,会触发MDC重新选主
数据存储:在MDC运行过程中,会产生各种控制视图信息,包括目标视图、中间视图、IO视图信息等,这些信息保存、更新、查询、删除等操作都通过ZK提供的接口实现
数据同步:数据更新到主ZK,由ZK自动同步到两个备ZK,保证主备ZK数据实时同步,一旦ZK发生主备切换,业务不受影响
追问:为什么osd找mdc注册选主,为什么osd不找zk选主,为什么这么设计
答:ZK是用来管理MDC主备的,MDC管理OSD,分层管理,这样效率高
追问:mdc的作用
MDC是一个高可靠集群,通过HA机制保证整个系统的高可用性和高可靠性
- 通过Zookeeper集群,实现元数据的可靠保存
- 通过Partition分配算法,实现数据多份副本的RAID可靠性
- 通过OSD、VBS间的消息交互、实现对OSD、VBS节点的状态变化的获取与通知
- 通过与Agent间的消息交互,实现系统的扩减容、状态、维护等
- 通过心跳检测机制,实现对OSD、VBS的状态监控。
追问:为什么zk是基数部署,部署3个和4个的区别
答:因为选主MDC时,需要票数过半,才可以选主成功
追问:hash是由谁做的
DHT:分布式哈希环 由VBS来做的,VBS将操作系统的SCSI命令中的key提取出来,通过哈希运算,确定访问数据内容落到DHT环上的哪块Partition上,根据Partition和Disk的对应关系(系统初始化时形成),确定数据存放在那个服务器上的哪块盘上,再通过OSD通过计算确定数据存放在硬盘的具体位置并将获取的数据返回给VBS,确定磁盘和磁盘数据所在位置。
追问:FSA是什么
代理进程,部署在各节点上,实现各节点于FSM通信,FSA包含MDC、VBS和OSD三种不同的进程。根据系统不同配置要求,分别在不同节点上启用不同的进程组合来完成特定的功能。
追问:OSD具体执行哪些IO操作?OSD坏掉了会怎么样
- MDC通过心跳感知OSD状态,OSD每秒上报给MDC特定的消息(比如OSD容量等),当MDC立案续在特定的时间内(当前系统为5s)没有接收到OSD心跳信息,则MDC认为OSD已经出现故障(比如:OSD进程消失或OSD根MDC间网络中断等),MDC则会发送消息告知该OSD需要退出,MDC更新系统的OSD视图并给每台OSD发送视图变更通知,OSD根据新收到的视图,来决定后续的操作对象。
- 多副本复制取决于MDC的视图;两副本情况下,当Client发送一个请求达到OSD的时候,该OSD根据视图信息,将该写请求复制一份该partition的被OSD。多副本情况下,则会复制发送多个写请求到多个备OSD上。
追问:元数据作用
答:元数据是描述数据的数据,可以记录数据的属性,位置,大小,当用户查找数据时,通过元数据记录的数据,查找数据所在的具体位置
追问:IO瓶颈如何理解?
答:IOPS每秒次数,访问速度大于磁盘IO速度,出现IO瓶颈
解决方法:增加硬盘,增加Cache
追问:VBS跟OSD都对IO进行操作吗?
追问:VBS和OSD对IO进行读写的区别?
VBS通过计算确定数据存储放在哪个服务器的那块硬盘上
OSD通过计算确定数据存放在硬盘的具体位置
追问:OSD除了执行IO操作还有哪些功能?
1、磁盘的管理
2、IO的复制
3、IO数据的Cache处理
追问:如果OSD挂了会怎么样?
重新选举
追问:分布式cache什么意思?
答:Cache数据不是在某一台主机上,而是分布在不同主机上,构成一个统一的大的Cache,把不同主机上的Cache当作一个Cache缓存使用。
追问:说一下FS适合什么场景?
适用于对空间要求大的场景,不适合响应要求高的场景
追问:银行的关键业务,你用FS还是传统存储?
银行主要是数据库业务,对数据响应要求较高,适用于传统存储
追问:传统存储为什么适用于关键型业务
追问:块、文件、对象区别
块存储:直接访问,开销小,效率高但成本也高,扩展交为困难(SCSI)。
文件存储:兼容性强,适用于所有场景,共享文件夹,树状结构,找文件时需要一层一层的找(NFS)。
对象存储:通过查找对象ID,自己管理自己的信息,(HTTP),所以是结构扁平化,可以无限扩容。
追问:什么是元数据?
元数据是管理数据的数据,通过元数据来查找到数据所在的位置