1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > FusionStorage原理及组件 Java面试回忆录

FusionStorage原理及组件 Java面试回忆录

时间:2022-10-16 19:52:39

相关推荐

FusionStorage原理及组件 Java面试回忆录

前言

设计模式是我们编程道路上绕不开的一环,用好了设计模式能够让代码拥有良好的维护性、可读性以及扩展性,它仿佛就是“优雅”的代名词,各个框架和库也都能见到它的身影。

正是因为它有种种好处,所以很多人在开发时总想将某个设计模式用到项目中来,然而往往会用得比较别扭。其中一部分原因是业务需求并不太符合所用的设计模式,还有一部分原因就是在Web项目中我们对象都是交由Spring框架的Ioc容器来管理,很多设计模式无法直接套用。那么在真正的项目开发中,我们就需要对设计模式做一个灵活的变通,让其能够和框架结合,在实际开发中发挥出真正的优势。

容灾又分为异地容灾和同城容灾

FS作为生产存储支持ebakcup或者第三方备份管理软件的备份

FS的高级特性

双活

hyper metro

远程复制(异步)

hyper replication

可以实现存储层容灾

三、FS的DHT算法

==========

DHT(分布式哈希表,Distrubuted Hash Table

111 698d51a19d8a121ce581499d7b701668

112 7f6ffaa6bb0b408017b62254211691b5

将十进制的数,转化为2的128次方的数,就可以实现平均切随机

一个存储池对应一个DHT环(逻辑)

读写流程:

1.scsi流交给vbs—>vbs转换scsi流为key-value

2.对key值进行—>hash寻址

目的:将主机下发的IO平均且随机的落到存储池各个OSD对应硬盘上

也就是为了实现****IO的负载均衡

3.经过hash得到一个2的32次方的数值—>模运算–>得到patition

目的:缩减表的尺度,加速查找DHT

4.查询由MDC维护的映射表记录的是patition和osd的关系patition—>得到osd

目的:解决坏盘或者扩容场景,准确定位patition对应的osd位置

5.osd做key-value到iscsi流的转化,做磁盘的读写操作

四、存储池和卷

=======

存储池是由一组服务器本地硬盘构成,硬盘类型相同、容量相同、参数相同等限制(参考产品文档)

主存类型:SATA机械 SAS机械 SAS-SSD SATA-SSD NVME SSD盘、SSD卡

一块硬盘只能属于一个存储池

一个存储池可以划多个卷(划卷依赖vbs)

一个卷只能属于一个存储,不能跨存储池

卷可以通过scsi挂载给vbs或者iscsi映射给业务主机使用

一个主机可以使用多个卷,多个卷可以来自不同存储池

五、FS的可靠性和安全级别

=============

可靠性

副本机制:

2副本–50% 3副本–33.3%

EC机制: M=2,3,4 N最大22

EC(Erusure code)算法,分布式raid算法,可以跨界点raid

N+M 坏M块硬盘或者M个节点数据不丢失,业务不中断

N是数据分片

M是校验分片

N+M:B 坏M块硬盘或者B=1个节点数据不丢失,业务不中断

22+2保护 高达91%空间利用率

安全级别

FSM配置界面创建存储池仅支持服务器级和机柜级

服务器级安全:数据副本或者EC的数据分片一定不会放在同一个服务器节点内

机柜级安全:数据副本或者EC的数据分片一定不会放在同一个机柜内

机房级安全:数据副本或者EC的数据分片一定不会放在同一个机房内

不同的存储池可配置不同的数据保护方式和安全级别

六、VBS结构

=======

scsi:将内核态VSC模块的scsi流引入VBS用户态

============================

VBP:scsi流转换成key-value

client:key–hash—mod–patition–查io-view–主OSD 走存储网络平面将io流转发至主OSD

VBM:卷和快照生命周期管理操作 创建卷、挂载卷、卸载卷、查询卷、删除卷、创建快照、删除快照、基于快照创建卷等

hearbeat:心跳模块 通过存储平面与MDC交互心跳包 使MDC维持VBS view状态视图

七、OSD结构

=======

RSM:复制协议实现。

SNAP:实现卷与快照的IO功能、磁盘空间的管理。

CACHE:实现cache功能。

AIO:实现异步IO下发到底层SMIO模块和通过调用SMIO接口来监控介质故障。

SMIO:下发到IO到实际的物理介质、监控物理介质故障、获取磁盘信息。

八、FS的IO流程

=========

1)写IO

APP–》OS–》scsi/iscsi—》VSC内核模块接收—》scsi initiator–》scsi target—》VBP(LUN ID/LBA ID/length–>key data–>value)

—》client(key–hash–mod–patition–查io view–主OSD)—》主OSD(key–hash–mod–patition–查patition view–备OSD)–》主OSD一方面下发写IO到本端cache,一方面通过RSM复制IO到备OSD—》主备OSD同步写cache成功–》由主OSD返回VBS写成功(回写),VBS返回APP写成功。

2)读IO

APP–OS–scsi/iscsi—VSC内核模块接收—scsi initiator–scsi target—VBP(LUN ID/LBA ID/length–>key data–>value)—client(key–hash–mod–patition–查io view–主OSD)—主OSD

1、主OSD正常,先读cache,如果cache读命中,返回读成功,如果未读命中,主OSD向主存disk查询读数据。

2、主OSD异常,MDC会检测硬盘异常触发退盘,修改视图(OSD view IO view Patition view),指导VBS引流到备OSD(新主OSD读数据),先读cache,如果cache读命中,返回度成功,如果未读命中,主OSD向主存disk查询读数据。

九、ZK的作用

=======

Zookeeper(简称ZK)分布式服务框架主要用来解决分布式应用中经常遇到的,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等,ZK主要工作包括三项:

MDC主备管理:

MDC采用一主两备部署模式;在MDC模块进程启动后,各个MDC进程会向ZK注册选主,先注册的为主MDC;运行过程中,ZK记录MDC主备信息,并通过心跳机制监控MDC主备健康状况,一旦主MDC进程故障,会触发MDC重先选主。

数据存储

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

Java优秀开源项目:

/public/P7/Java/git

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新收集的一些大厂的面试真题(都整理成文档,小部分截图)

最新整理电子书

数据存储

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

Java优秀开源项目:

/public/P7/Java/git

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新收集的一些大厂的面试真题(都整理成文档,小部分截图)

[外链图片转存中…(img-jQtXcXnW-1649342846889)]

最新整理电子书

[外链图片转存中…(img-8wBNwgat-1649342846890)]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。