CN104794011B - 基于虚拟磁盘的坏块重定向方法及装置 - Google Patents

基于虚拟磁盘的坏块重定向方法及装置 Download PDF

Info

Publication number
CN104794011B
CN104794011B CN201510058627.7A CN201510058627A CN104794011B CN 104794011 B CN104794011 B CN 104794011B CN 201510058627 A CN201510058627 A CN 201510058627A CN 104794011 B CN104794011 B CN 104794011B
Authority
CN
China
Prior art keywords
bad block
vsd
data block
index data
disk
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
Application number
CN201510058627.7A
Other languages
English (en)
Other versions
CN104794011A (zh
Inventor
王俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhou Yunke Beijing Technology Co ltd
Wuhan Shenzhou Digital Cloud Technology Co ltd
Original Assignee
Shenzhen Science And Technology Co Ltd Digital Cloud Data
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Science And Technology Co Ltd Digital Cloud Data filed Critical Shenzhen Science And Technology Co Ltd Digital Cloud Data
Priority to CN201510058627.7A priority Critical patent/CN104794011B/zh
Publication of CN104794011A publication Critical patent/CN104794011A/zh
Application granted granted Critical
Publication of CN104794011B publication Critical patent/CN104794011B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开了一种基于虚拟磁盘的坏块重定向方法及装置,涉及信息存储技术领域,该方法包括:在IO与磁盘之间引入VSD层;根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域。该方法通过增加VSD层进行坏块重定向,不需要修改系统已有的各种硬件驱动;并且在VSD上做了分核设定,索引区和数据区相对每个CPU核独立,正常IO访问不存在数据共享访问的锁冲突,而且数据节点数量小,VSD层用双控异步IO锁来保证双控的坏块重定向过程对共享数据访问的不可重入性,保证了双控的正确性和稳定性。

Description

基于虚拟磁盘的坏块重定向方法及装置
技术领域
本发明涉及信息存储技术领域,具体涉及一种基于虚拟磁盘的坏块重定向方法及装置。
背景技术
在实际应用中,磁盘经常因为运输,安装,使用环境等原因产生坏道。传统的磁盘容错技术有:通过smart工具来预测磁盘使用寿命,然后通过告警模块通知人工替换。当磁盘出现部分坏道时,将错误直接反馈到用户层导致数据错误。为了提高磁盘的容错可用性,业界产生了磁盘容错的坏块重定向技术。首先要支持实时探测坏块,当写IO返回特定的错误码,或者重试N次都失败,则可确定为坏块。当有坏块时,在内存中建立坏块重定向索引,将坏块重新定位到磁盘预留区的坏块重定向数据区中,若写入成功,则同步坏块重定向索引到磁盘的坏块重定向索引区中。
通过smart工具来监控磁盘,只能预测;必须通过人工干预;局部错误会反馈到用户层,期望用户层有纠错能力;传统的坏块重定向技术引入了复杂的流程,可能带来性能和稳定性问题;并且还不支持双控制器的坏块重定向。
发明内容
针对现有技术中的缺陷,本发明提供了一种基于虚拟磁盘的坏块重定向方法及装置,解决了传统的坏块重定向技术带来系统性能和稳定性降低的问题。
第一方面,本发明提供一种基于虚拟磁盘的坏块重定向方法,包括:
在IO与磁盘之间引入VSD层;
根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域。
可选的,所述在IO与磁盘之间引入VSD层,包括:
对所述VSD层进行分核,以使不同条带组的IO分配在不同的CPU核上。
可选的,所述方法还包括:
在所述VSD层加入双控异步IO锁,使得所述磁盘中的第一控制器与第二控制器按照顺序进行坏块重定向索引。
可选的,采用ping-pong模式保存索引数据块。
可选的,所述采用ping-pong模式保存索引数据块,包括:
保存所述索引数据块中版本最小的索引数据块;
在所述索引数据块修改时,若修改失败,则保留原所述索引数据块的版本;
对所述索引数据块中版本最大的进行读操作,版本最小的进行写操作。
第二方面,本发明还提供了一种基于虚拟磁盘的坏块重定向装置,包括:
引入模块,用于在IO与磁盘之间引入VSD层;
坏块重定向模块,用于根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域。
可选的,所述引入模块,还用于:
对所述VSD层进行分核,以使不同条带组的IO分配在不同的CPU核上。
可选的,所述装置还包括:
双控异步IO锁模块,用于在所述VSD层加入双控异步IO锁,使得所述磁盘中的第一控制器与第二控制器按照顺序进行坏块重定向索引。
可选的,所述装置通过ping-pong模式保存索引数据块。
可选的,所述通过ping-pong模式保存索引数据块,包括:
保存所述索引数据块中版本最小的索引数据块;
在所述索引数据块修改时,若修改失败,则保留原所述索引数据块的版本;
对所述索引数据块中版本最大的进行读操作,版本最小的进行写操作。
由上述技术方案可知,本发明提供的一种基于虚拟磁盘的坏块重定向方法及装置,通过在IO与磁盘之间引入VSD层;根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址指向所述磁盘中未发生坏块的区域解决了传统的坏块重定向技术带来系统性能和稳定性降低的问题。
附图说明
图1为本发明一实施例提供的一种基于虚拟磁盘的坏块重定向方法的流程示意图;
图2为本发明一实施例提供的一种基于虚拟磁盘的坏块重定向装置的结构示意图。
具体实施方式
下面结合附图,对发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
图1示出了一种基于虚拟磁盘的坏块重定向方法,如图1所示,该方法包括:
101、在IO与磁盘之间引入虚拟磁盘Virtual Storage Disk(简称VSD)层;
具体的对所述VSD层进行分核,以使不同条带组的IO分配在不同的CPU核上。
102、根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域。
在具体应用中,所述方法还包括图1中未示出的步骤103:
103、在所述VSD层加入双控异步IO锁,使得所述磁盘中的第一控制器与第二控制器按照顺序进行坏块重定向索引。
在具体应用中,本方法采用ping-pong模式保存索引数据块。
上述采用ping-pong模式保存索引数据块,包括:
保存所述索引数据块中版本最小的索引数据块;
在所述索引数据块修改时,若修改失败,则保留原所述索引数据块的版本;
对所述索引数据块中版本最大的进行读操作,版本最小的进行写操作。
为了更清楚的说明上述方法,通过下述实施例来进行详细说明。
为了让raid更好的记录各种状态,适应各种磁盘,引入了虚拟磁盘VSD层。VSD将磁盘的几何空间做了重新划分,分为保留区和数据区。保留区由超级块区,bitmap索引区,坏块重定向索引区,坏块重定向数据区等组成。
上层的IO要到达Disk,要通过VSD层转发,在VSD层做坏块重定向,就可以做到与具体OS,Disk无关,具有很高的兼容性和扩展性。
在VSD上做了分核设定,不同条带组的IO分配在不同CPU核上进行,则VSD处理IO的坏块重定向过程中,访问的索引区和数据区相对每个CPU核独立,不存在数据共享访问的锁冲突,而且数据节点数量小。
内存中采用Per_CPU的range_rb_tree(范围红黑树)来保存坏块重定向索引,通过range_rb_tree的接口进行load,查找,更新,delete。由于Per_CPU架构不用spin_lock锁,则每次正常IO只增加一个range_rb_tree的查找过程,只有几条指令(由rb_tree的深度决定),所以不会影响性能。
range_rb_tree的节点为4k字节的数据块地址映射,相对每个扇区大小(512字节)来说做了放大,但可以大大简化(内存管理和流程的)复杂性。
当探测到坏块(4k范围)时启动双控的坏块重定向过程:
a)首先要通过双控异步IO锁来保护坏块重定向过程不会重入。在坏块重定向过程,插入磁盘产生plugin事件处理过程等需要修改Per_CPU range_rb_tree的过程,都需要加载双控异步IO锁来保护。
b)拿到双控异步IO锁的回调中执行dc_bbr_work:获取新的重定向块,若满了,则报告错误;修改bio发送到重定向后的数据块;同步保存重定向索引到磁盘的保留区;发送同步重定向请求到对端控制器,同步重定向索引数据保证两端索引数据一致(用于保证处理各种双控切换事件发生后的坏块重定向索引正确性)。当所有异步过程产生的task引用都完毕后,dc_bbr_task才完毕,双控重定向过程完成。
c)同步到对端的过程要处理双控的断开切单,加入切双等事件。
具体工作流程:
1、因为同一数据块会都在一端依次写,另一端可能依次读,而不是都由一端来依次读写,所以pcpu_bbr_map在修改的时候必须同步到对端。
a)同步过程中不需要spin_lock or mutex保护共享资源。首先pcpu模式下对tree的修改不会产生程序crash,而io冲突正确性由上层保证。
b)同步过程的双控冲突需要io_mutex的保护机制。
2、attach的时候需要读disk。
a)从磁盘reload bbr索引的时候,pcpu_bbr_map都装载区块的所有node,不用做cpu个数改变后的重新分配。
b)两端收到attach,都读,用io_mutex锁保护对bbr索引的读写(这里io锁保护的范围为整个bbr索引区,last_bbr_blk_idx,bbr数据区),
A先attach,先拿到io锁,则A会先完成;A完成后进行了重定向修改,会先同步到B,完成后,B再attach读索引(所以load索引的时候tree可能不空)。
c)如上所述,pcpu_bbr_map的初始化要在vsd创建时做。
3、因为磁盘上就一个bbr_data区,而且其中数据块(4k)顺序占用,用last_bbr_blk_idx来指示,那么:
a)本端控制器的多cpu会并发请求访问last_bbr_blk_idx;对端控制器也是如此。
b)当将坏块(4k)重定向到一个数据块(4k)时,解决双控冲突的方法是:vsd加io_mutex点锁,在两端对last_bbr_blk_idx都++,并新增(修改)pcpu_bbr_map树后,发起端收到应答后,修改占用数据块(4k)的索引到disk,io完成后解io锁;才完成一个数据块的重定向过程。
4、因为pcpu_bbr_map的两端一致性,所以切换过程的处理为:
a)单切双,只需要同步attached的vsd的pcpu_bbr_map到对端;但是由于对端上线后vsd会被创建并attach,会reload bbr索引,相当于完成了同步,所以切换过程只要donothing。
b)双切单,不用缩小pcpu_bbr_map,但是要end_pending_task(拿io锁,等待对端应答的task)。
5、pingpong模式保存索引。
a)索引数据块作为一个整体修改(比如32k,1sector),对应version_head,保存2份。
b)save的时候,选择version小的保存data,完成后再更新version(+=2,大的ver+1)。
version的修改是1个sector,要保证修改的原子性(要不改成功为新值,要不维持老值)。若可能发生修改过程中内部错误,只修改了部分,导致version值undefined,则失效。
若不成功,则最近成功的修改是version大的,version小的作为临时修改,没有生效:读从version大的读,写还是从version小的写。
图2示出了一种基于虚拟磁盘的坏块重定向装置,如图2所示,包括:引入模块21,用于在IO与磁盘之间引入VSD层;
具体的,所述引入模块,还用于:对所述VSD层进行分核,以使不同条带组的IO分配在不同的CPU核上。
坏块重定向模块22,用于根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域。
所述装置还包括图2中未示出的双控异步IO锁模块23:
双控异步IO锁模块23,用于在所述VSD层加入双控异步IO锁,使得所述磁盘中的第一控制器与第二控制器按照顺序进行坏块重定向索引。
所述装置通过ping-pong模式保存索引数据块。
上述通过ping-pong模式保存索引数据块,包括:
保存所述索引数据块中版本最小的索引数据块;
在所述索引数据块修改时,若修改失败,则保留原所述索引数据块的版本;
对所述索引数据块中版本最大的进行读操作,版本最小的进行写操作。
上述方法通过增加VSD层进行坏块重定向,不需要修改系统已有的各种硬件驱动;VSD上做了分核设定,索引区和数据区相对每个CPU核独立,正常IO访问不存在数据共享访问的锁冲突,而且数据节点数量小,在此基础上用range_rb_tree来保存索引节点,访问性能高;VSD层用双控异步IO锁来保证双控的坏块重定向过程对共享数据访问的不可重入性,保证了双控的正确性和稳定性;VSD层双控坏块重定向索引在磁盘上的同步结构简单,更新时针对每个4k的数据块,不影响其他数据块,更新采用ping-pong模式,逻辑清晰,可靠性非常高。
此外,VSD层双控坏块重定向方法的效果是:可应用于下层的任何类型的磁盘;大大提高了磁盘的容错性和可用性;提高了磁盘坏块重定向的时系统运行的稳定性和可靠性;在双控制器情况下(正常双控制器模式工作状态下;切单、切双过程中)正确并可靠。
本发明的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

Claims (4)

1.一种基于虚拟磁盘的坏块重定向方法,其特征在于,包括:
在IO与磁盘之间引入VSD层;
根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域;
采用ping-pong模式保存索引数据块:
所述采用ping-pong模式保存索引数据块的步骤进一步包括:
保存所述索引数据块中版本最小的索引数据块;
在所述索引数据块修改时,若修改失败,则保留原所述索引数据块的版本;
对所述索引数据块中版本最大的进行读操作,版本最小的进行写操作。
2.根据权利要求1所述的方法,其特征在于,所述在IO与磁盘之间引入VSD层,包括:
对所述VSD层进行分核,以使不同条带组的IO分配在不同的CPU核上。
3.一种基于虚拟磁盘的坏块重定向装置,其特征在于,包括:
引入模块,用于在IO与磁盘之间引入VSD层;
坏块重定向模块,用于根据所述VSD中的坏块重定向索引,并将所述坏块重定向索引的目标地址重定向到所述磁盘中未发生坏块的区域;
所述装置通过ping-pong模式保存索引数据块;
所述通过ping-pong模式保存索引数据块进一步包括:
保存所述索引数据块中版本最小的索引数据块;
在所述索引数据块修改时,若修改失败,则保留原所述索引数据块的版本;
对所述索引数据块中版本最大的进行读操作,版本最小的进行写操作。
4.根据权利要求3所述的装置,其特征在于,所述引入模块,还用于:
对所述VSD层进行分核,以使不同条带组的IO分配在不同的CPU核上。
CN201510058627.7A 2015-02-04 2015-02-04 基于虚拟磁盘的坏块重定向方法及装置 Active CN104794011B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510058627.7A CN104794011B (zh) 2015-02-04 2015-02-04 基于虚拟磁盘的坏块重定向方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510058627.7A CN104794011B (zh) 2015-02-04 2015-02-04 基于虚拟磁盘的坏块重定向方法及装置

Publications (2)

Publication Number Publication Date
CN104794011A CN104794011A (zh) 2015-07-22
CN104794011B true CN104794011B (zh) 2017-12-12

Family

ID=53558821

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510058627.7A Active CN104794011B (zh) 2015-02-04 2015-02-04 基于虚拟磁盘的坏块重定向方法及装置

Country Status (1)

Country Link
CN (1) CN104794011B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105159609A (zh) * 2015-08-31 2015-12-16 北京神州云科数据技术有限公司 一种基于虚拟磁盘层的io流控制方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508724A (zh) * 2011-10-25 2012-06-20 北京同有飞骥科技股份有限公司 一种基于软raid的磁盘坏块处理方法
CN102799533A (zh) * 2012-07-10 2012-11-28 浙江宇视科技有限公司 一种磁盘损坏扇区屏蔽方法及装置
CN103064804A (zh) * 2012-12-13 2013-04-24 华为技术有限公司 磁盘数据的访问控制方法及装置
CN103577114A (zh) * 2012-07-31 2014-02-12 华为技术有限公司 磁盘重映射方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055833B2 (en) * 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508724A (zh) * 2011-10-25 2012-06-20 北京同有飞骥科技股份有限公司 一种基于软raid的磁盘坏块处理方法
CN102799533A (zh) * 2012-07-10 2012-11-28 浙江宇视科技有限公司 一种磁盘损坏扇区屏蔽方法及装置
CN103577114A (zh) * 2012-07-31 2014-02-12 华为技术有限公司 磁盘重映射方法和装置
CN103064804A (zh) * 2012-12-13 2013-04-24 华为技术有限公司 磁盘数据的访问控制方法及装置

Also Published As

Publication number Publication date
CN104794011A (zh) 2015-07-22

Similar Documents

Publication Publication Date Title
CN108519862B (zh) 区块链系统的存储方法、装置、系统和存储介质
US10394634B2 (en) Drive-based storage scrubbing
JP3704573B2 (ja) クラスタシステム
US8677063B2 (en) Parity declustered storage device array with partition groups
US10540119B2 (en) Distributed shared log storage system having an adapter for heterogenous big data workloads
US8972345B1 (en) Modifying data structures in distributed file systems
US8880488B1 (en) Efficient extent-based B-tree insertion
CN103581331B (zh) 虚拟机在线迁移方法与系统
CN106445398B (zh) 一种基于新型存储器的嵌入式文件系统及其实现方法
US20200167252A1 (en) Method and apparatus for managing storage system
US7904618B2 (en) Buffer managing method and buffer managing apparatus
CN106855871B (zh) 一种数据迁移的方法和装置
CN103647850B (zh) 一种分布式版本控制系统的数据处理方法、设备及系统
CN107704194A (zh) 无锁io处理方法及其装置
US10838875B2 (en) System and method for managing memory for large keys and values
US8762773B2 (en) Processing apparatus, data migration method, and computer-readable recording medium having data migration program recorded thereon
US20130304996A1 (en) Method and system for run time detection of shared memory data access hazards
CN106294387A (zh) 数据迁移方法和装置
US9734620B2 (en) Apparatus and method for graphics state management
CN103617039B (zh) 一种访问用户空间文件系统的方法及装置
CN107943412B (zh) 一种分区分裂、删除分区中数据文件的方法、装置及系统
CN104794011B (zh) 基于虚拟磁盘的坏块重定向方法及装置
CN109388616B (zh) 一种智能卡文件系统的管理方法
US20240004832A1 (en) System and method for providing a container environment in a single file
KR101623631B1 (ko) 캐시 메모리 구조 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20170329

Address after: Nanshan District Guangdong streets, Shenzhen city 518131 Guangdong Province Road No. 8 financial services technology innovation base 1 building 11 floor F3

Applicant after: Shenzhen science and Technology Co.,Ltd. digital cloud data

Address before: 100085 Beijing, Haidian District, No. 9 on the ground floor of the digital science and Technology Plaza, 9

Applicant before: YUNKE CHINA DATA TECHNOLOGY LTD.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190508

Address after: 430200 Six Floors of 777B Office Building, Guanggu Third Road, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee after: Wuhan Shenzhou Digital Cloud Technology Co.,Ltd.

Address before: 518131 F3, 11th floor, No. 8 Kefa Road, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: Shenzhen science and Technology Co.,Ltd. digital cloud data

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230323

Address after: 6 / F, office building B, No.777, Guanggu Third Road, Donghu New Technology Development Zone, Wuhan, Hubei 430200

Patentee after: Wuhan Shenzhou Digital Cloud Technology Co.,Ltd.

Patentee after: Shenzhou Yunke (Beijing) Technology Co.,Ltd.

Address before: 6 / F, office building B, No.777, Guanggu Third Road, Donghu New Technology Development Zone, Wuhan, Hubei 430200

Patentee before: Wuhan Shenzhou Digital Cloud Technology Co.,Ltd.