專利名稱:大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法
技術(shù)領(lǐng)域:
大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法屬于容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)技術(shù)領(lǐng)域,尤其涉及其中的I/O性能優(yōu)化技術(shù)領(lǐng)域。
背景技術(shù):
隨著磁盤陣列(disk array)存儲(chǔ)系統(tǒng)規(guī)模的不斷擴(kuò)大,存儲(chǔ)系統(tǒng)容量急劇增長(zhǎng),然而單個(gè)磁盤的出錯(cuò)率卻一直未得到顯著的改善,于是,磁盤容錯(cuò)就成為大規(guī)模磁盤陣列存儲(chǔ)系統(tǒng)設(shè)計(jì)中一個(gè)十分重要的方面。目前,多副本鏡像技術(shù)雖然可以容忍很多個(gè)磁盤的數(shù)據(jù)丟失,但存儲(chǔ)空間的有效利用率很低,只有1/N(N表示鏡像副本個(gè)數(shù))。于是,各種具有較高容錯(cuò)能力和較高存儲(chǔ)利用率的糾刪碼(erasure code)技術(shù)被提出,以用于構(gòu)建大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)。
在基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)中,“小寫(small write)問(wèn)題”嚴(yán)重影響了存儲(chǔ)系統(tǒng)的I/O性能。在目前的單磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)中,小寫操作時(shí)對(duì)應(yīng)的校驗(yàn)更新操作是采用一種讀-修改-寫(read-modify-write)的過(guò)程完成的。于是,在一個(gè)容錯(cuò)能力為t的存儲(chǔ)系統(tǒng)中,一個(gè)小寫操作會(huì)引起2(t+1)個(gè)I/O操作,其中包括1個(gè)讀舊的用戶數(shù)據(jù)塊的讀操作,t個(gè)讀舊的校驗(yàn)數(shù)據(jù)塊的讀操作,1個(gè)寫新的用戶數(shù)據(jù)塊的寫操作和t個(gè)寫新的校驗(yàn)數(shù)據(jù)塊的寫操作。這個(gè)過(guò)程極大地增長(zhǎng)了用戶數(shù)據(jù)更新操作的時(shí)間開銷,嚴(yán)重影響了大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的I/O性能。
目前,已有的各種降低用戶數(shù)據(jù)更新操作時(shí)間開銷的技術(shù)主要可以分為以下兩類 (1)優(yōu)化I/O訪問(wèn)序列的順序這類技術(shù)主要包括三種(a)Cache或Buffer技術(shù),通過(guò)利用Cache或Buffer來(lái)調(diào)整I/O訪問(wèn)的順序,實(shí)現(xiàn)小寫I/O操作的合并,并優(yōu)化I/O序列的空間局部性,從而達(dá)到降低用戶數(shù)據(jù)更新操作時(shí)間開銷,提高I/O性能的目的;(b)校驗(yàn)浮動(dòng)(floating parity)技術(shù),在校驗(yàn)的更新操作過(guò)程中,將計(jì)算出的新的校驗(yàn)存放在舊的校驗(yàn)相鄰的空閑磁盤空間中,增強(qiáng)讀-修改-寫過(guò)程中的兩個(gè)I/O操作的空間局部性,從而達(dá)到降低用戶數(shù)據(jù)更新操作時(shí)間開銷,提高I/O性能的目的;(c)校驗(yàn)日志(parity logging)技術(shù),通過(guò)延遲校驗(yàn)更新操作,實(shí)現(xiàn)多個(gè)校驗(yàn)更新操作的合并,并優(yōu)化校驗(yàn)更新操作的空間局部性,從而達(dá)到降低用戶數(shù)據(jù)更新操作時(shí)間開銷,提高I/O性能的目的。
(2)改變修改操作的實(shí)現(xiàn)層次通過(guò)在磁盤上嵌入額外的計(jì)算和存儲(chǔ)部件,而不改變磁盤驅(qū)動(dòng)器內(nèi)部的結(jié)構(gòu),將校驗(yàn)更新操作對(duì)應(yīng)的讀-修改-寫過(guò)程中的修改操作在磁盤上完成(而不是在主機(jī)處理器中完成),降低主機(jī)處理器與磁盤之間的數(shù)據(jù)流量,提高I/O系統(tǒng)的有效吞吐率,并優(yōu)化I/O操作的空間局部性,從而達(dá)到降低用戶數(shù)據(jù)更新操作時(shí)間開銷,提高I/O性能的目的。
盡管這些現(xiàn)有技術(shù)能在一定程度上降低用戶數(shù)據(jù)更新操作時(shí)間開銷,提高I/O性能,但它們都是以目前的單磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)為基礎(chǔ),它們無(wú)法也不可能改變現(xiàn)有的讀-修改-寫模式。因此,它們?cè)诮档陀脩魯?shù)據(jù)更新操作時(shí)間開銷方面所起的作用十分有限,尤其隨著容錯(cuò)能力t的提高,“小寫問(wèn)題”的加劇,這種局限性表現(xiàn)得越來(lái)越明顯。
與已有技術(shù)不同的是,本發(fā)明提出的大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法是基于一種專用的雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu),它采用位級(jí)別的流水線技術(shù)實(shí)現(xiàn)塊級(jí)別的復(fù)合操作,一次校驗(yàn)更新操作只需要一個(gè)復(fù)合操作就可以完成,而不需要讀-修改-寫過(guò)程。在一個(gè)容錯(cuò)能力為t的存儲(chǔ)系統(tǒng)中,一個(gè)小寫操作只需要t+2個(gè)I/O操作,其中包括1個(gè)讀舊的用戶數(shù)據(jù)塊的讀操作,1個(gè)寫新的用戶數(shù)據(jù)塊的寫操作和t個(gè)更新校驗(yàn)數(shù)據(jù)塊的復(fù)合操作。與已有技術(shù)相比,它從根本上改變了現(xiàn)有的校驗(yàn)更新模式,減少了用戶數(shù)據(jù)更新操作中引入的I/O操作個(gè)數(shù),從而從根本上降低了用戶數(shù)據(jù)更新操作時(shí)間開銷,提高了容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的I/O性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的用戶數(shù)據(jù)更新方法,并且這種方法能夠從根本上改變現(xiàn)有的校驗(yàn)更新模式(即,讀-修改-寫模式),減少用戶數(shù)據(jù)更新操作中引入的I/O操作個(gè)數(shù),從而從根本上降低用戶數(shù)據(jù)更新操作時(shí)間開銷,提高容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的I/O性能。本方法的核心在于它基于一種專用的雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu),采用位級(jí)別流水線技術(shù)實(shí)現(xiàn)用于快速校驗(yàn)更新的復(fù)合操作。
本發(fā)明的特征在于它是在一個(gè)基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)中依次按照以下步驟實(shí)現(xiàn)的 步驟(1)構(gòu)建所述的基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng),并初始化 所述的基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)含有磁盤陣列、存儲(chǔ)適配器、存儲(chǔ)有存儲(chǔ)操作系統(tǒng)的內(nèi)存,以及處理器,其中 磁盤陣列,由若干個(gè)具有相同容量的磁盤組成,其中,對(duì)于完全存儲(chǔ)用戶數(shù)據(jù)的磁盤,采用單磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤;對(duì)于完全存儲(chǔ)校驗(yàn)數(shù)據(jù)的磁盤,或同時(shí)存儲(chǔ)用戶數(shù)據(jù)和校驗(yàn)數(shù)據(jù)的磁盤,采用雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤,所述的雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤在每個(gè)盤面上有兩個(gè)磁頭,包括一個(gè)前端磁頭和一個(gè)后端磁頭,并含有一個(gè)用于位級(jí)別異或運(yùn)算的計(jì)算部件; 存儲(chǔ)適配器,對(duì)所述磁盤陣列中數(shù)據(jù)塊的存儲(chǔ)和訪問(wèn)進(jìn)行控制; 內(nèi)存,是所述磁盤陣列的高速緩沖存儲(chǔ)器,并存儲(chǔ)有包括存儲(chǔ)操作系統(tǒng)在內(nèi)的存儲(chǔ)系統(tǒng)程序,其中,所述的存儲(chǔ)操作系統(tǒng)含有校驗(yàn)更新差分計(jì)算程序; 處理器,為所述磁盤陣列存儲(chǔ)系統(tǒng)執(zhí)行各種計(jì)算和處理程序; 步驟(2)當(dāng)一個(gè)用戶數(shù)據(jù)塊D的更新請(qǐng)求到達(dá)后,所述存儲(chǔ)操作系統(tǒng)利用讀操作從磁盤上讀出舊的用戶數(shù)據(jù)塊Dold,然后再把磁盤上舊的用戶數(shù)據(jù)塊Dold用新的用戶數(shù)據(jù)塊Dnew覆蓋; 步驟(3)當(dāng)讀出所述舊的用戶數(shù)據(jù)塊Dold后,所述存儲(chǔ)操作系統(tǒng)中所述的校驗(yàn)更新差分計(jì)算程序首先把所述的舊的用戶數(shù)據(jù)塊Dold和所述的新的用戶數(shù)據(jù)塊Dnew進(jìn)行異或運(yùn)算,得到兩者的差分值ΔD,即然后根據(jù)所采用的糾刪碼的數(shù)據(jù)編碼方法,按照下面的式子計(jì)算所述用戶數(shù)據(jù)塊D對(duì)應(yīng)的各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm的更新差分值ΔP1,ΔP2,…,ΔPm,其中,m為所述校驗(yàn)數(shù)據(jù)塊的總個(gè)數(shù) 其中,x1,x2,…,xm分別為所采用的糾刪碼中所述各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm關(guān)于所述用戶數(shù)據(jù)塊D的乘積系數(shù); 步驟(4)所述雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤根據(jù)步驟(3)得到的所述各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm的所述更新差分值ΔP1,ΔP2,…,ΔPm,利用復(fù)合操作更新所述各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm,其中,所述的復(fù)合操作對(duì)校驗(yàn)數(shù)據(jù)塊Pi的更新操作按照以下步驟實(shí)現(xiàn),1≤i≤m 步驟(4.1)在所述雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤收到對(duì)該校驗(yàn)數(shù)據(jù)塊Pi的復(fù)合操作請(qǐng)求后,進(jìn)行磁頭的尋址操作,在完成尋址操作后,所述前端磁頭到達(dá)磁盤盤片上所述校驗(yàn)數(shù)據(jù)塊Pi的起始位置; 步驟(4.2)所述前端磁頭從磁盤盤片上讀出一位舊的校驗(yàn)數(shù)據(jù)位; 步驟(4.3)所述計(jì)算部件把讀出的這位舊的校驗(yàn)數(shù)據(jù)位與所述更新差分值ΔPi中對(duì)應(yīng)的數(shù)據(jù)位進(jìn)行異或運(yùn)算,得到新的校驗(yàn)數(shù)據(jù)位; 步驟(4.4)當(dāng)所述后端磁頭到達(dá)磁盤盤片上該校驗(yàn)數(shù)據(jù)位的存儲(chǔ)位置后,所述后端磁頭把計(jì)算出的新的校驗(yàn)數(shù)據(jù)位寫回到磁盤盤片上; 步驟(4.5)所述雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤以流水線的方式按照步驟(4.2)至步驟(4.4)所述的步驟執(zhí)行所述校驗(yàn)數(shù)據(jù)塊Pi中各個(gè)數(shù)據(jù)位的更新操作,一直到所述后端磁頭將最后一位新的校驗(yàn)數(shù)據(jù)位寫回到磁盤盤片上為止。
本發(fā)明提出的大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法,是基于一種專用的雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu),它采用位級(jí)別的流水線技術(shù)實(shí)現(xiàn)塊級(jí)別的復(fù)合操作,一次校驗(yàn)更新操作只需要一個(gè)復(fù)合操作就可以完成,而不需要讀-修改-寫過(guò)程。在一個(gè)容錯(cuò)能力為t的存儲(chǔ)系統(tǒng)中,一個(gè)小寫操作只需要t+2個(gè)I/O操作,其中包括1個(gè)讀舊的用戶數(shù)據(jù)塊的讀操作,1個(gè)寫新的用戶數(shù)據(jù)塊的寫操作和t個(gè)更新校驗(yàn)數(shù)據(jù)塊的復(fù)合操作。與已有技術(shù)相比,它從根本上改變了現(xiàn)有的校驗(yàn)更新模式,減少了用戶數(shù)據(jù)更新操作中引入的I/O操作個(gè)數(shù),從而從根本上降低了用戶數(shù)據(jù)更新操作時(shí)間開銷,提高了容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的I/O性能。
圖1磁盤陣列存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖1.磁盤,2.磁盤陣列,3.存儲(chǔ)適配器,4.內(nèi)存,5.存儲(chǔ)操作系統(tǒng),6.處理器,7.系統(tǒng)總線; 圖2雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)示意圖8.磁盤盤片,9.磁道,10.磁盤驅(qū)動(dòng)器音圈電機(jī)(VCM),11.磁臂,12.前端磁頭(讀磁頭),13.后端磁頭(寫磁頭); 圖3存儲(chǔ)操作系統(tǒng)的結(jié)構(gòu)示意圖14.虛擬化系統(tǒng),15.文件系統(tǒng),16.虛擬磁盤模塊,17.SCSI目標(biāo)模塊,18.磁盤驅(qū)動(dòng),19.磁盤存儲(chǔ),20.FC,21.介質(zhì)訪問(wèn),22.IP,23.TCP,24.UDP,25.VI,26.DAFS,27.NFS,28.CIFS,29.HTTP,30.iSCSI; 圖4大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法的流程圖; 圖5復(fù)合操作的實(shí)現(xiàn)過(guò)程示意圖(a)前端磁頭開始讀舊的校驗(yàn)數(shù)據(jù),(b)后端磁頭開始寫新的校驗(yàn)數(shù)據(jù),(c)前端磁頭完成對(duì)舊的校驗(yàn)數(shù)據(jù)的讀操作,(d)后端磁頭完成對(duì)新的校驗(yàn)數(shù)據(jù)的寫操作; 圖6復(fù)合操作的流水線時(shí)空?qǐng)D; 圖7RAID5與RAID5*(RAID5*表示采用了本發(fā)明提出的雙磁頭用戶數(shù)據(jù)更新方法的RAID5)的I/O性能比較圖(a)I/O操作個(gè)數(shù)比較圖,(b)平均I/O響應(yīng)時(shí)間比較圖。
具體實(shí)施例方式 本發(fā)明的具體應(yīng)用環(huán)境是由磁盤陣列、存儲(chǔ)適配器、內(nèi)存(包括存儲(chǔ)操作系統(tǒng))和處理器共同組成的基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)(如圖1所示)。磁盤陣列存儲(chǔ)系統(tǒng)中各組成部分通過(guò)系統(tǒng)總線連接起來(lái),它們的具體功能如下 (1)磁盤陣列由若干個(gè)具有相同容量的磁盤組成,主要用于存儲(chǔ)用戶數(shù)據(jù),并同時(shí)存儲(chǔ)用于容錯(cuò)的校驗(yàn)數(shù)據(jù)。用戶數(shù)據(jù)和校驗(yàn)數(shù)據(jù)既可以分開存放在不同的磁盤中,也可以混合存放在相同的磁盤中。其中,對(duì)于完全存儲(chǔ)用戶數(shù)據(jù)的磁盤,采用普通的單磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤;對(duì)于存儲(chǔ)校驗(yàn)數(shù)據(jù)的磁盤,或同時(shí)存儲(chǔ)用戶數(shù)據(jù)和校驗(yàn)數(shù)據(jù)的磁盤,采用專用的雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤。
(2)存儲(chǔ)適配器又稱存儲(chǔ)控制器,主要功能是對(duì)磁盤陣列中數(shù)據(jù)塊的存儲(chǔ)和訪問(wèn)進(jìn)行控制。
(3)內(nèi)存(包括存儲(chǔ)操作系統(tǒng))主要作為磁盤陣列的高速緩沖存儲(chǔ)器,并存儲(chǔ)包括存儲(chǔ)操作系統(tǒng)在內(nèi)的存儲(chǔ)系統(tǒng)程序。
(4)處理器為整個(gè)磁盤陣列存儲(chǔ)系統(tǒng)提供高速的運(yùn)算和處理能力,執(zhí)行各種程序。
在實(shí)際應(yīng)用中,本發(fā)明可以應(yīng)用在(但又不局限于)包括直接附屬存儲(chǔ)(directly-attachedstorage,DAS)、網(wǎng)絡(luò)附屬存儲(chǔ)(network-attached storage,NAS)和存儲(chǔ)區(qū)域網(wǎng)絡(luò)(storage areanetwork,SAN)等在內(nèi)的各種存儲(chǔ)系統(tǒng)結(jié)構(gòu)中。
上述的專用雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤支持三種I/O訪問(wèn)操作讀操作、寫操作和復(fù)合操作。其中,讀操作和寫操作與普通的單磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤中的讀操作和寫操作功能完全相同,復(fù)合操作主要是實(shí)現(xiàn)快速的校驗(yàn)更新操作。在磁盤驅(qū)動(dòng)器內(nèi)部,為了支持復(fù)合操作,每個(gè)磁盤盤片表面關(guān)聯(lián)兩個(gè)相鄰磁頭,一個(gè)前端磁頭和一個(gè)后端磁頭,其中,前端磁頭為讀磁頭,后端磁頭為寫磁頭,兩個(gè)磁頭安置在一個(gè)共同的磁臂上面,如圖2所示。此外,為了支持復(fù)合操作中位級(jí)別的校驗(yàn)修改操作,在磁盤驅(qū)動(dòng)器內(nèi)部還安置有相應(yīng)的計(jì)算部件和控制部件。
上述的存儲(chǔ)操作系統(tǒng)是指計(jì)算機(jī)中用于數(shù)據(jù)訪問(wèn)管理的可執(zhí)行程序,它既可以作為一個(gè)系統(tǒng)程序在操作內(nèi)核中實(shí)現(xiàn),如NetApp
Data ONTAPTM存儲(chǔ)操作系統(tǒng),也可以作為一個(gè)應(yīng)用程序在通用操作系統(tǒng)(如UNIX
或WindowsXP
等)之上實(shí)現(xiàn)。本發(fā)明采用的是(但不局限于)NetApp
DataONTAPTM操作系統(tǒng)(它實(shí)現(xiàn)了一個(gè)WAFL
文件系統(tǒng))。實(shí)際上,任何一個(gè)合適的存儲(chǔ)操作系統(tǒng)都可以在本發(fā)明中使用。圖3是存儲(chǔ)操作系統(tǒng)的結(jié)構(gòu)示意圖。其中,磁盤驅(qū)動(dòng)層主要實(shí)現(xiàn)磁盤訪問(wèn)協(xié)議,如SCSI協(xié)議;磁盤存儲(chǔ)層主要實(shí)現(xiàn)磁盤存儲(chǔ)協(xié)議,如RAID協(xié)議,本發(fā)明提出的用戶數(shù)據(jù)更新方法主要就是在這一層實(shí)現(xiàn);虛擬化系統(tǒng)主要是在磁盤軟件與網(wǎng)絡(luò)協(xié)議棧之間起橋梁作用,從而確保本發(fā)明能夠在網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)中使用,它主要是由文件系統(tǒng)、虛擬磁盤模塊和SCSI目標(biāo)模塊組成。
所述的雙磁頭用戶數(shù)據(jù)更新方法的具體過(guò)程如下(如圖4所示) (1)當(dāng)一個(gè)用戶數(shù)據(jù)塊D的更新請(qǐng)求到達(dá)時(shí),它首先利用讀操作從磁盤上讀出舊的用戶數(shù)據(jù)塊Dold,然后利用寫操作將磁盤上舊的用戶數(shù)據(jù)塊Dold用新的用戶數(shù)據(jù)塊Dnew覆蓋。
(2)當(dāng)讀出舊的用戶數(shù)據(jù)塊Dold后,執(zhí)行校驗(yàn)更新差分計(jì)算程序,首先將新的用戶數(shù)據(jù)塊Dnew和舊的用戶數(shù)據(jù)塊Dold進(jìn)行異或運(yùn)算,得到兩者的差分值A(chǔ)D(即,),然后,根據(jù)采用的糾刪碼的數(shù)據(jù)編碼方法,計(jì)算出D對(duì)應(yīng)的各個(gè)校驗(yàn)數(shù)據(jù)塊的更新差分值。
這里,假設(shè)D所對(duì)應(yīng)的校驗(yàn)數(shù)據(jù)塊分別為P1,P2,…,Pm,并且用x1,x2,…,xm分別表示容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)所采用的糾刪碼中P1,P2,…,Pm關(guān)于D的乘積系數(shù),即 則,按照如下關(guān)系式計(jì)算D對(duì)應(yīng)的各個(gè)校驗(yàn)數(shù)據(jù)塊的更新差分值(即,ΔP1,ΔP2,…,ΔPm) (3)最后,根據(jù)計(jì)算出的各個(gè)校驗(yàn)數(shù)據(jù)塊的更新差分值ΔP1,ΔP2,…,ΔPm,利用復(fù)合操作更新各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm。其中,復(fù)合操作是在一種專用的雙磁頭磁盤驅(qū)動(dòng)器中實(shí)現(xiàn),采用位級(jí)別的流水線技術(shù),每條流水線包括三個(gè)執(zhí)行階段 a)讀階段前端磁頭從磁盤盤片上讀出一位舊的校驗(yàn)數(shù)據(jù)位; b)修改階段計(jì)算部件將讀出的舊的校驗(yàn)數(shù)據(jù)位與計(jì)算出的更新差分值中對(duì)應(yīng)的數(shù)據(jù)位進(jìn)行異或運(yùn)算,得到新的校驗(yàn)數(shù)據(jù)位; c)寫階段后端磁頭將新的校驗(yàn)數(shù)據(jù)位寫回到磁盤上原來(lái)的位置。
復(fù)合操作的具體實(shí)現(xiàn)過(guò)程如圖5所示。以Pi(1≤i≤m)的更新過(guò)程為例,當(dāng)磁盤驅(qū)動(dòng)器接收到對(duì)Pi的復(fù)合操作請(qǐng)求后,首先進(jìn)行磁頭的尋址操作。當(dāng)完成尋址操作后,前端磁頭到達(dá)校驗(yàn)數(shù)據(jù)塊Pi的起始位置,后端磁頭也到達(dá)同一磁道的后方鄰近位置,然后,前端磁頭開始讀舊的校驗(yàn)數(shù)據(jù),如圖5(a)所示。當(dāng)前端磁頭讀出一位舊的校驗(yàn)數(shù)據(jù)位后,計(jì)算部件將讀出的這位舊的校驗(yàn)數(shù)據(jù)位與更新差分值ΔPi中對(duì)應(yīng)的數(shù)據(jù)位進(jìn)行異或運(yùn)算,得到新的校驗(yàn)數(shù)據(jù)塊中對(duì)應(yīng)的數(shù)據(jù)位。當(dāng)后端磁頭到達(dá)校驗(yàn)數(shù)據(jù)塊Pi的起始位置后,后端磁頭開始將計(jì)算出的新的校驗(yàn)數(shù)據(jù)位寫回磁盤,如圖5(b)所示。此后,磁盤驅(qū)動(dòng)器以流水線的方式執(zhí)行Pi中各個(gè)數(shù)據(jù)位的更新操作。當(dāng)前端磁頭到達(dá)校驗(yàn)數(shù)據(jù)塊Pi的末尾位置時(shí),前端磁頭完成對(duì)舊的校驗(yàn)數(shù)據(jù)塊的讀操作,如圖5(c)所示。最后,當(dāng)后端磁頭到達(dá)校驗(yàn)數(shù)據(jù)塊Pi的末尾位置時(shí),后端磁頭完成對(duì)新的校驗(yàn)數(shù)據(jù)塊的寫操作,整個(gè)復(fù)合操作完成,如圖5(d)所示。
這里,假設(shè)存儲(chǔ)在磁盤上的舊的校驗(yàn)數(shù)據(jù)塊為Pold,長(zhǎng)度為n位,對(duì)應(yīng)的更新差分值為ΔP,對(duì)應(yīng)的新的校驗(yàn)數(shù)據(jù)塊為Pnew,并且,Pold,ΔP和Pnew分別表示成 則,計(jì)算部件按照如下關(guān)系式計(jì)算Pnew中的各個(gè)數(shù)據(jù)位的值 復(fù)合操作的流水線時(shí)空?qǐng)D如圖6所示。從圖6可以看出,一個(gè)復(fù)合操作所花的時(shí)間與一個(gè)普通的讀操作所花的時(shí)間十分接近。
在本發(fā)明中,一次校驗(yàn)更新操作只需要一個(gè)復(fù)合操作就可以完成,而不需要讀-修改-寫過(guò)程。在一個(gè)容錯(cuò)能力為t的存儲(chǔ)系統(tǒng)中,一個(gè)小寫操作只需要t+2個(gè)I/O操作,其中包括1個(gè)讀舊的用戶數(shù)據(jù)塊的讀操作,1個(gè)寫新的用戶數(shù)據(jù)塊的寫操作和t個(gè)更新校驗(yàn)數(shù)據(jù)塊的復(fù)合操作。它從根本上改變了現(xiàn)有的校驗(yàn)更新模式,減少了用戶數(shù)據(jù)更新操作中引入的I/O操作個(gè)數(shù),從而從根本上降低了用戶數(shù)據(jù)更新操作時(shí)間開銷,提高了容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的I/O性能。
表1五種I/O負(fù)載的主要特征(IOPS表示每秒的I/O請(qǐng)求個(gè)數(shù)) 在RAID5中,我們對(duì)本發(fā)明提出的雙磁頭用戶數(shù)據(jù)更新方法進(jìn)行了性能模擬測(cè)試。我們基于公認(rèn)的磁盤模擬器DiskSim3.0開發(fā)了一個(gè)I/O負(fù)載驅(qū)動(dòng)的模擬測(cè)試平臺(tái),模擬測(cè)試配置環(huán)境如下模擬磁盤配置采用QuantumAtlas 10K (9.1 G,10025RPM),RAID5磁盤陣列由8+1個(gè)磁盤構(gòu)成,條帶大小設(shè)置成32KB。在測(cè)試中,采用了來(lái)自Hewlett-Packard實(shí)驗(yàn)室的五種不同特征的實(shí)際I/O負(fù)載(見表1)。實(shí)驗(yàn)結(jié)果如圖7所示。從圖7可以看出,本發(fā)明提出的雙磁頭用戶數(shù)據(jù)更新方法顯著地提高了RAID5的I/O性能減少I/O操作個(gè)數(shù)達(dá)23.97%,縮短平均I/O響應(yīng)時(shí)間達(dá)29.23%。
權(quán)利要求
1.大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法,其特征在于,所述方法是在一個(gè)基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)中依次按照以下步驟實(shí)現(xiàn)的
步驟(1)構(gòu)建所述的基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng),并初始化
所述的基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)含有磁盤陣列、存儲(chǔ)適配器、存儲(chǔ)有存儲(chǔ)操作系統(tǒng)的內(nèi)存,以及處理器,其中
磁盤陣列,由若干個(gè)具有相同容量的磁盤組成,其中,對(duì)于完全存儲(chǔ)用戶數(shù)據(jù)的磁盤,采用單磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤;對(duì)于完全存儲(chǔ)校驗(yàn)數(shù)據(jù)的磁盤,或同時(shí)存儲(chǔ)用戶數(shù)據(jù)和校驗(yàn)數(shù)據(jù)的磁盤,采用雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤,所述的雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤在每個(gè)盤面上有兩個(gè)磁頭,包括一個(gè)前端磁頭和一個(gè)后端磁頭,并含有一個(gè)用于位級(jí)別異或運(yùn)算的計(jì)算部件;
存儲(chǔ)適配器,對(duì)所述磁盤陣列中數(shù)據(jù)塊的存儲(chǔ)和訪問(wèn)進(jìn)行控制;
內(nèi)存,是所述磁盤陣列的高速緩沖存儲(chǔ)器,并存儲(chǔ)有包括存儲(chǔ)操作系統(tǒng)在內(nèi)的存儲(chǔ)系統(tǒng)程序,其中,所述的存儲(chǔ)操作系統(tǒng)含有校驗(yàn)更新差分計(jì)算程序;
處理器,為所述磁盤陣列存儲(chǔ)系統(tǒng)執(zhí)行各種計(jì)算和處理程序;
步驟(2)當(dāng)一個(gè)用戶數(shù)據(jù)塊D的更新請(qǐng)求到達(dá)后,所述存儲(chǔ)操作系統(tǒng)利用讀操作從磁盤上讀出舊的用戶數(shù)據(jù)塊Dold,然后再把磁盤上舊的用戶數(shù)據(jù)塊Dold用新的用戶數(shù)據(jù)塊Dnew覆蓋;
步驟(3)當(dāng)讀出所述舊的用戶數(shù)據(jù)塊Dold后,所述存儲(chǔ)操作系統(tǒng)中所述的校驗(yàn)更新差分計(jì)算程序首先把所述的舊的用戶數(shù)據(jù)塊Dold和所述的新的用戶數(shù)據(jù)塊Dnew進(jìn)行異或運(yùn)算,得到兩者的差分值ΔD,即然后根據(jù)所采用的糾刪碼的數(shù)據(jù)編碼方法,按照下面的式子計(jì)算所述用戶數(shù)據(jù)塊D對(duì)應(yīng)的各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm的更新差分值ΔP1,ΔP2,…,ΔPm,其中,m為所述校驗(yàn)數(shù)據(jù)塊的總個(gè)數(shù)
其中,x1,x2,…,xm分別為所采用的糾刪碼中所述各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm關(guān)于所述用戶數(shù)據(jù)塊D的乘積系數(shù);
步驟(4)所述雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤根據(jù)步驟(3)得到的所述各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm的所述更新差分值ΔP1,ΔP2,…,ΔPm,利用復(fù)合操作更新所述各個(gè)校驗(yàn)數(shù)據(jù)塊P1,P2,…,Pm,其中,所述的復(fù)合操作對(duì)校驗(yàn)數(shù)據(jù)塊Pi的更新操作按照以下步驟實(shí)現(xiàn),1≤i≤m
步驟(4.1)在所述雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤收到對(duì)該校驗(yàn)數(shù)據(jù)塊Pi的復(fù)合操作請(qǐng)求后,進(jìn)行磁頭的尋址操作,在完成尋址操作后,所述前端磁頭到達(dá)磁盤盤片上所述校驗(yàn)數(shù)據(jù)塊Pi的起始位置;
步驟(4.2)所述前端磁頭從磁盤盤片上讀出一位舊的校驗(yàn)數(shù)據(jù)位;
步驟(4.3)所述計(jì)算部件把讀出的這位舊的校驗(yàn)數(shù)據(jù)位與所述更新差分值ΔPi中對(duì)應(yīng)的數(shù)據(jù)位進(jìn)行異或運(yùn)算,得到新的校驗(yàn)數(shù)據(jù)位;
步驟(4.4)當(dāng)所述后端磁頭到達(dá)磁盤盤片上該校驗(yàn)數(shù)據(jù)位的存儲(chǔ)位置后,所述后端磁頭把計(jì)算出的新的校驗(yàn)數(shù)據(jù)位寫回到磁盤盤片上;
步驟(4.5)所述雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤以流水線的方式按照步驟(4.2)至步驟(4.4)所述的步驟執(zhí)行所述校驗(yàn)數(shù)據(jù)塊Pi中各個(gè)數(shù)據(jù)位的更新操作,一直到所述后端磁頭將最后一位新的校驗(yàn)數(shù)據(jù)位寫回到磁盤盤片上為止。
全文摘要
大規(guī)模容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)的雙磁頭用戶數(shù)據(jù)更新方法屬于容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)技術(shù)領(lǐng)域,其特征在于,在一個(gè)由磁盤陣列、存儲(chǔ)適配器、存儲(chǔ)有存儲(chǔ)操作系統(tǒng)的內(nèi)存和處理器共同組成的基于糾刪碼的容錯(cuò)磁盤陣列存儲(chǔ)系統(tǒng)中,先利用讀操作從磁盤上讀出舊的用戶數(shù)據(jù)塊,并在磁盤上用新的用戶數(shù)據(jù)塊覆蓋舊的用戶數(shù)據(jù)塊,同時(shí),利用異或運(yùn)算求出新、舊兩個(gè)用戶數(shù)據(jù)塊的差分值,再根據(jù)所采用的糾刪碼中各個(gè)校驗(yàn)數(shù)據(jù)塊關(guān)于用戶數(shù)據(jù)塊的乘積系數(shù)計(jì)算出各個(gè)校驗(yàn)數(shù)據(jù)塊的更新差分值,最后利用雙磁頭磁盤驅(qū)動(dòng)器結(jié)構(gòu)磁盤中基于位級(jí)別流水線技術(shù)的復(fù)合操作完成各個(gè)校驗(yàn)數(shù)據(jù)塊的更新操作。實(shí)驗(yàn)表明,本發(fā)明顯著地減少了I/O操作個(gè)數(shù),縮短了I/O平均響應(yīng)時(shí)間。
文檔編號(hào)G06F11/10GK101349979SQ20081011967
公開日2009年1月21日 申請(qǐng)日期2008年9月5日 優(yōu)先權(quán)日2008年9月5日
發(fā)明者舒繼武, 李明強(qiáng) 申請(qǐng)人:清華大學(xué)