CN107665090B - 实现全局磨损均衡的方法 - Google Patents
实现全局磨损均衡的方法 Download PDFInfo
- Publication number
- CN107665090B CN107665090B CN201610602296.3A CN201610602296A CN107665090B CN 107665090 B CN107665090 B CN 107665090B CN 201610602296 A CN201610602296 A CN 201610602296A CN 107665090 B CN107665090 B CN 107665090B
- Authority
- CN
- China
- Prior art keywords
- storage
- drivers
- drives
- drive
- driver
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种在存储系统中创建存储对象的方法及装置,存储系统包括多个驱动器,驱动器包括多个存储资源,该方法包括:从多个驱动器中随机选择N个驱动器;从N个驱动器获取N份空闲资源,其中,N个驱动器的每个提供且仅提供一份空闲资源;以及用N份空闲资源创建存储对象。本发明的实施例可以实现多个驱动器之间的磨损均衡,有效提升驱动器的使用寿命。
Description
技术领域
本发明涉及存储系统技术领域,特别涉及一种在存储系统中创建存储对象的方法及装置。
背景技术
Flash存储技术是指用NAND闪存作为介质存储数据的技术,如固态硬盘。相比于传统磁介质具有功耗低、读写速度快等优点。但是闪存存储介质的写次数是有限的,频繁的写操作可能造成闪存上存储数据的错误率上升、可靠性下降等故障。
现有的RAID(Redundant Arrays of Independent Disks,独立磁盘冗余阵列)技术将多个物理驱动器(例如,磁盘)聚合成驱动器(如存储盘)组,在驱动器组上划分条带,每个条带上通过冗余技术对数据提供保护。现有技术的RAID系统中,当多个驱动器中的一个或多个发生故障,会启动备用驱动器,并进行数据重构,以保持RAID系统的数据保护能力以及性能。在故障驱动器被更换后,需要再将备用驱动器中的数据复制回新驱动器。RAID系统可提供多种数据保护级别。常用的RAID级别有RAID0、RAID1、RAID5、RAID6。不同的 RAID算法能够容忍坏盘的数量不同。例如,RAID5系统能纠正一块驱动器发生故障,而 RAID6系统能纠正两块驱动器发生的故障。
传统RAID技术解决了数据保护的问题,但带来的问题是重构数据的速度较慢。因为重构数据的过程很可能是从其他所有的盘上读出数据,计算出恢复数据后写到一块新的驱动器上,因此新驱动器就会成为数据恢复过程的性能瓶颈。为了解决这一问题,并且对存储资源实现更为灵活有效的管理,提出把存储资源管理和数据保护划分的思路。即先把驱动器上的存储资源切分成小的存储单位,然后将不同驱动器上的存储单位用一定算法组织成更小但是更灵活的RAID组。由此当一个物理驱动器发生损坏时,重构出来的数据就有可能写到其他不同的驱动器上,从而避免了单驱动器造成的性能瓶颈。
RAID组技术实现了资源的按需分配,提高了存储的利用效率。每一个RAID组的组成单元不再是整个驱动器,而只是驱动器上的一部分存储资源。RAID组也不是静态创建好的,而是按需分配的。
发明内容
RAID组技术实际上是对存储盘资源的切分和重新组织,当需要把切分的资源重新组织成具有RAID保护级别的存储单元时,怎么选择资源就成为了一个重要的决策问题。RAID 组技术实现了资源的按需分配,提高了存储资源的利用效率,但是并没专门对闪存的特性做特殊优化。也就是说当底层存储资源是固态硬盘(SSD)时,如何使用驱动器上的资源需要区别于传统磁盘。因为闪存存储介质有别于普通磁盘的特性,在使用RAID组技术中需要特殊考虑以下问题:
不同于传统磁盘,闪存存储介质写操作的开销更大,且写次数是有限的。频繁的写可能造成驱动器损坏。如果对一组固态驱动器的使用不均衡,比如对单个或者多个存储盘的磨损过于严重,则有可能会造成这些盘首先坏掉。而RAID技术能够容忍的故障存储盘个数是一定的,故障存储盘个数超过RAID保护级别可容忍的限制则可能造成数据丢失。而且即使故障存储盘个数在RAID保护级别能够容忍的范围之内,数据重构阶段一直是RAID系统最脆弱的阶段,这时再发生坏盘极有可能造成数据丢失。
如果数据在各个存储盘之间的分布不平衡,则有可能使单存储盘或少数存储盘成为系统的性能瓶颈。对于价格更高的闪存存储来说,如果增加存储盘的个数不能形成性能的有效增长,就会形成比较大的浪费。
为了达到数据保护的需求,组成一个RAID组的多份存储资源不能来自单一驱动器。而如果资源使用不均衡,就有可能造成系统中可用资源还有很多,但只集中于一个或少数几个存储盘上,所以即使存储资源足够,仍然不可能组成新的RAID组。这时为了解决这种问题,只能通过数据迁移即重新分成数据,但这造成了数据的写放大,消耗了闪存介质的寿命。这种情况在有新存储盘加入或者新存储盘替换旧存储盘时更加突出。
本发明解决的问题包括:
(1)实现固态存储盘之间磨损均衡。避免对少数盘的过度使用造成少数存储盘首先达到使用寿命损坏而造成数据丢失。达到存储盘之间的磨损均衡。
(2)使用户数据能够在RAID组的各个存储盘之间平均分布,避免只使用少数存储盘的存储资源而使这些存储盘成为性能瓶颈。
(3)均衡使用各个存储盘的存储资源,避免空闲资源只存在于单个存储盘而无法组成 RAID组的情况。
本发明旨在至少在一定程度上解决上述相关技术中的技术问题。
根据本发明的第一方面,提供了根据本发明第一方面的在存储系统中创建存储对象的方法,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述方法包括:从所述多个驱动器中随机选择N个驱动器;从所述N个驱动器获取N份空闲资源,其中,所述N个驱动器的每个提供且仅提供一份空闲资源;以及用所述N份空闲资源创建存储对象。
根据本发明的第一方面的在存储系统中创建存储对象的方法,提供了根据本发明第一方面的第二在存储系统中创建存储对象的方法,其中,从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器以相同的几率被选中。
根据本发明的第一方面的第一在存储系统中创建存储对象的方法,提供了根据本发明第一方面的第三在存储系统中创建存储对象的方法,包括:所述从所述多个驱动器中随机选择 N个驱动器,包括:根据所述多个驱动器的权重从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器中的第一驱动器被选中的概率对应于所述第一驱动器的权重,其中驱动器的权重对应于驱动器中空闲资源的数量。
根据本发明的第一方面的第三在存储系统中创建存储对象的方法,提供了根据本发明第一方面的第四在存储系统中创建存储对象的方法,还包括:响应于驱动器中空闲资源数量的变化,调整驱动器的权重。
根据本发明的第二方面,提供了根据本发明第二方面的在存储系统中创建存储对象的方法,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述方法包括:从多个逻辑驱动器中选择N个逻辑驱动器;从所述N个逻辑驱动器获取N份空闲存储资源;以及用所述N份空闲存储资源形成存储对象。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第二在存储系统中创建存储对象的方法,其中,所述N个逻辑驱动器的每个提供且仅提供一份空闲资源。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第三在存储系统中创建存储对象的方法,其中,所述N个逻辑驱动器由N个驱动器提供,且所述N个驱动器的每个提供一个逻辑驱动器。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第四在存储系统中创建存储对象的方法,其中,从所述多个逻辑驱动器中随机选择N 个逻辑驱动器,使得所述多个逻辑驱动器以相同的几率被选中。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第五在存储系统中创建存储对象的方法,其中,从所述多个逻辑驱动器中随机选择N 个逻辑驱动器采用的是伪随机算法。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第六在存储系统中创建存储对象的方法,其中,所述逻辑驱动器分布在不同的物理驱动器上。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第七在存储系统中创建存储对象的方法,其中,所述存储资源是大块。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第八在存储系统中创建存储对象的方法,还包括:响应于驱动器中存储资源使用情况的变化,调整驱动器提供的逻辑驱动器的数量。
根据本发明的第二方面的在存储系统中创建存储对象的方法,提供了根据本发明第二方面的第九在存储系统中创建存储对象的方法,所述存储对象具有第一RAID级别。
根据本发明的第三方面,提供了根据本发明第三方面的在存储系统中创建存储对象的装置,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述装置包括:驱动器选择模块,用于从所述多个驱动器中随机选择N个驱动器;第一空闲资源获取模块,用于从所述N个驱动器获取N份空闲资源,其中,所述N个驱动器的每个提供且仅提供一份空闲资源;以及第一存储对象创建模块,用于使用所述N份空闲资源创建存储对象。
根据本发明的第三方面的在存储系统中创建存储对象的装置,提供了根据本发明第三方面的第二在存储系统中创建存储对象的装置,所述驱动器选择模块从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器以相同的几率被选中。
根据本发明的第三方面的在存储系统中创建存储对象的装置,提供了根据本发明第三方面的第三在存储系统中创建存储对象的装置,所述驱动器选择模块用于根据所述多个驱动器的权重从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器中的第一驱动器被选中的概率对应于所述第一驱动器的权重,其中驱动器的权重对应于驱动器中空闲资源的数量。
根据本发明的第三方面的第三在存储系统中创建存储对象的装置,提供了根据本发明第三方面的第四在存储系统中创建存储对象的装置,还包括:调整模块,用于响应于驱动器中空闲资源数量的变化,调整驱动器的权重。
根据本发明的第四方面,提供了根据本发明第四方面的在存储系统中创建存储对象的装置,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述装置包括:逻辑驱动器选择模块,用于从多个逻辑驱动器中选择N个逻辑驱动器;第二空闲资源获取模块,用于从所述N个逻辑驱动器获取N份空闲存储资源;以及第二存储对象创建模块,用于使用所述N份空闲存储资源形成存储对象。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第二在存储系统中创建存储对象的装置,所述N个逻辑驱动器的每个提供且仅提供一份空闲资源。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第三在存储系统中创建存储对象的装置,所述N个逻辑驱动器由N个驱动器提供,且所述N个驱动器的每个提供一个逻辑驱动器。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第四在存储系统中创建存储对象的装置,所述逻辑驱动器选择模块从所述多个逻辑驱动器中随机选择N个逻辑驱动器,使得所述多个逻辑驱动器以相同的几率被选中。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第五在存储系统中创建存储对象的装置,所述逻辑驱动器选择模块从所述多个逻辑驱动器中随机选择N个逻辑驱动器采用的是伪随机算法。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第六在存储系统中创建存储对象的装置,所述逻辑驱动器分布在不同的物理驱动器上。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第七在存储系统中创建存储对象的装置,所述存储资源是大块。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第八在存储系统中创建存储对象的装置,还包括:逻辑驱动器数量调整模块,用于响应于驱动器中存储资源使用情况的变化,调整驱动器提供的逻辑驱动器的数量。
根据本发明的第四方面的在存储系统中创建存储对象的装置,提供了根据本发明第四方面的第九在存储系统中创建存储对象的装置,所述存储对象具有第一RAID级别。
根据本发明的第五方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明第一方面至第二方面提供的在存储系统中创建存储对象的方法。
根据本发明的第六方面,提供一种包括程序代码的程序,当被载入存储系统并在存储系统上执行时,所述计程序代码使所述存储系统执行根据本发明第一方面至第二方面提供的在存储系统中创建存储对象的方法。
本发明的实施例可以实现多个驱动器之间的磨损均衡,有效提升驱动器的使用寿命。
根据本发明的第七方面,提供了根据本发明第七方面的第一创建存储对象的方法,包括:选择来自N个存储设备的M个大块;若提供M个大块的存储设备中的至少第一存储设备与第二存储设备的寿命超过第一阈值,从所述M个大块中将来自第一存储设备的第一大块剔除,并选择第二大块来替换所述第一大块并得到更新后的M个大块,使得提供第二大块的第三存储设备的寿命与第二存储设备的寿命的差值大于第二阈值或者提供第二大块的第三存储设备的寿命不超过第一阈值;以及利用更新后的M个大块创建存储对象。
根据本发明的第七方面的第一创建存储对象的方法,提供了根据本发明第七方面的第二创建存储对象的方法,其中若N个存储设备中至多一个存储设备的寿命超过第一阈值,从所述多个存储设备中随机选择M个存储设备;从所述M个存储设备获取M份空闲资源,其中,所述M个驱动器的每个提供且仅提供一份空闲资源;以及用所述M份空闲资源创建存储对象。
根据本发明的第七方面的第二创建存储对象的方法,提供了根据本发明第七方面的第三创建存储对象的方法,其中从所述多个存储设备中随机选择M个存储设备,使得所述多个存储设备以相同的几率被选中。
根据本发明的第七方面的第二创建存储对象的方法,提供了根据本发明第七方面的第四创建存储对象的方法,包括:根据所述多个存储设备的权重从所述多个存储设备中随机选择 M个存储设备,使得所述多个存储设备中的第一存储设备被选中的概率对应于所述第一存储设备的权重,其中存储设备的权重对应于存储设备中空闲资源的数量。
根据本发明的第七方面的第四创建存储对象的方法,提供了根据本发明第七方面的第五创建存储对象的方法,还包括:响应于存储设备中空闲资源数量的变化,调整存储设备的权重。
根据本发明的第七方面的第一创建存储对象的方法,提供了根据本发明第七方面的第六创建存储对象的方法,包括:从多个逻辑驱动器中选择N个逻辑驱动器;从所述N个逻辑驱动器获取N份空闲存储资源;以及用所述N份空闲存储资源形成存储对象。
根据本发明的第七方面的第六创建存储对象的方法,提供了根据本发明第七方面的第七创建存储对象的方法,还包括:响应于物理驱动器中存储资源使用情况的变化,调整物理驱动器提供的逻辑驱动器的数量。
根据本发明的第八方面,提供了根据本发明第八方面的第一创建存储对象的方法,包括:选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;若提供M个大块的存储设备中p个存储设备的寿命超过第一阈值,其中p>m,所述p个存储设备包括第一存储设备与除所述第一存储之外的p-1个存储设备,重新选择p-1个大块替换所述M个大块中来自所述p-1个设备的大块,使得提供重新选择的p-1个大块的多个存储设备中寿命超过第一阈值的q个存储设备与所述第一存储设备中,任意两个存储设备的寿命差值大于第二阈值。
根据本发明第八方面的第一创建存储对象的方法,提供了根据本发明第八方面的第二创建存储对象的方法,其中p、q、M、m是正整数。
根据本发明第八方面的第一或第二创建存储对象的方法,提供了根据本发明第八方面的第三创建存储对象的方法,还包括:利用替换后的所述M个大块创建存储对象。
根据本发明的第九方面,提供了根据本发明第九方面的第一创建存储对象的方法,包括:选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;若所述多个存储设备中有至少m+1个存储设备的寿命超过第一阈值,检查提供所述M个大块的存储设备中是否有p个存储设备的寿命超过第一阈值,其中p>m,所述p个存储设备包括第一存储设备与除所述第一存储之外的p-1个存储设备,重新选择p-1个大块替换所述M个大块中来自所述p-1个设备的大块,使得提供重新选择的p-1个大块的多个存储设备中寿命超过第一阈值的q个存储设备与所述第一存储设备中,任意两个存储设备的寿命差值大于第二阈值。
根据本发明第九方面的第一创建存储对象的方法,提供了根据本发明第九方面的第二创建存储对象的方法,其中若所述多个存储设备中有至少m+1个存储设备的寿命超过第一阈值,所述方法还包括:利用替换后的所述M个大块构建存储对象。
根据本发明第九方面的第一或第二创建存储对象的方法,提供了根据本发明第九方面的第三创建存储对象的方法,其中若所述多个存储设备中寿命超过第一阈值的存储设备不超过 m个,利用所述M个大块构建存储对象。
根据本发明第九方面的第一至第三创建存储对象的方法之一,提供了根据本发明第九方面的第四创建存储对象的方法,其中所述选择来自多个存储设备的M个大块,包括:从所述多个存储设备中随机选择M个存储设备。
根据本发明第九方面的第一至第三创建存储对象的方法之一,提供了根据本发明第九方面的第五创建存储对象的方法,其中所述选择来自多个存储设备的M个大块,包括:依据存储设备的存储资源使用情况为所述多个存储设备的每个设置权重,依据权重从所述多个存储设备中选择M个存储设备,其中权重高的存储设备被权重低的存储设备有更高的几率被选择。
根据本发明的第十方面,提供了根据本发明第十方面的第一创建存储对象的方法,包括:选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;若提供M个大块的存储设备中p个存储设备的寿命超过第一阈值,其中p>m,所述p个存储设备包括第一存储设备与除所述第一存储之外的p-1个存储设备,重新选择第一大块替换所述M个大块中来自所述p-1个设备的大块之一,使得提供所述第一大块的存储设备的寿命不超过第一阈值或者提供所述第一大块的存储设备的寿命与所述第一存储设备的寿命的差值大于第二阈值。
根据本发明的第十一方面,提供了根据本发明第十一方面的第一创建存储对象的方法,包括:选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;若提供M个大块的存储设备中p个存储设备的寿命超过第一阈值,其中p>m,重新选择至少p-m个大块替换所述M个大块中来自所述p个存储设备的p个大块中的至少p-m个大块,其中提供重新选择的至少p-m个大块的多个存储设备的寿命均不超过第一阈值。
根据本发明的第十二方面,提供了根据本发明第十二方面的第一创建存储对象的装置,包括:大块选择模块,用于选择来自N个存储设备的M个大块;大块替换模块,用于若提供M个大块的存储设备中的至少第一存储设备与第二存储设备的寿命超过第一阈值,从所述M个大块中将来自第一存储设备的第一大块剔除,并选择第二大块来替换所述第一大块并得到更新后的M个大块,使得提供第二大块的第三存储设备的寿命与第二存储设备的寿命的差值大于第二阈值或者提供第二大块的第三存储设备的寿命不超过第一阈值;以及存储对象创建模块,用于利用更新后的M个大块创建存储对象。
根据本发明的第十三方面,提供了根据本发明第十三方面的第一创建存储对象的装置,包括:大块选择模块,用于选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;大块替换模块,用于若提供M个大块的存储设备中p个存储设备的寿命超过第一阈值,其中p>m,所述p个存储设备包括第一存储设备与除所述第一存储之外的p-1个存储设备,重新选择p-1个大块替换所述M个大块中来自所述p-1个设备的大块,使得提供重新选择的p-1个大块的多个存储设备中寿命超过第一阈值的q个存储设备与所述第一存储设备中,任意两个存储设备的寿命差值大于第二阈值。
根据本发明的第十四方面,提供了根据本发明第十四方面的第一创建存储对象的装置,包括:大块选择模块,用于选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;大块替换模块,用于若所述多个存储设备中有至少m+1个存储设备的寿命超过第一阈值,检查提供所述M个大块的存储设备中是否有p个存储设备的寿命超过第一阈值,其中p>m,所述p个存储设备包括第一存储设备与除所述第一存储之外的p-1 个存储设备,重新选择p-1个大块替换所述M个大块中来自所述p-1个设备的大块,使得提供重新选择的p-1个大块的多个存储设备中寿命超过第一阈值的q个存储设备与所述第一存储设备中,任意两个存储设备的寿命差值大于第二阈值。
根据本发明的第十五方面,提供了根据本发明第十五方面的第一创建存储对象的装置,包括:大块选择模块,用于选择来自多个存储设备的M个大块,其中M个大块用于构建具有第一RAID级别的存储对象,所述第一RAID级别能够容忍向所述存储对象提供大块的m个存储设备出现故障;大块替换模块,用于若提供M个大块的存储设备中p个存储设备的寿命超过第一阈值,其中p>m,所述p个存储设备包括第一存储设备与除所述第一存储之外的p-1个存储设备,重新选择第一大块替换所述M个大块中来自所述p-1个设备的大块之一,使得提供所述第一大块的存储设备的寿命不超过第一阈值或者提供所述第一大块的存储设备的寿命与所述第一存储设备的寿命的差值大于第二阈值。
根据本发明的第十六方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明第七方面至第十一方面提供的基于存储对象的数据重构方法。
根据本发明的第十七方面,提供一种包括程序代码的程序,当被载入存储系统并在存储系统上执行时,所述计程序代码使所述存储系统执行根据本发明第七方面至第十一方面提供的基于存储对象的数据重构方法。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明实施例的存储系统的架构;
图2示出了根据本发明实施例的存储对象的结构;
图3示出了根据本发明又一实施例的存储对象的结构;
图4是根据本发明一个实施例的在存储系统中创建存储对象的流程图;
图5是根据本发明又一实施例的在存储系统中创建存储对象的示意图;
图6是根据本发明另一个实施例的在存储系统中创建存储对象的流程图;
图7A-图7D描述了根据本发明实施例的存储对象创建时的大块选择过程;以及
图8示出了根据本发明实施例的存储对象创建过程的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参看图1,图1示出了根据本发明实施例的存储系统的架构。根据本发明的存储系统包括计算机或服务器(统称为主机)以及耦合到主机的多个存储设备(例如,驱动器)。优选地,驱动器是固态存储盘(SSD)。可选地,根据本发明的实施例中也可以包括磁盘驱动器。
通过存储资源池来维护各个驱动器提供的存储资源。存储资源池中记录了各个驱动器中的数据块或数据大块(Chunk,简称大块)。作为举例,数据大块是预定大小的逻辑空间或物理空间连续的多个数据块。数据大块的大小,作为举例,可以是数百KB或 MB。可选地,存储资源中记录的是各个驱动器中尚未分配给存储对象的数据块或数据大块,这些数据块或数据大块又被成为空闲数据块或空闲数据大块。存储资源池也是一种虚拟化技术,将来自物理驱动器的存储资源虚拟化为数据块或数据大块以供上层访问或使用。在存储系统中,存储资源池可以有多个,而在图1的例子中,仅展示了单一的存储资源池。
在根据本发明的实施例中,维护每个驱动器的寿命,从而可获知每个大块所属的驱动器的寿命。有多种方式表征驱动器的寿命,例如,对于固态驱动器,以其闪存所经历的擦写次数(Program Erase Cycles)或固态驱动器的数据写入量作为寿命的标志。还可采用驱动器的工作时间、驱动器的错误比特率等指标表征驱动器的寿命。根据驱动器的寿命,将驱动器所处的阶段分为青年时期、中年时期和/或老年时期。通过设置一定的寿命阈值,将寿命超过阈值的驱动器定义为老年驱动器,将寿命未超过阈值的驱动器定义为青年/中年驱动器。例如,将驱动器的寿命量化为0-100,0代表新驱动器,而100代表寿命已经耗尽的驱动器,将90定义为阈值,寿命达到或超过90的驱动器为老年驱动器。
根据本发明实施例中提供的存储对象,代表存储系统的部分存储空间。存储对象是带有RAID功能的存储单元,后面会结合图2详细描述存储对象结构。根据本发明的实施例中提供存储对象层,存储对象层提供多个存储对象。存储对象可以被创建和销毁。一个存储对象被创建时,通过分配器从存储资源池中获取所需数量的大块,这些大块组成存储对象。一个大块在同一时刻可以仅属于一个存储对象。已经被分配给存储对象的大块不会再被分配给其他存储对象。存储对象被销毁时,构成该存储对象的大块被释放回存储资源池,并可被再次分配给其他存储对象。
图2示出了根据本发明实施例的存储对象的结构。存储对象包括多个数据块或数据大块。在图2的例子中,存储对象包括大块220、大块222、大块224以及大块226。构成存储对象的大块来自不同的驱动器。每个驱动器向一个存储对象提供至多一个大块。参看图2,大块220来自驱动器210,大块222来自驱动器212,大块224来自驱动器 214以及大块226来自驱动器216。从而,当单一驱动器发生故障时,存储对象中的一个或少数大块无法访问,而通过存储对象的其他大块,能够重建存储对象的数据,以满足数据可靠性的要求。
通过RAID技术为存储对象提供数据保护,并提供存储对象的高性能访问。参看图2,存储对象包括多个RAID条带(条带230、条带232……条带238),每个条带由来自不同大块的存储空间组成。同一条带的来自不同大块的存储空间可具有相同或不同的地址范围。条带是存储对象的最小写入单位,从而通过向多块驱动器的并行写入数据来提升性能。存储对象的读操作没有大小限制。在条带中实现RAID技术。依然参看图2,构成条带230的来自4个大块的存储空间中,3个存储空间用于存储用户数据,而另1 个存储空间用于存储校验数据,使得在条带230上提供RAID5级别的数据保护。
可选地,每个大块中还存储元数据信息。在图2的例子中,大块220-大块226的每个上都保存相同的元数据信息,从而保证了元数据信息的可靠性,即使属于同一存储对象的部分大块发生故障,从其他大块中依然能获取元数据信息。元数据用于记录大块所属的存储对象、大块所在存储对象的数据保护级别(RAID级别)、大块的擦写次数等信息。
图3示出了根据本发明又一实施例的存储对象的结构。多个存储对象形成存储系统中用户可见的存储空间。当用户第一次写存储空间的某个地址时,为这片地址区域产生新的存储对象,这时发生一次资源分配以创建存储对象,并将所创建的存储对象与存储空间的地址区域相关联。存储系统中包括多个驱动器(参见图3,驱动器0、驱动器1、驱动器2与驱动器3),将驱动器的存储空间切分成固定大小的存储资源,称为大块。若干大块通过RAID算法组织形成一个数据保护单元,称为存储对象。参看图3,驱动器 0提供大块0、大块i……,驱动器1提供大块1、大块j……,驱动器2提供大块2、大块k……,驱动器3提供大块3、大块t……。在图3所示的实施例中展示了2个存储对象,由驱动器0、驱动器1、驱动器2的每个提供1个大块(大块0、大块1与大块2) 构成存储对象m,而由驱动器1、驱动器2与驱动器3的每个提供1个大块(大块j、大块k与大块t)构成存储对象n。
作为举例,在图3的实施例中,大块的存储容量为MB(Megabyte,兆字节)级别,而驱动器的存储容量为TB(Terabyte,千吉字节)级别。从而在存储系统中存储对象的创建是频繁发生的,通过控制存储对象的创建过程可以有效控制存储资源的使用并实现全局磨损均衡。
在根据本发明的实施例中,在创建存储对象时,基于驱动器的权重从多个驱动器中随机挑选为存储对象提供大块的驱动器,从而保证对驱动器资源的均衡使用,来实现全局磨损均衡。
图4展示本发明一个实施例的在存储系统中创建存储对象的流程图。
参看图4,为创建由N个大块构成的存储对象,从存储系统的多个驱动器中随机选择N 个驱动器(S410)。为创建存储对象所选择的驱动器数量N取决于所创建的存储对象的RAID 级别与存储容量。也参看图3,存储系统中包括4个驱动器,分别为驱动器0、驱动器1、驱动器2与驱动器3,以及N=3。为创建存储对象m,从存储系统的4个驱动器中随机选择 3个驱动器。作为举例,选择的结果是驱动器0、驱动器1与驱动器2。在另一个例子中,为创建存储对象n,通过随机选择得到驱动器1、驱动器2与驱动器3。
从所选择的3个驱动器的每个中各获取1份空闲资源(例如,1个大块)(S420),并用所获取的3份空闲资源构建存储对象(S430)。在图3的例子中,为创建存储对象m而随机选取得到驱动器0、驱动器1与驱动器2,从驱动器0中获取大块0,从驱动器1中获取大块1以及从驱动器2中获取大块2,用于创建存储对象m。在图3的另一个例子中,为创建存储对象n而随机选取得到驱动器1、驱动器2与驱动器3,从驱动器1中获取大块j,从驱动器2中获取大块k以及从驱动器3中获取大块t,用于创建存储对象n。
为从驱动器中获取大块,为每个驱动器维护资源分配表,用于记录驱动器上所有大块的使用情况。通过驱动器的资源分配表,可获得驱动上未被使用的空闲大块,并选择空闲大块来构建存储对象。
在根据本发明的实施例中,在构建存储对象时,通过对驱动器的随机选取,实现多个驱动器的空闲资源的均衡使用,从而实现在多个驱动器之间的全局磨损均衡,避免对少数驱动器的过度使用造成少数驱动器首先达到使用寿命损坏而造成数据丢失。使用户数据能够在存储对象对应的各个驱动器之间平均分布,也避免只使用少数驱动器的存储资源而使这些驱动器因负载中而成为存储系统的性能瓶颈。同时,通过均衡使用各个驱动器的存储资源,也避免空闲资源只存在于单个驱动器而无法组成用于构建存储对象的RAID组的情况。
在根据本发明的实施例中,存储对象的创建发生在向存储系统写入数据器件,通过将存储系统中的写入数据均衡的分布到各个驱动器上,保证各个驱动器承载的写入数据量大致相同,因而各个驱动器被写入的次数也大致相同,因此各个驱动的寿命也可以达到相对均衡。而且由于数据在各个驱动器上的分布是均匀的,因此不会出现少数驱动器成为系统的性能瓶颈的问题。各个驱动器的存储资源被均衡利用,不会出现系统中的空闲资源集中在少数驱动器的情况。
在根据本发明的进一步的实施例中,从多个驱动器中随机选择N个驱动器的原则为:
(1)优先选择多个驱动器中的空闲资源的数量大的驱动器。例如:根据每个驱动器的空闲资源的数量为驱动器设置权重,并根据驱动器的权重从多个驱动器中随机选择N个驱动器,使得多个驱动器中的驱动器D被选中的概率对应于驱动器D的权重。具有高权重的驱动器,在随机选择中被选中的几率更高。
(2)如果多个驱动器中的空闲资源的数量差不多,则可以采用例如随机或伪随机算法从多个驱动器中随机选择N个驱动器,从而使得多个驱动器被选中的几率相同。
(3)对于每个存储对象的创建,被选出驱动器提供且仅提供一份存储资源(例如,大块)。
通过驱动器的资源分配表,可获得驱动上未被使用的空闲大块,并选择空闲大块来构建存储对象。通过资源分配表可以确定每个驱动器上空闲资源(大块)的数量。当驱动器中空闲资源数量的变化时,对资源分配表中的相应表项进行修改,从而可以响应于驱动器中空闲资源数量的变化,调整驱动器的权重。
在另一个例子中,在需要创建存储对象时,使用带权重的伪随机算法选择驱动器,其中,权重越大的驱动器被选择到的概率越大。驱动器的权重与驱动器的空闲资源的数量正相关。例如:根据驱动器的空闲资源数量设置驱动器的权重,空闲资源越多,对应的权重越大。
因而在基于权重的随机选择驱动器的过程中,如果各个驱动器的空闲资源差不多,那么可将各个驱动器的权重设为相等。此时,通过随机选择各个驱动器,来保证各个驱动器的资源使用是均衡的。其中,随机选择算法保证选择事件多次重复发生时每个驱动器被选择的概率是相同的,因而在多个随机选择启动器后,每个驱动器的存储资源被使用的情况也是大致相同的。如果各个驱动器的空闲资源数量存在较大差异,通过设置权重来实现优先使用空闲资源较多的驱动器。例如,如果一块驱动器的空闲资源较多,则对其设置较大的权重,从而该驱动器被选择到的几率加大,从而保证空闲资源较多的驱动器以较高的速率消耗存储资源,直到所有驱动器的存储资源达到平衡(空闲资源数量上一致或接近)。例如:当有新的驱动器被加入存储系统,或者用新驱动器替换掉存储系统中的故障驱动器时,由于新的驱动器的空闲资源较大,因此,新驱动器被选中的概率也较大,从而加速了新的驱动器的空闲存储资源的使用。从而,新加入的驱动器的存储资源的使用情况会很快与其它的驱动器达到平衡。
图5是根据本发明又一实施例的在存储系统中创建存储对象的示意图。如图5所示,存储系统中包括驱动器0、驱动器1、驱动器2与驱动器3。驱动器0、驱动器1与驱动器2的存储资源使用情况基本相同,这三个驱动器的权重均为W1。而驱动器3的存储资源使用情况较少,即:驱动器3中空闲资源较多,将驱动器3的权重设为W2,W2>W1。作为举例,驱动器3的空闲资源是驱动器1的空闲资源的2倍,因而设置W2=2*W1。为进行促进驱动器的随机选择,提供逻辑驱动器。由物理驱动器提供逻辑驱动器,每个物理驱动器提供的逻辑驱动器的数量同该物理驱动器的空闲资源数量或权重对应。
在图5的例子中,物理驱动器0至物理驱动器2的空闲资源数量相近,具有相同的权重 W1,由物理驱动器0至物理驱动器2的每个物理驱动器提供1个逻辑驱动器(分别是逻辑驱动器0、逻辑驱动器1与逻辑驱动器2)。物理驱动器3的空闲资源较多,因而提供较多数量的逻辑驱动器,作为举例,由于物理驱动器3的权重W2是W1的2倍,因而由物理驱动器3提供2个逻辑驱动器(包括逻辑驱动器3与逻辑驱动器4)。
在根据本发明的进一步的实施例中,为创建存储对象,随机选择逻辑驱动器来提供空闲资源(大块)。为随机选择驱动器,使每个逻辑驱动器被选中的机率相同。由于物理驱动器 3提供了2个逻辑驱动器,从而使得物理驱动器3被选中的机率是其他物理驱动器的2倍。进一步地,在随机选择逻辑驱动器中,若选中的逻辑驱动器来自相同的物理驱动器(例如,选中逻辑驱动器3与逻辑驱动器4),则保留逻辑驱动器3与逻辑驱动器4之一(例如,逻辑驱动器3),以及在来自物理驱动器3之外的物理驱动器的逻辑驱动器,来替换逻辑驱动器4。以此方式,在随机选择驱动器时,不必考虑权重,从而简化随机选择的过程。
图6是根据本发明另一个实施例的在存储系统中创建存储对象的流程图。为实施全局磨损均衡,为每个物理驱动器确定其所提供的逻辑驱动器的数量(610)。作为举例,根据物理驱动器的存储资源使用情况确定其提供的逻辑驱动器的数量。使具有较多空闲资源的物理驱动器提供较多数量的逻辑驱动器。作为举例,根据各个物理驱动器的空闲资源的数量确定物理驱动器的权重。以及根据权重设置各物理驱动器提供的逻辑驱动器的数量,例如,参看图 5,物理驱动器3的权重W2是物理驱动2的权重W1的2倍,则使物理驱动器3提供的逻辑驱动器的数量是物理驱动器2提供的逻辑驱动器数量的2倍。
为创建包括N个大块的存储对象,从多个逻辑驱动器中随机选择N个逻辑驱动器(620)。也参看图5,为创建存储对象,从存储系统的5个逻辑驱动器中随机选择3个逻辑驱动器。作为举例,选择的结果是逻辑驱动器1、逻辑驱动器2与逻辑驱动器4。从多个逻辑驱动器中选择N个逻辑驱动器的原则为:从多个逻辑驱动器中随机选择N个逻辑驱动器,使得多个逻辑驱动器以相同的几率被选中。例如:从多个逻辑驱动器中随机选择N个逻辑驱动器采用的是伪随机算法。
从所选择的3个逻辑驱动器(逻辑驱动器1、驱动器2与驱动器4)的每个中各获取1份空闲资源(例如,1个大块)(630),并用所获取的3份空闲资源构建存储对象(640)。从逻辑驱动器中获取空闲资源,为从提供逻辑驱动器的物理驱动器中获取空闲资源。在图5的例子中,选择的3个逻辑驱动器(逻辑驱动器1、驱动器2与驱动器4),其对应的物理驱动器分别为物理驱动器1、物理驱动器2与物理驱动器4,因而从物理驱动器1、物理驱动器2 与物理驱动器4的每个中各获取一个大块来构成存储对象。
在另一个例子中,在步骤610,通过随机选择得到逻辑驱动器2、逻辑驱动器3与逻辑驱动器4。检查是否有至少2个逻辑驱动器对应于相同的物理驱动器。参看图5,为创建存储对象,若随机选择得到了逻辑驱动器、逻辑驱动器3与逻辑驱动器4。检查发现,逻辑驱动器3与逻辑驱动器4来自相同的物理驱动器3,为保证构成存储对象的大块来自不同的物理驱动器,替换逻辑驱动器3与逻辑驱动器4之一。在图5的例子中,选择逻辑驱动器0或逻辑驱动器1之一来替换替换逻辑驱动器3与逻辑驱动器4中的一个。
进一步地,响应于各个物理驱动器中存储资源使用情况的变化,调整物理驱动器提供的逻辑驱动器的数量。从而使得具有较多空闲资源的物理驱动器有更高的几率被选中来构建存储对象。
根据本发明实施例的在存储系统中创建存储对象的方法,实现多个物理驱动器之间的磨损均衡,避免对少数物理驱动器的过度使用造成少数物理驱动器首先达到使用寿命损坏而造成数据丢失。使用户数据能够在存储对象对应的各个物理驱动器之间平均分布,避免只使用少数物理驱动器的存储资源而使这些物理驱动器成为性能瓶颈。均衡使用各个物理驱动器的存储资源,也减少了空闲资源只存在于单个物理驱动器而无法组成RAID组的情况。通过合理使用驱动器的存储资源,避免对一块或几块驱动器过度磨损,造成这些驱动器首先达到写寿命。由此产生了根据本发明实施例的全局资源磨损均衡技术,其实质是分配存储资源时通过考虑驱动器的空闲容量间接考虑了驱动器的寿命,以达到所有驱动器的寿命都比较均衡,不会出现少数驱动器被首先写到寿命结束的情况。有多种方式表征驱动器的寿命,例如,对于固态驱动器,以其闪存所经历的擦写次数(Program Erase Cycles)或固态驱动器的数据写入量作为寿命的标志,还可以将其闪存响应读、写和或擦除操作的时间作为寿命的度量。
发明人还意识到,RAID系统中如果始终保证所有驱动器的磨损均衡并不是总是有益的。因为这意味着所有的驱动器寿命是同步变老的,也就意味着会同时到达尽头。
对RAID系统来说可能会出现同一时间或者很短的时间内多块或所有驱动器集体坏掉的情况。任何的RAID系统容忍的坏盘数量都是有一定限制的,这种情况对任何一种RAID系统来说都是灾难性的。因此磨损均衡适用于所有驱动器的寿命都还未达到即将结束时,如果所有驱动器都处于青年或者中年时期(生命周期的前期),此时平衡所有驱动器的磨损情况有利于驱动器的使用寿命与RAID系统的可靠性。但是当所有或者有多块驱动器都处于老年时期时,再继续使用磨损均衡策略将引入高的故障率。
本发明的另一目的是避免全局磨损均衡导致所有驱动器一起损坏的情况发生。达到当有驱动器因为寿命耗尽发生损坏时,对受影响的RAID组来说,故障驱动器个数都在其RAID保护级别能够容忍的范围之内,从而避免数据丢失。
在根据本发明的实施例中,在创建存储对象时,通过基于寿命挑选提供大块的驱动器,来实现磨损逆均衡,以避免全局磨损均衡导致所有驱动器一起损坏的情况发生。每个存储对象的存储资源(大块)必需满足一定条件,才被认为是安全的。在每次为创建存储对象而分配资源(大块)时,分配的存储资源必需满足一定条件,才能组成存储对象。作为举例,为提供安全的数据存储,需要满足的条件包括:(1)构成存储对象的任意大块都来自中/青年驱动器;(2)若条件(1)不满足,则构成存储对象的来自老年驱动器的大块中,任意两个大块的寿命差值大于一个安全差值。其中,大块的寿命用提供大块的驱动器的寿命来指示。安全差值的含义在于,对于任意两块老年驱动器,如果他们的寿命差在这个安全差值以上,也认为他们同时发生故障的概率在可以接受的范围之内,这样的两块老年驱动器可以同时提供大块来组成存储对象。
当存储系统中没有驱动器处于老年期时,可以采用结合本发明图1-图6所描述的实施例提供的全局磨损均衡策略。当有驱动器进入老年期以后,需要考虑在创建存储对象时对分配的大块的寿命进行检查。在一个例子中,存储系统中有驱动器进入老年期后,在每次创建存储对象时,对分配的大块寿命进行检查。在另一个例子中,考虑存储对象的RAID级别。如果进入老年期的驱动器数量较少,不影响存储对象的数据保护能力时,在创建存储对象时可以不进行检查。例如创建RAID 5级别的存储对象,而存储系统中仅有一块驱动器处于老年期,或者创建RAID 6级别的存储对象,而存储系统中仅有两块驱动器处于老年期,此时在最坏情况下,驱动器的寿命也不会影响存储对象的数据安全,在创建存储对象时可以不进行寿命检查。
当有超过存储对象的RAID保护级别允许坏盘数的驱动器进入老年期时,则要对每次创建存储对象时分配的大块进行寿命检查。例如,创建RAID 5级别的存储对象,而存储系统中超过一块驱动器处于老年期,或者创建RAID 6级别的存储对象,而存储系统中有超过两块驱动器处于老年期,则在创建存储对象时要对分配的大块进行寿命检查。在创建存储对象时,首先选择多个大块。可根据多种策略选择大块。例如,根据实现全局均衡的大块选择策略,随机选取大块的策略,和/或根据提供大块的驱动器空闲容量的大块选择策略,选择提供大块的驱动器。然后对这些大块或大块所在驱动器进行寿命检查。
如果这次大块选择选到了超过存储对象的RAID级别最大容忍故障驱动器个数的“老年”驱动器,则进行大块的重新选择。在大块重新选择时,首先任意选定一块寿命超过阈值的驱动器(即老年驱动器)作为目标驱动器,然后将所选出的其他驱动器中和目标驱动器寿命相近的驱动器剔除,进行重新选择。寿命相近是指两块驱动器的寿命差值小于安全差值。这次选择的驱动器期望是中青年的驱动器,也可以是和目标驱动器寿命差值在安全差值范围之外的驱动器。如果不能找到满足上述要求的驱动器,那么这次存储对象创建失败,或者可以通知用户存储系统的数据已经处于不安全的状态。大块重新选择的步骤可以被重复执行,直到为所创建的存储对象所选择的所有的老年驱动器的任意两两之间的寿命差值都大于安全差值。
可选地,如果重试了足够多的次数还没有找到符合要求的结果,则这次存储对象的创建失败。结合图7A-图7D,详细描述了根据本发明实施例的存储对象创建时的大块选择过程。通过根据本发明实施例提供的方法在存储对象创建时选择大块,来实现存储系统的驱动器的磨损逆均衡。在图7A-图7D的例子中,将寿命不小于90的驱动器定义为老年驱动器,而驱动器寿命的安全差值是3,存储对象包括来自4个驱动器的4个大块,数据保护级别是RAID 5。参看图7A,为创建存储对象,在第一次大块选择中,选中了来自驱动器710、驱动器720、驱动器730与驱动器740的大块。其中出现了3块老年驱动器,驱动器710的寿命是95,驱动器730的寿命是96而驱动器740的寿命是94。在图7A中,由驱动器下方的数字指示驱动器的寿命。由来自驱动器710、驱动器720、驱动器730与驱动器740的大块构成存储对象显然是不安全的,因为老年驱动器710、驱动器730与驱动器740可能同时发生故障,导致存储对象的数据无法读取。要获得安全的存储对象,需要使得存储对象中同时出现两个大块故障的几率足够低。
在此情况下,需要为该存储对象进行第二次大块选择。为进行第二次大块选择,从老年驱动器710、驱动器730与驱动器740中随机选取一块老年驱动器作为目标驱动器,在图7A的例子中,选择驱动器740作为目标驱动器(在图7A中,用箭头指示)。第二次大块选择的目标为用中青年驱动器,或者寿命小于91或寿命大于97的老年驱动器,来替换除目标驱动器之外的其他两块老年驱动器(老年驱动器710与驱动器730)。图 7B示出了第二次大块选择的结果。在第二次大块选择中,选出了驱动器712来替换驱动器710,以及选出了驱动器732来替换驱动器730。第二次分配之后进行检查,驱动器712的寿命与驱动器732的寿命均为98。由于驱动器712与驱动器732均属于老年盘,且二者的寿命差值(0)不大于安全差值,那么需要对这两块盘进行第三次大块选择。在第三次大块选择时,选择驱动器712与驱动器732之一作为目标驱动器。在图7B中,由箭头所指示的,选中驱动器732作为目标驱动器。第三次大块的目标是和驱动器732 的寿命(98)相差安全差值的驱动器。需要指出的是,选择大块与选择驱动器有相同的效果,因为对于一个存储对象,每个驱动器提供不超过1个大块。以及在第三大块选择中,理想地,选择的目标驱动器应当是(1)非老年驱动器,或者(2)与驱动器740的寿命差大于安全差值,且与驱动器732的寿命差值大于安全差值的老年驱动器。然而,在根据本发明的一个实施例中,为实施简便,在第三大块选择中,可以仅以与当前目标驱动器732的寿命差值大于安全差值为目标。继续参看图7C,第三次大块选择中,选中了驱动器714(寿命为91)来替换驱动器712,由于驱动器714与驱动器732、驱动器740 的寿命差值均大于安全差值,因而这次大块选择成功,为存储对象找到了合适的大块。而图7D则示出了第三次大块选择依然失败的例子。在图7D中,第三次选择选到了驱动器714’(寿命为93),由于驱动器714’属于老年驱动器,且同第一次选出的目标驱动器740的寿命差值不满足条件,那么第三次大块选择依然失败。作为举例,由于3次大块选择失败,认为在存储系统中已经难以找到合适的多个大块来创建存储对象,存储对象的创建失败。
在图7A-图7D示出的例子中,每次选择大块时,以随机的方式选择大块,并检查所选出的大块的寿命是否符合条件。所属领域技术人员将意识到,有多种其他选择大块的手段。例如,将候选的大块按寿命分组,从而可主动选择出来自青年驱动器的大块或老年驱动器的大块。进一步地,对老年驱动器可以进一步划分年龄等级,例如,将驱动器划分为年龄分别属于90-92、93-95、96-98、99-100等多个等级,若目标驱动器属于90-92年龄等级,则从96-98与99-100年龄等级的组中,可以便捷地选择出满足年龄差值条件的驱动器。在另一个例子中,在图7A的情况下,选出了3个来自老年驱动器的大块时,对于RAID 5保护级别的存储对象,保留其中一个大块,并将另外2个大块替换为来自青年驱动器的大块。在另一个实施例中,存储对象的数据保护等级是RAID 6,允许构成存储对象的大块中,有2个大块同时出现故障。那么当创建存储对象时,若第一次选出的M个大块中有超过2个大块(例如,p个)来自老年驱动器,选择其中两个来自老年驱动器的大块作为目标块或目标驱动器。以及再次选择p-2个大块,以替换p-2 个来自老年驱动器的大块。作为举例,重新选择的p-2个大块均来自非老年驱动器时,能够满足存储对象的数据安全的要求。
作为另一个例子,重新选择大块的目标是,构成存储对象的老年大块中,任意小于安全差值的年龄差值区间内的大块数量不多于2个。图8示出了根据本发明实施例的存储对象创建过程的流程图。为创建存储对象,从存储系统的存储资源池中选择M个大块(810)。每个大块来自存储系统的一个驱动器,且避免选择来自同一驱动器的两个或更多大块,从而当驱动器出现故障时,通过存储对象的其他大块能够恢复出故障驱动器的大块的数据。存储对象具有RAID级别,例如,RAID5、RAID6或者其他RAID级别。随机地从存储资源池中选择M个大块,并且满足每个驱动器至多向一个存储对象提供一个大块的要求。在选择大块时,还可根据驱动器的容量为驱动器设置被选中的几率。具有更多空闲空间的驱动器被设置更高的被选中几率。
检查选出的M个大块中来自老年驱动器的大块数量p是否超过阈值m(820)。M、m 以及p均为正整数。阈值与存储对象的RAID级别相关。若存储对象的RAID级别是 RAID5,只能容忍构成存储对象的M个大块中同时出现一个故障大块,那么阈值m为 1;而对于RAID6,阈值m为2。可选地,不是每次创建存储对象都需要实施步骤820。例如,存储对象的RAID级别为RAID 5,而存储系统的多个驱动器中不存在老年驱动器或仅存在一个老年驱动器,那么选则出的M个大块中,不可能存在两个来自老年驱动器的大块,在此情况下,无需实施步骤820。因而可选地,在识别到存储系统中的老年驱动器数量超过阈值时,才在选择出M个大块后,执行步骤820的检查。
若选择出的M个大块中,来自老年驱动器的大块数量p不超过阈值m,则以选择出的M个大块创建存储对象。若选择出的M个大块中,来自老年驱动器的大块数量p超过阈值m,重新选择p-m个大块(830)。有多种重新选择p-m个大块的策略。例如,使重新选择的p-m个大块均来自非老年驱动器,并使得重新选择后的M个大块均来自不同的驱动器,每个驱动器提供的大块数量不超过1。在另一个例子中,m=1,随机选择1个来自老年驱动器的大块(也参看图7A,来自驱动器740的大块)被保留下来;而将来自p个老年驱动器的大块中的其他p-m大块(也参看图7A,来自驱动器710 与驱动器730的大块)替换为重新选择的p-m个大块,使得替换后的p-m个大块或者来自非老年盘,或者替换后的p-m个大块以及被保留的大块彼此之间任何两个大块的寿命差值大于安全差值。
可选地,在重新选择p-m个大块时,每次重新选择1个大块。在每次重新选择大块时,从存储资源池中随机选择一个大块,来替换p-m个大块中未被替换的一个,并使得所选择的一个大块或者来自非老年盘,或者与p个大块中已经被保留的大块的任何一个的年龄差值大于安全差值,以及将所选择的符合条件的大块作为被保留的大块。若所选择的一个大块不满足上述要求,从存储资源池中重新选择大块。进一步地,设置重试次数阈值,若重试多次后依然选不出符合条件的大块,认为存储系统中以无法提供符合要求的大块,可用存储对象创建失败作为响应,或者向用户提示无法获得符合要求的大块。
在另一个例子中,m>1,保留m个来自老年驱动器的大块,并使提供这m个大块的驱动器的寿命差值大于安全差值;而将p个来自老年驱动器的大块中的其他p-m个大块替换为重新选择的p-m大块。进一步地,在重新选择p-m个大块时,每次重新选择1 个大块。在每次重新选择大块时,从存储资源池中随机选择一个大块,来替换p-m个大块中未被替换的一个,并使得所选择的一个大块或者来自非老年盘,或者与p个大块中已经被保留的大块的任何一个的年龄差值大于安全差值,以及将所选择的符合条件的大块作为被保留的大块。
需要说明的是,本发明实施例的在存储系统中创建存储对象的装置的具体实现方式与本发明实施例的在存储系统中创建存储对象的方法的具体实现方式类似,具体请参见方法部分的描述,为了减少冗余,此处不做赘述。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
本发明实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本发明实施例的方法之一。
本发明实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本发明实施例的方法之一。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。
这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作操作,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的操作。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (7)
1.一种在存储系统中创建存储对象的方法,其特征在于,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述方法包括:
从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器以相同的几率被选中;其中,N为正整数,所述从所述多个驱动器中随机选择N个驱动器,包括:根据所述多个驱动器的权重从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器中的第一驱动器被选中的概率对应于所述第一驱动器的权重,其中驱动器的权重对应于驱动器中空闲资源的数量;
从所述N个驱动器获取N份空闲存储资源,其中,所述N个驱动器的每个提供且仅提供一份空闲存储资源;以及
用所述N份空闲存储资源创建存储对象,以使用户数据在所述存储对象对应的各个驱动器之间平均分布;其中,所述存储对象是带有RAID功能的存储单元。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于驱动器中空闲资源数量的变化,调整驱动器的权重。
3.一种在存储系统中创建存储对象的方法,其特征在于,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述方法包括:
从多个逻辑驱动器中随机选择N个逻辑驱动器,使得所述多个逻辑驱动器以相同的几率被选中;其中,N为正整数,所述从多个逻辑驱动器中随机选择N个逻辑驱动器,包括:根据所述多个驱动器的权重从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器中的第一驱动器被选中的概率对应于所述第一驱动器的权重,其中驱动器的权重对应于驱动器中空闲资源的数量;
从所述N个逻辑驱动器获取N份空闲存储资源;以及
用所述N份空闲存储资源形成存储对象,以使用户数据在所述存储对象对应的各个驱动器之间平均分布;其中,所述存储对象是带有RAID功能的存储单元。
4.根据权利要求3所述的方法,其特征在于,所述N个逻辑驱动器由N个驱动器提供,且所述N个驱动器的每个提供一个逻辑驱动器。
5.根据权利要求3或4所述的方法,其特征在于,还包括:
响应于驱动器中存储资源使用情况的变化,调整驱动器提供的逻辑驱动器的数量。
6.一种在存储系统中创建存储对象的装置,其特征在于,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述装置包括:
驱动器选择模块,用于从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器以相同的几率被选中,其中,N为正整数,所述从所述多个驱动器中随机选择N个驱动器,包括:根据所述多个驱动器的权重从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器中的第一驱动器被选中的概率对应于所述第一驱动器的权重,其中驱动器的权重对应于驱动器中空闲资源的数量;
第一空闲资源获取模块,用于从所述N个驱动器获取N份空闲存储资源,其中,所述N个驱动器的每个提供且仅提供一份空闲存储资源;以及
第一存储对象创建模块,用于使用所述N份空闲存储资源创建存储对象,以使用户数据在所述存储对象对应的各个驱动器之间平均分布;其中,所述存储对象是带有RAID功能的存储单元。
7.一种在存储系统中创建存储对象的装置,其特征在于,所述存储系统包括多个驱动器,所述驱动器包括多个存储资源,所述装置包括:
逻辑驱动器选择模块,用于从多个逻辑驱动器中随机选择N个逻辑驱动器,使得所述多个逻辑驱动器以相同的几率被选中,其中,N为正整数,所述从多个逻辑驱动器中随机选择N个逻辑驱动器,包括:根据所述多个驱动器的权重从所述多个驱动器中随机选择N个驱动器,使得所述多个驱动器中的第一驱动器被选中的概率对应于所述第一驱动器的权重,其中驱动器的权重对应于驱动器中空闲资源的数量;
第二空闲资源获取模块,用于从所述N个逻辑驱动器获取N份空闲存储资源;以及
第二存储对象创建模块,用于使用所述N份空闲存储资源形成存储对象,以使用户数据在所述存储对象对应的各个驱动器之间平均分布;其中,所述存储对象是带有RAID功能的存储单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610602296.3A CN107665090B (zh) | 2016-07-27 | 2016-07-27 | 实现全局磨损均衡的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610602296.3A CN107665090B (zh) | 2016-07-27 | 2016-07-27 | 实现全局磨损均衡的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107665090A CN107665090A (zh) | 2018-02-06 |
CN107665090B true CN107665090B (zh) | 2021-09-03 |
Family
ID=61115361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610602296.3A Active CN107665090B (zh) | 2016-07-27 | 2016-07-27 | 实现全局磨损均衡的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107665090B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634518A (zh) * | 2018-10-29 | 2019-04-16 | 成都华为技术有限公司 | 一种存储资源配置方法及装置 |
US20210011623A1 (en) * | 2019-07-10 | 2021-01-14 | Pure Storage, Inc. | Generating tags for data allocation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526920A (zh) * | 2008-12-31 | 2009-09-09 | 北京飞天诚信科技有限公司 | 写入数据的方法及装置 |
CN102023810A (zh) * | 2009-09-10 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种写数据的方法、装置以及廉价冗余磁盘阵列 |
CN104182359A (zh) * | 2013-05-23 | 2014-12-03 | 杭州宏杉科技有限公司 | 一种缓存分配方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010144587A2 (en) * | 2009-06-12 | 2010-12-16 | Violin Memory, Inc. | Memory system having persistent garbage collection |
CN101625627B (zh) * | 2009-08-05 | 2012-03-21 | 成都市华为赛门铁克科技有限公司 | 写入数据的方法、磁盘冗余阵列的控制器及磁盘冗余阵列 |
CN102622189B (zh) * | 2011-12-31 | 2015-11-25 | 华为数字技术(成都)有限公司 | 存储虚拟化的装置、数据存储方法及系统 |
CN105354152B (zh) * | 2014-08-19 | 2018-06-26 | 华为技术有限公司 | 非易失性存储器及磨损均衡方法 |
-
2016
- 2016-07-27 CN CN201610602296.3A patent/CN107665090B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526920A (zh) * | 2008-12-31 | 2009-09-09 | 北京飞天诚信科技有限公司 | 写入数据的方法及装置 |
CN102023810A (zh) * | 2009-09-10 | 2011-04-20 | 成都市华为赛门铁克科技有限公司 | 一种写数据的方法、装置以及廉价冗余磁盘阵列 |
CN104182359A (zh) * | 2013-05-23 | 2014-12-03 | 杭州宏杉科技有限公司 | 一种缓存分配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107665090A (zh) | 2018-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318169B2 (en) | Load balancing of I/O by moving logical unit (LUN) slices between non-volatile storage represented by different rotation groups of RAID (Redundant Array of Independent Disks) extent entries in a RAID extent table of a mapped RAID data storage system | |
US9378093B2 (en) | Controlling data storage in an array of storage devices | |
KR102628239B1 (ko) | 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치 및 호스트 장치를 포함하는 컴퓨팅 장치의 동작 방법 | |
US11157365B2 (en) | Method for processing stripe in storage device and storage device | |
CN110096217B (zh) | 用于重新定位数据的方法、数据存储系统和介质 | |
CN107250975B (zh) | 数据存储系统和数据存储方法 | |
US8799747B2 (en) | Data hardening to compensate for loss of data retention characteristics in a non-volatile memory | |
US20150286531A1 (en) | Raid storage processing | |
US9047187B2 (en) | Defect management in memory systems | |
US10795768B2 (en) | Memory reallocation during raid rebuild | |
JP5722225B2 (ja) | 性能改善のためのraidボリュームとドライブ・グループとの間の疎結合 | |
US20110145528A1 (en) | Storage apparatus and its control method | |
KR20190052083A (ko) | 저장된 데이터를 플래시 메모리에 기초한 저장 매체에 기입하기 위한 방법 및 디바이스 | |
CN111722793A (zh) | 开放通道存储设备的操作方法 | |
CN103699457A (zh) | 基于条带化的磁盘阵列修复方法及装置 | |
CN111124264B (zh) | 用于重建数据的方法、设备和计算机程序产品 | |
WO2016067388A1 (ja) | ストレージ装置およびストレージシステム | |
CN109725838B (zh) | 用于管理多个盘的方法、装置以及计算机可读介质 | |
US20230013322A1 (en) | Solid state drive management method and solid state drive | |
CN107665090B (zh) | 实现全局磨损均衡的方法 | |
CN107544747B (zh) | 磨损逆均衡方法与装置 | |
CN113811862A (zh) | 存储驱动器的动态性能等级调整 | |
CN109558068B (zh) | 数据迁移方法及迁移系统 | |
US8140752B2 (en) | Method of executing a background task and an array controller | |
CN114721585A (zh) | 存储管理方法、设备和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 Room 302, 3 / F, building B-2, Dongsheng Science Park, xixiaokou Road, Haidian District, Beijing Patentee before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd. |