网站开发文档有哪些,建设规划,镇江市机关效能与作风建设网站,微平台推广多少钱什么是存储虚拟化
分布式存储是利用虚拟化技术 “池化”集群存储卷内通用X86服务器中的本地硬盘#xff0c;实现服务器存储资源的统一整合、管理及调度#xff0c;最终向上层提供NFS、ISCSI存储接口#xff0c;供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。…什么是存储虚拟化
分布式存储是利用虚拟化技术 “池化”集群存储卷内通用X86服务器中的本地硬盘实现服务器存储资源的统一整合、管理及调度最终向上层提供NFS、ISCSI存储接口供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。
存储中的基本概念
IOPS
每秒钟的IOPS数该指标主要用于评价小块IO性能体现存储系统的IO延时能力和并发能力。业界一般默认IOPS指的是4K块大小的IO性能该值越大说明性能越好。
吞吐
每秒钟的IO吞吐单位MB/s该指标主要用于评价大块IO性能体现存储系统的IO带宽能力该值越大说明性能越好。
缓存盘和数据盘
固态硬盘SSD性能高但价格高容量小机械硬盘HDD价格低容量大但性能第。
为了实现存储系统在性能容量成本三者之间达到最佳均衡一般会使用混合硬盘配置以SSD缓存盘作为缓存层HDD数据盘作容量层。
磁盘组
在混合硬盘配置下缓存盘和数据盘以磁盘组的关系进行配对每个磁盘组由一个SSD带n个HDD组成n7。每个磁盘组的SSD仅为其磁盘组下的HDD提供缓存加速的能力。配对所带来的好处是减少了SDD故障所影响的范围一块SSD带几块HDD。
缓存盘容量需要多少是根据业务量来配置的正常缓存盘是用来放热数据的根据经验来说热数据一般占比是20%左右比如用户有10T的数据量一般应该配2T的缓存盘。
一般做方案时不知道用户业务量未来会增长多少所以采纳了一个跟机械硬盘的比例也就是裸盘比这样一般能达到一个比较好的性能。比如6块4T的机械盘缓存盘建议配置2.4T 镜像格式
虚拟机的虚拟磁盘文件的格式如qcow2
数据分片
虚拟磁盘的大小是不固定的可以小到几个G大到几十T。为了能够更灵活地存放和处理这些数据aSAN通过数据分片技术对单个qcow2文件按照固定单位大小如aSAN3.0版本默认大小为4G进行切分成若干个颗粒度更小的分片。 aSAN的诸多存储策略都是基于颗粒度更小的分片进行的让数据在存储卷中分布更加地均衡数据管理更加灵活。
优点
· 单个qcow2文件即单个虚拟磁盘的大小可达到整个存储卷的可用容量大小
· 颗粒度小策略灵活。例如分布均匀断点续修
· 多盘性能结合条带化
虚拟机的磁盘在存储上实际是一个qocw2文件像虚拟磁盘可能会非常大可能配了几十个G或者几百G分片就是把qocw2文件切成一个个以4g或者其他大小的小块文件
如果没有分片一个虚拟机的磁盘(qcow2文件)是落在一个物理磁盘上的只要在该物理磁盘满的时候它才会占用下一个物理磁盘的空间这样的话虚拟机单个磁盘的大小是不允许超过单台物理主机的空间的由于其占用的是一个物理磁盘空间(只有该物理磁盘满了的情况下才会占用下一个物理磁盘空间)所以它也只能利用到一个物理磁盘的读写性能。
另外在不分片的情况下文件的颗粒度就很大很多存储策略就不灵活比如主机之间数据分布不均匀因为QCOW2文件很大不分片的话虚拟机的磁盘会只占用一台物理机上的存储空间所以有可能出现一台主机存储容量占用超过80%另一台主机只有10%的情况包括后面去做一些数据平衡的动作平衡时间会很长(平衡各主机之间的存储空间占用将存储容量占用高的主机上的qcow2文件转移到其他存储更加空闲的主机上)因为它只能从一块磁盘上面去读、到另一块磁盘上去写包括数据修复过程中出现了一些故障导致修复失败了这时候又得从qcow2文件头开始去修不灵活。
如果做了分片虚拟机的磁盘文件是以分片为单位比如分片1落在磁盘1的位置分片2落在磁盘2的位置等等它可以同时利用多块物理磁盘的性能包括很多策略都是以分片的单位去执行比如数据平衡、数据修复等。如果做了分片理论上虚拟机可用磁盘大小是可以达到整个虚拟存储卷的可用容量大小的
条带化
条带化是传统的RAID 0模式采用的一种实现技术。条带化技术的普遍定义是将一块连续的数据切分成很多个小的数据块然后并发地存储到不同物理硬盘上实现对数据进行写入或读取时可以获得最大程度上的I/O 并发能力从而获得优异的性能。 如下图所示经过条带化处理的数据可以并发地写入到三块磁盘而未经条带化处理的数据每次只能写入到一块磁盘中因此数据经过条带化后的写入性能则是未经条带化的写入性能的3倍。 简单来说条带化是将一个数据切成很多小碎块然后并发地写入到多块磁盘上面他的作用是能够最大程度提升IO并发能力如上图没有做条带化的时候(右图)写入数据是连续的去写写完date1再写date2不管怎么写都只利用了一块物理磁盘的性能
做了条带化之后(左图)将一个文件切成一堆小碎块写的时候同时并发地往三个物理磁盘去写可以同时利用多块磁盘地性能。
条带数
条带数又称为条带宽度。指的是对数据进行读写时可以同时并发I/0的物理硬盘数量如下图所示的RAID0组条带则为3。
通常情况下随着条带数的增加可并发I/O的物理硬盘数也随之增加I/O性能也能得到提升。
为了保证最优的I/O性能效果条带数的默认不会超过存储卷中任意一台物理主机上的数据盘个数。
比如8盘位两块SSD配了6块HDD那这时候条代数就是6 条带大小
条带大小又称为条带深度指条带化过程中增量数据块的大小也就是将一个大的文件按多大切成一个个小碎块
条带数和条带大小在实际IO流的呈现如下图所示
假设条带数设为4条带大小设为128K。当写入一个连续的1MB的数据时实际上1MB的数据会被切分81MB除以128K个条带大小为128K的小数据块由于条带数为4那么可以同时并发写入的物理硬盘数量为4个所以前面4个128K的小数据块就同时并发地写入到4块物理硬盘中写入完成后再写入后面4个128K的小数据块 多副本
多副本是指将数据保存多份的一种冗余技术aSAN支持两副本、三副本副本所存放的位置必须满足主机互斥原则。
副本也就是同一个数据存2份或三份保证数据冗余并满足主机互斥的原则比如2副本date1存放在主机1的某块磁盘中则date1的副本数据则会存放在集群内其他主机的某块磁盘中这样即使主机1的某块磁盘故障或主机1故障也不会影响虚拟机的数据。
存储池可用空间 集群数据盘总空间 - 数据盘预留总空间 / 副本数。通常情况下每块数据盘预留的空间为16G。
举例存储卷设置为两副本冗余模式由4台物理主机组成每个节点共插入6块1TB硬盘作为数据盘 特别说明下硬盘厂商生产的硬盘1TB1000GB但在系统中需要转换为1024进制格式最终在系统识别到的容量实际约为931GB
存储卷的实际可用空间 4台 * 6块 * 931GB – 16GB/2 11052 GB即11052 / 1024 10.8TB。16GB是预留空间 数据分布介绍
如图所示虚拟机所设的条带数为6条带大小为128K其数据经过条带化、分片和副本复制后在aSAN中的分布过程为
1、单个qcow2文件以条带数为6条带大小为128K切成n个数据块。每6个128K的数据块组成1个条带组。
2、对应的数据会先切分成6个分片组成1个分片组。分片组的聚合副本的分片会在主机A中跨磁盘组并且跨磁盘分布分片组的散列副本的分片会跨B、C、D主机并且在主机内跨磁盘组分布。
3、第1个128K的数据块 、 属于分片1第2个128K的数据块 属于分片2以此类推第6个128K的数据块 属于分片6。条带组1中的6个数据块将并发地写入到所属分片对应的磁盘位置中写入完成后再以同样的方式写入条带组2条带组3......
4、随着数据的写入分片的大小也随之增大当分片组的分片大小增大到4GB时将生成第2个分片组同样也是由6个分片所组成分布的策略与上一个分片是一致的即其聚合副本仍然位于主机A中跨磁盘组与跨磁盘分布散列副本跨主机并且跨磁盘组分布。但注意分片所落在的磁盘具体位置并不一定与上一个分片组完全一样。 上图是结合了条带化、分片、副本最后在分布式存储里面的数据流是怎样的。
假设虚拟机的虚拟磁盘条代数是6条带默认大小是128K数据在经过条带、分片、副本复制之后在落盘的时候的分布情况如上图所示。数据写入硬盘会经过以下两个过程
1. 条带化
一块qcow2文件先切成很多个数据块其中每个数据块大小是128K每6个是一个条带组因为条代数是6(如上图中最上面“条带化”这几个字那一行)一个条带组可以并发地向磁盘中去写写完第一个条带组写第二个条带组
这里有一个聚合副本的概念如上图中主机A存储的数据就是聚合副本就是说数据其中一个副本会聚合在某一台主机上面另外一个副本会分散存放在其他主机上面。聚合副本主要是考虑数据本地化的效果使虚拟机读写磁盘的操作都在本地进行无需通过存储网络去读取从而提升虚拟机读写性能有聚合副本更好但聚合副本不是必须的。若虚拟机运行在主机A上主机A的存储空间利用率超过85%此时若向虚拟机新增一块磁盘此时新增的这块磁盘聚合副本就可能会落在其他主机上
2. 数据分片
数据写入之前先分片确定分片位置后面的条带化数据是跟随着分片的位置去写入。
数据条带化之后会将数据写入不同的数据盘写完之后所有的条带化数据加起来涨到4G假设分片以4G大小为单位涨到4G之后就会生成第二个分片组后面的条带也是对应的落在第二个分片组的位置。第二个分片组也有聚合副本和散列副本的概念对于聚合副本来说还是会落在同一个主机上面散列副本则会分布在其他主机上面所有的条带化数据都是根据事先定好的数据分片位置去写的 数据分布的四大策略分片位置确认
1、数据本地化- 聚合副本和散列副本并存策略
数据以qcow2文件为单位的其中一个副本会聚合在一台主机主机上称之为聚合副本另外一个副本会分散在最多三台主机上称之为散列副本。
虚拟机优先运行在聚合副本所在的主机上以达到数据本地化的效果。虚拟机对数据进行访问时可以直接从聚合副本中读取避免跨存储网络对数据进行读取以此可提高数据读取的吞吐性能突破网络带宽的瓶颈在全闪存模式下性能提升的效果尤为明显。
2、利用更多的SSD-主机内优先跨磁盘组分布策略
无论是聚合副本还是散列副本其分片组内的分片都会在主机内优先跨磁盘组分布。这是因无论是聚合副本还是散列副本其分片组内的分片都会在主机内优先跨磁盘组分布。
这是因为每个磁盘组都有一块SSD可为其磁盘组下的HDD提供缓存加速的能力尽可能跨越多个磁盘组意味着对条带组内的数据进行并发读写时可以利用到更多的SSD的缓存加速能力从而提升性能。
跨磁盘组分布是为了利用更多的ssd的性能
如上图假设主机A为8盘位两块SSD和6块HDD一块SSD和3块HDD组成一个磁盘组主机A上有2个磁盘组。此时条带化数据写入时分片1会写到磁盘组1中分片2则不会往磁盘组1去写而是写到磁盘组2中此时写入可以利用到两块SSD的性能散列副本也遵循跨磁盘组分布策略这样可以避免分片1-6都是落在了磁盘组1中从而只利用了一块SSD的性能
3、利用更多的HDD-磁盘组内优先跨磁盘分布策略
同一个分片组内的分片落入到同一个磁盘组时会在磁盘组尽可能地跨磁盘进行分布。如上图所示主机A同一个分片组内的分片尽可能保证不会落到同一块物理磁盘上。这是由于机械硬盘的随机I/O性能较差为了避免对一个条带组内的数据块进行并发读写时对机械硬盘产生随机的I/O。
在介绍的aSAN条带数默认是不允许设置为超过存储卷中任意一台物理主机上的数据盘个数也是基于同样的考虑保证数据的聚合副本中每个条带组内的数据块在聚合的主机内有足够的数据盘被用于并发读写而不会落到同一块物理磁盘。
跨磁盘分布是为了利用更多的hdd性能
如上图比如一个分片组6个分片如果说分片1、3、5全部写在磁盘组中1号盘的位置此时并发写入时分片3要写入只能等分片1的数据写完后才能写入此时数据写入只用到了磁盘组中一块hdd的性能所以跨磁盘分布可以同时将分片1、3、5写入磁盘组中不同的hdd更大的提升磁盘的读写利用率
所以说条代数不允许设置超过任意一个主机数据盘的个数也是基于这个考虑
4、尽可能分布均衡-优先选择组件剩余容量最多策略
为了保证存储卷内的数据分布均衡避免某台主机或某块磁盘出现数据热点。存储卷内主机或磁盘的剩余容量大小也是数据分布时的一个重要考量因素。例如
1.在能够满足策略1~策略3的分布策略的情况下分片会优先选择落在剩余容量较多的磁盘上以及聚合副本会优先选择落在剩余容量较多的主机上
2.若某台主机的空间使用率已超过85%则该主机上原有的qcow2文件其聚合副本所新增的分片将不再要求在该主机内进行聚合以及存储卷内新建的qcow2文件将不再选择该主机作为聚合副本的位置
3.若某块磁盘的空间使用率已超过85%则分片在选择落盘位置时会优先将该磁盘排除。
数据分片时会优先选择容量利用率低的磁盘通过这个策略去保证它的数据分布均衡如果主机A的存储空间已经超过85%其他主机利用率仅为70%这时新增的qcow2文件他的聚合副本就不会再选择主机A而是去选择其他存储更空闲的主机
也就是说分片选择位置会优先考虑磁盘容量、主机磁盘利用率等因素尽可能地使数据均匀分布并提升存储地IO并发性能
分片、条带化后地效果
总结起来通过以上的分布策略aSAN在尽可能保证数据分布均衡的同时可以有效地提升I/O的并发性能
当对一段数据进行写入操作时可以尽可能地并发写入到多个磁盘组的SSD中从而可以利用到多块SSD的性能。
当对一段数据进行读取操作时如果数据被缓存在SSD中即命中缓存时同样可以尽可能地从多块SSD中并发地读取利用到多块SSD的性能。如果所需读取的数据未被缓存在SSD中即未命中缓存时此时仍然可以尽可能多地从多块HDD中并发地读取利用到多块HDD的性能。
存储优化
数据平衡
1. 数据失衡
扩容包括添加磁盘或者添加主机
用户对某些虚拟机进行删除
磁盘或主机发生故障后完成重建故障的组件重新恢复上线
个别虚拟机数据在短时间内增长较快聚合副本
2、平衡实现的目标
保证在任何情况下数据在存储卷内的各个组件内尽可能地分布均衡避免产生极端的数据热点以及尽快地利用上新增组件的空间和性能保证各组件的资源得到合理利用。
目标1使得整个存储卷内最高和最低的磁盘容量使用率之差尽可能小
目标2避免发生存储卷内某块磁盘的空间已用满而其他磁盘仍有可用空间的情况
因此存储卷是否已经达到平衡是以磁盘为单位进行定义的通过保证磁盘间的均衡同时可以达到主机之间的容量尽可能均衡。
3、平衡触发的条件
1、计划内平衡
计划内平衡是在用户所计划的时间范围发起的数据平衡。当存储卷内不同硬盘的容量使用率差异较大时将对使用率较高的硬盘执行数据平衡迁移部分数据到容量使用率较低的硬盘上即目标1。
卷内最高和最低的磁盘容量使用率之差超过一定阈值时默认是30%即触发平衡直至卷内任意两块硬盘的使用率不超过一定阈值默认是20%。
2、自动平衡
自动平衡是无需用户进行干预由系统自动发起的数据平衡。是为了避免存储卷内某块磁盘的空间已用满而其他磁盘仍有可用空间
当存储卷内存在某块磁盘空间使用率已超过风险阈值时默认是90%即触发自动平衡直至卷内卷内最高和最低的磁盘容量使用率小于一定阈值默认是30%
数据平衡实现方式
目的端磁盘的个数可以是多个
当满足平衡的触发条件时会以分片为单位计算出源端磁盘上的各个分片其即将落入的目的端磁盘的位置位置可以是本主机内的其他磁盘或者其他主机内的磁盘。
目的端磁盘位置计算的原则是
必须满足主机互斥原则。即迁移后的分片两个副本不允许位于同一个主机上
性能最优原则。即优先选择可以使得迁移后的分片依然满足分布策略的磁盘作为目的端磁盘散列副本
容量最优原则。优先选择容量使用率低的目的端磁盘。
平衡保护措施
针对该分片上新增的数据是同时写入到源端和目标端即多写一份副本
平衡结束前对源和目标的数据进行校验确保平衡前后数据一致性
平衡完成后源端的分片会移动到临时目录保留一段时间后再删除 数据重建
以数据采用两副本策略为例当存储卷内的组件磁盘或主机发生物理故障时故障组件上的数据和存储在其他组件上的另一个副本仍然可以保障虚拟机的正常读写但此时存储卷的冗余度实际上已变低假如此时另一副本所在的组件也发生故障就会导致数据丢失 。
通过数据重建功能在组件发生故障后将以故障组件上数据的另一副本作为修复源以分片为单位在目的组件上重建出新的副本恢复副本的完整性实现系统自愈。
差异数据修复≠数据重建
系统检测到磁盘离线后系统将预留一段时间便于用户确认磁盘是否出现真实故障如磁盘出现松动离线人为拔插后恢复上线此时只需对该磁盘进行修复即可所需修复的数据为离线时间内的另一数据副本新增/修改的数据即差异数据修复。
场景存储网络中断后短时间内重新上线/某台主机在计划内离线进行维护并重新上线等。
差异数据修复是指当主机或硬盘离线短时间内又重新上线此时离线时间还不满足数据重建条件此时虚拟机又有新数据写入假设离线之前磁盘中文件是ABCD离线这段时间磁盘文件新增了EFG此时数据副本1中地数据为ABCDEFG而主机或硬盘上线后数据副本2中地数据仍是ABCD则触发差异数据修复将数据副本2中缺少地EFG新增至副本2中 当主机或硬盘发生了真实且不可修复地故障时会触发数据重建
由于副本存放满足主机互斥原则即使一台主机离线集群内其他主机也有该主机上所有文件的备份副本只需要以其副本作为修复源重建出缺少的文件保证原来的两副本还是两副本 仲裁机制
aSAN的副本机制使得数据除了拥有多个数据副本以外实际还同时存在仲裁副本。仲裁副本是一种特殊的副本它只有少量的校验数据占用的实际存储空间很小主要是用于防止数据副本发生脑裂的。
仲裁副本同样要求与数据副本必须满足主机互斥的原则因此至少三台主机组成的存储卷才具有仲裁副本。 脑裂
数据“脑裂”通常是由于网络发生故障数据的多个副本出现了隔离无法及时相互同步信息并且副本各自孤立地写入更新了不同的数据导致副本之间数据存在不一致并且是“各自都存在对方不存在的数据”这点和前面解释的差异数据修复是有区别的。 系统检测到磁盘离线后系统将预留一段时间便于用户确认磁盘是否出现真实故障如磁盘出现松动离线人为拔插后恢复上线此时只需对该磁盘进行修复即可所需修复的数据为离线时间内的另一数据副本新增/修改的数据即差异数据修复。
场景存储网络中断后短时间内重新上线/某台主机在计划内离线进行维护并重新上线等。 脑裂产生过程
第一步正常情况下虚拟机运行在主机A上数据会同时写入到A主机和B主机上的两个副本中两个副本上的数据完全一致。 第二步当主机之间的存储网络出现中断主机A和主机B相互隔离无法正常同步数据。此时虚拟机可以继续在主机A上运行但其新产生的数据只能往主机A的磁盘上写入更新。注意主机B上的数据处于旧状态数据已经出现不一致但注意此时还未发生数据脑裂。 第三步主机B经过心跳探测无法与主机A取得通信认为主机A发生故障。这时虚拟机的高可用HA机制生效主机B上重新拉起了该虚拟机即出现了“双实例”——两个相同的虚拟机。两个虚拟机各自往自己所运行位置上的主机写入新的数据。这时候两台主机上的副本出现不一致并且是各自都存在对方不存在的数据即出现了数据脑裂。 仲裁工作原理
仲裁机制的工作核心原理是“少数服从多数”即当虚拟机运行所在的主机上可访问到的数据副本数小于总副本数数据副本仲裁副本的一半时则禁止虚拟机在该主机上运行。反之虚拟机可以在该主机上运行。
第一步正常情况下虚拟机运行在主机A上数据会同时写入到A、B、C主机上数据副本在A、B主机上仲裁副本在C主机上。 第二步当主机A的存储网络中断无法与主机B和主机C正常通信。此时仲裁机制进行判断虚拟机运行所在的主机A上可访问到的数据副本仅有本地的一份副本数量小于总副本数3个2个数据副本1个仲裁副本的一半因此将主机A上的虚拟机进程kill掉。
主机A存储网络中断此时主机A只能访问到它自己根据总裁副本“少数服从多数”原则则主机A知道是自己挂了不会将虚拟机在主机A上拉起来 第三步仲裁机制判断对于主机B或主机C其可访问到的副本数量均为2个主机B的数据副本和主机C的仲裁副本满足大于总副本数的一半。因此可以在主机B和主机C任意一台主机中HA启动如下图所示虚拟机在主机B上启动运行。虚拟机运行过程中数据的写入可以正常更新至主机B和主机C上的副本。 第四步当存储网络恢复正常后系统检测到数据的两个副本存在不一致会触发数据修复以恢复副本的一致性此时将以主机B上的数据副本作为修复的数据源修复至主机A上的数据副本恢复数据副本的一致性。