亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在基于閃存的存儲(chǔ)介質(zhì)中寫入存儲(chǔ)數(shù)據(jù)的方法和裝置與流程

文檔序號(hào):11589879閱讀:412來(lái)源:國(guó)知局

本申請(qǐng)涉及計(jì)算機(jī)及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種在基于閃存的存儲(chǔ)介質(zhì)中寫入存儲(chǔ)數(shù)據(jù)的方法和裝置。



背景技術(shù):

使用閃存作為存儲(chǔ)介質(zhì),并采用電子讀寫的ssd(solidstatedrives,固態(tài)硬盤)有著優(yōu)異的讀寫性能,已經(jīng)成為個(gè)人電腦以及服務(wù)器存儲(chǔ)的主流硬件。ssd的存儲(chǔ)介質(zhì)是nandflash閃存顆粒,其每一位(bit)的物理特性是可以通過(guò)對(duì)晶體管充電使該位的值由1變?yōu)?,而只能通過(guò)擦除來(lái)將其值由0重置為1。擦除操作以block(塊)為單位進(jìn)行。

而nandflash閃存顆粒的壽命通過(guò)其擦寫次數(shù)來(lái)衡量,某個(gè)block達(dá)到了這個(gè)擦寫次數(shù)后,該block無(wú)法再用來(lái)存儲(chǔ)數(shù)據(jù),成為壞塊。隨著壞塊的增多,ssd的使用壽命就會(huì)銳減。

因此,現(xiàn)有技術(shù)中采用ftl(flashtranslationlevel,閃存轉(zhuǎn)換層)均衡擦寫算法或具有均衡擦寫功能的文件系統(tǒng)層,來(lái)盡可能實(shí)現(xiàn)對(duì)同一個(gè)ssd上各個(gè)塊的均衡擦寫,以延長(zhǎng)單個(gè)ssd的使用壽命。例如,ftl層動(dòng)態(tài)均衡策略、ftl層的靜態(tài)均衡策略、jaff2(journallingflashfilesystemversion2,日志閃存文件系統(tǒng)第2版)、yaffs(yetanotherflashfilesystem,另一種閃存文件系統(tǒng))等。

但是,對(duì)于有多個(gè)ssd可供使用的系統(tǒng),常常會(huì)發(fā)生對(duì)某個(gè)或某些ssd的擦寫次數(shù)過(guò)多,遠(yuǎn)超過(guò)對(duì)另外某個(gè)或某些ssd的情形,從而導(dǎo)致使用過(guò)多的ssd提前損壞。如果該ssd上存儲(chǔ)的數(shù)據(jù)沒有采用高可用性方案,可能造成數(shù)據(jù)丟失;對(duì)采用了高可用性存儲(chǔ)方案的系統(tǒng)來(lái)說(shuō),則會(huì)因額外的數(shù)據(jù)遷移降低系統(tǒng)的穩(wěn)定性。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本申請(qǐng)?zhí)峁┮环N在基于閃存的存儲(chǔ)介質(zhì)中寫入存儲(chǔ)數(shù)據(jù)的方法,應(yīng)用在對(duì)至少兩個(gè)物理存儲(chǔ)單位進(jìn)行寫入控制的中控功能模塊上,包括:

獲取每個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù);

在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中,將存儲(chǔ)數(shù)據(jù)寫入到累計(jì)擦除總次數(shù)最少的至少一個(gè)物理存儲(chǔ)單位上。

本申請(qǐng)還提供了一種在基于閃存的存儲(chǔ)介質(zhì)中寫入存儲(chǔ)數(shù)據(jù)的裝置,應(yīng)用在對(duì)至少兩個(gè)物理存儲(chǔ)單位進(jìn)行寫入控制的中控功能模塊上,包括:

累計(jì)擦除總次數(shù)單元,用于獲取每個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù);

物理存儲(chǔ)單位單元,用于在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中,將存儲(chǔ)數(shù)據(jù)寫入到累計(jì)擦除總次數(shù)最少的至少一個(gè)物理存儲(chǔ)單位上。

由以上技術(shù)方案可見,本申請(qǐng)的實(shí)施例中,由中控功能模塊基于各個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù),在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中選擇累計(jì)擦除總次數(shù)最少的進(jìn)行存儲(chǔ)數(shù)據(jù)的寫入,從而在不同的物理存儲(chǔ)單位之間實(shí)現(xiàn)了均衡擦寫,避免了對(duì)單個(gè)物理存儲(chǔ)單位擦寫過(guò)多導(dǎo)致的該物理存儲(chǔ)單位的提前損壞,在非高可用性場(chǎng)景中能夠降低丟失數(shù)據(jù)的可能性,在高可用性場(chǎng)景中能夠提高所在系統(tǒng)的穩(wěn)定性。

附圖說(shuō)明

圖1是本申請(qǐng)實(shí)施例第一種應(yīng)用場(chǎng)景示例的一種主機(jī)結(jié)構(gòu)組成結(jié)構(gòu)示意圖;

圖2是本申請(qǐng)實(shí)施例第二種應(yīng)用場(chǎng)景示例的一種集群組成結(jié)構(gòu)示意圖;

圖3是本申請(qǐng)實(shí)施例一中一種寫入存儲(chǔ)數(shù)據(jù)的方法的流程圖;

圖4是本申請(qǐng)實(shí)施例二中一種在集群中寫入存儲(chǔ)數(shù)據(jù)的方法的流程圖;

圖5是本申請(qǐng)實(shí)施例所在設(shè)備的一種硬件結(jié)構(gòu)圖;

圖6是本申請(qǐng)實(shí)施例中一種寫入存儲(chǔ)數(shù)據(jù)的裝置的邏輯結(jié)構(gòu)圖;

圖7是本申請(qǐng)實(shí)施例中一種集群的邏輯結(jié)構(gòu)圖。

具體實(shí)施方式

本申請(qǐng)的實(shí)施例提出一種新的在基于閃存的存儲(chǔ)介質(zhì)中寫入存儲(chǔ)數(shù)據(jù)的方法,以每個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù)的統(tǒng)計(jì)數(shù)據(jù)為依據(jù),在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中,選擇具有最小累計(jì)擦除總次數(shù)的一個(gè)到多個(gè)物理存儲(chǔ)單位,來(lái)寫入存儲(chǔ)數(shù)據(jù),實(shí)現(xiàn)了不同物理存儲(chǔ)單位之間的均衡擦寫,使得不同物理存儲(chǔ)單位的使用壽命更為接近,降低了因單個(gè)物理存儲(chǔ)單位的提前損壞造成的丟失數(shù)據(jù)、或影響系統(tǒng)穩(wěn)定的可能性,以解決現(xiàn)有技術(shù)存在的問(wèn)題。

本申請(qǐng)的實(shí)施例中,兩個(gè)或兩個(gè)以上的物理存儲(chǔ)單位由一個(gè)中控功能模塊來(lái)進(jìn)行寫入控制,即由該中控功能模塊決定將存儲(chǔ)數(shù)據(jù)寫入到哪個(gè)或哪些物理存儲(chǔ)單位上。其中,物理存儲(chǔ)單位是在物理上獨(dú)立于其他物理存儲(chǔ)單位、采用基于閃存的存儲(chǔ)介質(zhì)的實(shí)體,可以是一個(gè)獨(dú)立的基于閃存的物理存儲(chǔ)部件(如flash閃存芯片、硬盤等)、一個(gè)包括至少一個(gè)獨(dú)立的基于閃存的物理存儲(chǔ)部件的主機(jī)(如一個(gè)磁盤陣列柜、一臺(tái)個(gè)人電腦、一臺(tái)服務(wù)器)等等;中控功能模塊采用軟件、或軟件和硬件相結(jié)合的方式實(shí)現(xiàn),可以運(yùn)行在某個(gè)物理存儲(chǔ)單位上,也可以運(yùn)行在獨(dú)立于其控制的所有物理存儲(chǔ)單位的其他主機(jī)上。

圖1所示為本申請(qǐng)實(shí)施例應(yīng)用場(chǎng)景的一個(gè)例子,一臺(tái)主機(jī)上安裝有若干個(gè)硬盤(本應(yīng)用場(chǎng)景中的物理存儲(chǔ)單位),并且在該主機(jī)上運(yùn)行有存儲(chǔ)控制模塊(本應(yīng)用場(chǎng)景中的中控功能模塊),用來(lái)對(duì)所有硬盤進(jìn)行讀寫控制,包括確定將哪些數(shù)據(jù)存放在哪個(gè)硬盤上。

圖2所示為本申請(qǐng)實(shí)施例應(yīng)用場(chǎng)景的另一個(gè)例子,在一個(gè)以若干臺(tái)主機(jī)(本應(yīng)用場(chǎng)景中的物理存儲(chǔ)單位)組成的集群中,其中一臺(tái)主機(jī)是主控節(jié)點(diǎn),其他主機(jī)是工作節(jié)點(diǎn)。集群的集群控制模塊(本應(yīng)用場(chǎng)景中的中控功能模塊)運(yùn)行在主控節(jié)點(diǎn)上,對(duì)若干臺(tái)服務(wù)器的數(shù)據(jù)存儲(chǔ)進(jìn)行分配和管理。當(dāng)作為主控節(jié)點(diǎn)的主機(jī)發(fā)生故障時(shí),其他的某臺(tái)主機(jī)能夠升級(jí)為主控節(jié)點(diǎn)繼續(xù)集群的運(yùn)行。

本申請(qǐng)實(shí)施例應(yīng)用的中控功能模塊可以運(yùn)行在任何具有計(jì)算和存儲(chǔ)能力的設(shè)備上,例如可以是平板電腦、pc(personalcomputer,個(gè)人電腦)、筆記本、服務(wù)器等設(shè)備。

本申請(qǐng)的實(shí)施例一中,寫入存儲(chǔ)數(shù)據(jù)的方法的流程如圖3所示。

步驟310,獲取每個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù)。

塊是數(shù)據(jù)存儲(chǔ)中存儲(chǔ)空間分配的最小單位,當(dāng)某個(gè)塊被分配后會(huì)對(duì)該塊進(jìn)行擦除操作,以便得到該塊空間的應(yīng)用程序(或線程、進(jìn)程等)能夠使用該塊寫入數(shù)據(jù)。因此,塊被分配的次數(shù)就是該塊的累計(jì)擦除次數(shù)。

對(duì)物理上獨(dú)立的存儲(chǔ)部件(如硬盤、閃存芯片等)而言,塊的分割通常在對(duì)該存儲(chǔ)部件進(jìn)行初始化時(shí)進(jìn)行,以硬盤為例,在絕大多數(shù)文件系統(tǒng)中,管理員可以在硬盤初始化時(shí)指定塊的大小。假設(shè)由該硬盤所在主機(jī)的存儲(chǔ)控制模塊對(duì)該硬盤進(jìn)行存儲(chǔ)管理,在完成初始化后,存儲(chǔ)控制模塊可以用該硬盤范圍內(nèi)唯一的塊標(biāo)識(shí)來(lái)代表硬盤上的每個(gè)塊,并且維護(hù)該硬盤的每個(gè)塊標(biāo)識(shí)與累計(jì)擦除次數(shù)的對(duì)應(yīng)關(guān)系,每次將某個(gè)塊分配后則在該塊塊標(biāo)識(shí)的累計(jì)擦除次數(shù)上加1;當(dāng)該硬盤作為應(yīng)用場(chǎng)景中的物理存儲(chǔ)單位時(shí),可以將所有塊的累計(jì)擦除次數(shù)相加,得到該硬盤的累計(jì)擦除總次數(shù)?;蛘?,存儲(chǔ)控制模塊也可以在該硬盤的超級(jí)塊(superblock)中維護(hù)所有塊的累計(jì)擦除總次數(shù),每次有塊分配時(shí),則在累計(jì)擦除總次數(shù)上增加該次分配的塊數(shù)量;換言之,在每個(gè)塊被分配后都在累計(jì)擦除總次數(shù)上加1。通過(guò)上述方式,可以得到物理上獨(dú)立的存儲(chǔ)部件的所有塊的累計(jì)擦除總次數(shù)。

對(duì)物理存儲(chǔ)單位是包括至少一塊獨(dú)立物理存儲(chǔ)部件的主機(jī)的情形,可以由每個(gè)主機(jī)上的存儲(chǔ)控制模塊統(tǒng)計(jì)其控制的物理存儲(chǔ)部件的累計(jì)擦除總次數(shù),并上報(bào)給中控功能模塊。具體的上報(bào)方式可以根據(jù)應(yīng)用場(chǎng)景的實(shí)現(xiàn)來(lái)確定,例如,假設(shè)所有主機(jī)組成一個(gè)集群,該集群的集群控制模塊為該應(yīng)用場(chǎng)景中的中控功能模塊,則可以由每個(gè)主機(jī)以預(yù)定周期主動(dòng)向集群控制模塊上報(bào)該主機(jī)上所有塊的累計(jì)擦除總次數(shù),或者也可以由集群控制模塊以預(yù)定周期向各個(gè)主機(jī)輪詢所有塊的累計(jì)擦除總次數(shù),集群控制模塊即可以預(yù)定周期收到每個(gè)主機(jī)的所有塊的累計(jì)擦除總次數(shù)。

步驟320,在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中,將存儲(chǔ)數(shù)據(jù)寫入到累計(jì)擦除總次數(shù)最少的至少一個(gè)物理存儲(chǔ)單位上。

假設(shè)存儲(chǔ)數(shù)據(jù)需要寫入到n(n為自然數(shù))個(gè)物理存儲(chǔ)單位上,現(xiàn)有技術(shù)中,如果有兩個(gè)或兩個(gè)以上物理存儲(chǔ)單位可以用來(lái)寫入存儲(chǔ)數(shù)據(jù),會(huì)采用某個(gè)或某些條件來(lái)確定將存儲(chǔ)數(shù)據(jù)寫入哪個(gè)或哪幾個(gè)物理存儲(chǔ)單位。例如,要滿足的條件通常包括剩余存儲(chǔ)空間足以容納要寫入的存儲(chǔ)數(shù)據(jù)。本申請(qǐng)的實(shí)施例中,可以根據(jù)上述某個(gè)或某些條件的可接受范圍來(lái)生成預(yù)定寫入條件,以下用兩個(gè)例子說(shuō)明:

第一個(gè)例子,在若干個(gè)硬盤中選擇剩余存儲(chǔ)空間最大的n個(gè)來(lái)用作寫入存儲(chǔ)數(shù)據(jù)的硬盤,則本申請(qǐng)實(shí)施例中,可以將剩余存儲(chǔ)空間不小于預(yù)定值或不小于硬盤容量的預(yù)定比例來(lái)作為預(yù)定寫入條件。

第二個(gè)例子,在若干個(gè)主機(jī)中,選擇剩余存儲(chǔ)空間足以容納要寫入的存儲(chǔ)數(shù)據(jù)、并且對(duì)主機(jī)上已保存數(shù)據(jù)的訪問(wèn)量最小的n個(gè)主機(jī)來(lái)寫入存儲(chǔ)數(shù)據(jù),則本申請(qǐng)實(shí)施例中,可以將剩余存儲(chǔ)空間足以容納要寫入的存儲(chǔ)數(shù)據(jù)、并且對(duì)主機(jī)上已保存數(shù)據(jù)的訪問(wèn)量不超過(guò)某個(gè)閾值來(lái)作為預(yù)定寫入條件。

要寫入物理存儲(chǔ)單位的存儲(chǔ)數(shù)據(jù)可以是在進(jìn)行文件保存時(shí)需要寫入的存儲(chǔ)數(shù)據(jù),也可以是在進(jìn)行文件遷移時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)。對(duì)中控功能模塊而言,在進(jìn)行文件保存時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)通常是新增加的存儲(chǔ)數(shù)據(jù),而文件遷移時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)則是對(duì)已保存的存儲(chǔ)數(shù)據(jù)的維護(hù)。根據(jù)應(yīng)用場(chǎng)景的具體實(shí)現(xiàn),進(jìn)行文件保存時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)可能是一份,也可能是兩份或兩份以上、并且通常要將每份寫入到不同的物理存儲(chǔ)單位上。文件遷移包括兩種情形,一種是更換保存文件的物理存儲(chǔ)單位,即將已保存的文件寫入新的物理存儲(chǔ)單位并從原來(lái)保存該文件的物理存儲(chǔ)單位上刪除;另一種是在保存兩份以上文件的應(yīng)用場(chǎng)景中,當(dāng)其中某一份文件損壞或其中某一份文件所在的物理存儲(chǔ)單位故障時(shí),需要將該文件拷貝一份到工作正常的物理存儲(chǔ)單位上,以滿足整個(gè)系統(tǒng)高可用性的要求。在進(jìn)行文件遷移時(shí),可以采用預(yù)定寫入條件來(lái)排除已保存有該文件拷貝的物理存儲(chǔ)單位、和/或發(fā)生故障的物理存儲(chǔ)單位。

可見,不論是在文件保存還是在文件遷移中,需要用來(lái)寫入存儲(chǔ)數(shù)據(jù)的物理存儲(chǔ)單位都可能超過(guò)1個(gè)。因此,中控功能模塊在得到各個(gè)物理存儲(chǔ)單位的所有塊的累計(jì)擦除總次數(shù)后,在有存儲(chǔ)數(shù)據(jù)需要進(jìn)行寫入操作時(shí),基于預(yù)定寫入條件確定可供選擇的若干個(gè)物理存儲(chǔ)單位,并在其中選擇累計(jì)擦除總次數(shù)最小的n(n為自然數(shù))個(gè)物理存儲(chǔ)單位來(lái)寫入存儲(chǔ)數(shù)據(jù)。這樣,可以在不同的物理存儲(chǔ)單位之間實(shí)現(xiàn)均衡擦寫。

本申請(qǐng)的實(shí)施例中,中控功能模塊除了在有存儲(chǔ)數(shù)據(jù)寫入時(shí)進(jìn)行各物理存儲(chǔ)單位之間的均衡擦寫外,還可以在各物理存儲(chǔ)單位的擦寫差異較大時(shí),主動(dòng)進(jìn)行文件遷移,以平衡各個(gè)物理存儲(chǔ)單位的使用情況。具體而言,中控功能模塊可以對(duì)各個(gè)物理存儲(chǔ)單位的擦寫情況進(jìn)行監(jiān)測(cè),在出現(xiàn)某兩個(gè)物理存儲(chǔ)單位的累計(jì)擦除總次數(shù)的差異超過(guò)預(yù)定偏差范圍的情形時(shí),將存儲(chǔ)數(shù)據(jù)從上述兩個(gè)物理存儲(chǔ)單位中累計(jì)擦除總次數(shù)較高的物理存儲(chǔ)單位遷移到累計(jì)擦除總次數(shù)較低的物理存儲(chǔ)單位。

可以根據(jù)實(shí)際應(yīng)用場(chǎng)景中存儲(chǔ)文件的大小、對(duì)擦寫均衡的要求等因素來(lái)確定物理存儲(chǔ)單位間的預(yù)定偏差范圍。在一種應(yīng)用場(chǎng)景中,可以根據(jù)所有物理存儲(chǔ)單位的累計(jì)擦除總次數(shù)的平均值來(lái)確定預(yù)定偏差范圍,例如,將該平均值的20%作為預(yù)定偏差范圍。

可見,本申請(qǐng)的實(shí)施例一中,由中控功能模塊以每個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù)的統(tǒng)計(jì)數(shù)據(jù)為依據(jù),在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中,選擇累計(jì)擦除總次數(shù)最少的物理存儲(chǔ)單位進(jìn)行存儲(chǔ)數(shù)據(jù)的寫入,實(shí)現(xiàn)了不同物理存儲(chǔ)單位之間的均衡擦寫,避免了對(duì)單個(gè)物理存儲(chǔ)單位擦寫過(guò)多導(dǎo)致的該物理存儲(chǔ)單位的提前損壞,使得不同物理存儲(chǔ)單位的使用壽命更為接近,在非高可用性場(chǎng)景中能夠降低丟失數(shù)據(jù)的可能性,在高可用性場(chǎng)景中能夠提高所在系統(tǒng)的穩(wěn)定性。

需要說(shuō)明的是,在一個(gè)由若干主機(jī)組成的集群中,如果至少部分主機(jī)帶有兩個(gè)以上的硬盤或其他獨(dú)立的物理存儲(chǔ)部件,則可以在集群層面和主機(jī)層面分別應(yīng)用本申請(qǐng)的實(shí)施例,即:在集群層面實(shí)現(xiàn)不同主機(jī)之間的擦寫均衡,在主機(jī)層面實(shí)現(xiàn)單個(gè)主機(jī)上不同硬盤或其他物理存儲(chǔ)部件的擦寫均衡。此外,還可以在單個(gè)硬盤或其他物理存儲(chǔ)部件上采用現(xiàn)有技術(shù)中的ftl均衡擦寫算法或采用具有均衡擦寫功能的文件系統(tǒng)層,來(lái)在物理存儲(chǔ)部件的層面實(shí)現(xiàn)擦寫均衡,從而在整個(gè)集群系統(tǒng)的各個(gè)層面都達(dá)到均衡擦寫,延長(zhǎng)集群系統(tǒng)中存儲(chǔ)設(shè)備的使用壽命,同時(shí)提高集群系統(tǒng)的穩(wěn)定性。

本申請(qǐng)的實(shí)施例二中,一種在集群中寫入存儲(chǔ)數(shù)據(jù)的方法的流程如圖4所示。本實(shí)施例中的集群包括至少兩臺(tái)主機(jī),這些主機(jī)由集群控制模塊進(jìn)行存儲(chǔ)管理;每臺(tái)主機(jī)包括至少兩個(gè)采用閃存作為存儲(chǔ)介質(zhì)的硬盤,每臺(tái)主機(jī)上的硬盤由該主機(jī)上的存儲(chǔ)控制模塊進(jìn)行存儲(chǔ)管理。實(shí)施例二給出了一種在兩個(gè)層面(集群層面和主機(jī)層面)同時(shí)應(yīng)用實(shí)施例一的具體實(shí)現(xiàn),其中對(duì)各個(gè)步驟的詳細(xì)說(shuō)明請(qǐng)參見實(shí)施例一中的描述,不再重復(fù)。

步驟410,由集群控制模塊獲取每臺(tái)主機(jī)上所有塊的累計(jì)擦除總次數(shù)。

步驟420,由每臺(tái)主機(jī)的存儲(chǔ)控制模塊分別獲取所在主機(jī)上每個(gè)硬盤的累計(jì)擦除總次數(shù)。

步驟430,在滿足主機(jī)預(yù)定寫入條件的主機(jī)中,集群控制器選擇主機(jī)的累計(jì)擦除總次數(shù)最少的至少一臺(tái)主機(jī)作為目標(biāo)主機(jī)。

當(dāng)集群有需要寫入的存儲(chǔ)數(shù)據(jù)時(shí),例如當(dāng)有進(jìn)行文件遷移時(shí)、和/或進(jìn)行文件保存時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)時(shí),假設(shè)存儲(chǔ)數(shù)據(jù)需要寫入到n臺(tái)主機(jī)上,集群控制器在滿足主機(jī)預(yù)定寫入條件的主機(jī)中,選擇主機(jī)的累計(jì)擦除總次數(shù)最少的n臺(tái)主機(jī)作為目標(biāo)主機(jī),即要寫入存儲(chǔ)數(shù)據(jù)的主機(jī)。

步驟440,在每臺(tái)目標(biāo)主機(jī)上,該主機(jī)的存儲(chǔ)控制器將存儲(chǔ)數(shù)據(jù)寫入到滿足硬盤預(yù)定寫入條件、硬盤的累計(jì)擦除總次數(shù)最少的至少一個(gè)硬盤上。

當(dāng)某臺(tái)主機(jī)被選擇作為目標(biāo)主機(jī)后,假設(shè)存儲(chǔ)數(shù)據(jù)需要寫入該主機(jī)上的m(m為自然數(shù))個(gè)硬盤中,該主機(jī)上的存儲(chǔ)控制器在滿足硬盤預(yù)定寫入條件的硬盤中,選擇m個(gè)硬盤的累計(jì)擦除總次數(shù)最少的硬盤作為目標(biāo)硬盤,將存儲(chǔ)數(shù)據(jù)寫入到目標(biāo)硬盤中。

可以由集群控制器對(duì)各臺(tái)主機(jī)間累計(jì)擦除總次數(shù)的差異進(jìn)行監(jiān)測(cè),當(dāng)某兩臺(tái)主機(jī)的累計(jì)擦除總次數(shù)的差異超過(guò)主機(jī)預(yù)定偏差范圍時(shí),集群控制器將存儲(chǔ)數(shù)據(jù)從這兩臺(tái)主機(jī)中累計(jì)擦除總次數(shù)較高的主機(jī)上,遷移到累計(jì)擦除總次數(shù)較低的主機(jī)上。作為寫入遷移存儲(chǔ)數(shù)據(jù)的主機(jī),可以由其上的存儲(chǔ)控制器將數(shù)據(jù)寫入到滿足硬盤預(yù)定寫入條件、硬盤的累計(jì)擦除總次數(shù)最少的硬盤上。

可以各臺(tái)主機(jī)的存儲(chǔ)控制器對(duì)該主機(jī)上各個(gè)硬盤間累計(jì)擦除總次數(shù)的差異進(jìn)行監(jiān)測(cè),當(dāng)某臺(tái)主機(jī)上的某兩個(gè)硬盤的累計(jì)擦除總次數(shù)的差異超過(guò)硬盤預(yù)定偏差范圍時(shí),該主機(jī)的存儲(chǔ)控制器可以將存儲(chǔ)數(shù)據(jù)從這兩個(gè)硬盤中累計(jì)擦除總次數(shù)較高的硬盤上,遷移到累計(jì)擦除總次數(shù)較低的硬盤上。

可見,本申請(qǐng)實(shí)施例二通過(guò)在集群層面(各個(gè)主機(jī)之間)和主機(jī)層面(每臺(tái)主機(jī)上的各個(gè)硬盤之間)分別應(yīng)用實(shí)施例一中的方法,使得整個(gè)集群系統(tǒng)的物理存儲(chǔ)部件都達(dá)到均衡擦寫,延長(zhǎng)集群系統(tǒng)中存儲(chǔ)設(shè)備的使用壽命,同時(shí)提高集群系統(tǒng)的穩(wěn)定性。

在本申請(qǐng)的一個(gè)應(yīng)用示例中,一個(gè)高可用性集群系統(tǒng)包括k(k為大于3的自然數(shù))臺(tái)主機(jī),每臺(tái)主機(jī)包括至少3塊采用閃存作為存儲(chǔ)介質(zhì)的硬盤。存儲(chǔ)在該集群中的每個(gè)文件應(yīng)該在3個(gè)不同的主機(jī)上分別保存一份。該集群的集群控制器運(yùn)行在集群的主控節(jié)點(diǎn)(其中一臺(tái)主機(jī))上,用來(lái)控制文件存儲(chǔ)在哪3臺(tái)主機(jī)上;每臺(tái)主機(jī)上運(yùn)行有存儲(chǔ)控制器,用來(lái)控制文件存儲(chǔ)在該主機(jī)的哪塊硬盤上。

在每臺(tái)主機(jī)上,存儲(chǔ)控制器在每個(gè)硬盤的超級(jí)塊中維護(hù)有該硬盤上每個(gè)塊的累計(jì)擦除次數(shù)block_wear_count和該硬盤所有塊的累計(jì)擦除總次數(shù)disk_wear_count。當(dāng)該硬盤上的某個(gè)塊被分配后,在該塊的塊標(biāo)識(shí)block_num對(duì)應(yīng)的累計(jì)擦除次數(shù)block_wear_count上加1,并且在該硬盤所有塊的累計(jì)擦除總次數(shù)disk_wear_count上加1。

另外,存儲(chǔ)控制器維護(hù)有該主機(jī)上所有塊的累計(jì)擦除總次數(shù)server_wear_count,server_wear_count等于該主機(jī)上每個(gè)硬盤的disk_wear_count的總和。集群中每臺(tái)工作節(jié)點(diǎn)要定時(shí)向主控節(jié)點(diǎn)發(fā)送心跳信號(hào),工作節(jié)點(diǎn)所在主機(jī)的server_wear_count可以在周期性的心跳信號(hào)中上報(bào)給集群控制器,主控節(jié)點(diǎn)上的存儲(chǔ)控制器也以與心跳信號(hào)相同的周期將主控節(jié)點(diǎn)所在主機(jī)的server_wear_count上報(bào)給集群控制器。

當(dāng)集群中有新文件寫入時(shí),集群控制器在k個(gè)主機(jī)中確定符合主機(jī)預(yù)定寫入條件的若干個(gè)主機(jī),本應(yīng)用示例中寫入新文件的主機(jī)預(yù)定寫入條件為:剩余存儲(chǔ)容量超過(guò)主機(jī)存儲(chǔ)總?cè)萘康?5%、并且對(duì)已保存數(shù)據(jù)的訪問(wèn)量不超過(guò)既定閾值。在符合寫入新文件的主機(jī)預(yù)定寫入條件的主機(jī)中,集群控制器選擇server_wear_count數(shù)目最小的3臺(tái)主機(jī)作為寫入新文件的主機(jī)。

在被選中的3臺(tái)主機(jī)上,每臺(tái)主機(jī)的存儲(chǔ)控制器在該主機(jī)上的硬盤中確定符合硬盤預(yù)定寫入條件的若干個(gè)硬盤,本應(yīng)用示例中硬盤預(yù)定寫入條件為:剩余存儲(chǔ)容量超過(guò)硬盤存儲(chǔ)總?cè)萘康?0%。在符合硬盤寫入條件的硬盤中,存儲(chǔ)控制器選擇disk_wear_count最小的硬盤,來(lái)寫入新的文件。

當(dāng)集群中某臺(tái)主機(jī)、或某臺(tái)主機(jī)上的某個(gè)硬盤發(fā)生故障時(shí),集群控制器認(rèn)為該主機(jī)或該硬盤上保存的文件已不可使用,這樣集群中對(duì)這些文件的存儲(chǔ)份數(shù)不足3份。設(shè)遷移文件的主機(jī)預(yù)定寫入條件為:剩余存儲(chǔ)容量超過(guò)主機(jī)存儲(chǔ)總?cè)萘康?5%、對(duì)已保存數(shù)據(jù)的訪問(wèn)量不超過(guò)既定閾值、并且尚未保存有要寫入的文件,則集群控制器在符合遷移文件的主機(jī)預(yù)定寫入條件的主機(jī)中,選擇server_wear_count數(shù)目最小的主機(jī)作為寫入遷移文件的主機(jī)。在被選中的主機(jī)上,存儲(chǔ)控制器在符合硬盤寫入條件的硬盤中,選擇disk_wear_count最小的硬盤,來(lái)寫入遷移的文件。

集群控制器以一定的主機(jī)監(jiān)測(cè)周期來(lái)檢查各個(gè)主機(jī)的累計(jì)擦除總次數(shù)server_wear_count之間的差異程度,如果集群中server_wear_count的最大值與最小值的差異超過(guò)所有server_wear_count的平均值的20%,則將server_wear_count最大的主機(jī)上的文件遷移到server_wear_count最小的主機(jī)上,直到集群中server_wear_count的最大值與最小值的差異在所有server_wear_count的平均值的20%之內(nèi)。對(duì)遷移文件的選擇可參照現(xiàn)有技術(shù)實(shí)現(xiàn),不再贅述。

在每臺(tái)主機(jī)上,存儲(chǔ)控制器以一定的硬盤監(jiān)測(cè)周期來(lái)檢查該主機(jī)上各個(gè)硬盤的累計(jì)擦除總次數(shù)disk_wear_count之間的差異程度,如果該主機(jī)上disk_wear_count的最大值與最小值的差異超過(guò)所有disk_wear_count的平均值的15%,則將disk_wear_count最大的硬盤上的文件遷移到disk_wear_count最小的硬盤上,直到該主機(jī)上disk_wear_count的最大值與最小值的差異在所有disk_wear_count的平均值的15%之內(nèi)。對(duì)遷移文件的選擇同樣可參照現(xiàn)有技術(shù)實(shí)現(xiàn)。

與上述流程實(shí)現(xiàn)對(duì)應(yīng),本申請(qǐng)的實(shí)施例還提供了一種寫入存儲(chǔ)數(shù)據(jù)的裝置。該裝置可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為邏輯意義上的裝置,是通過(guò)所在設(shè)備的cpu(centralprocessunit,中央處理器)將對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,除了圖5所示的cpu、內(nèi)存以及非易失性存儲(chǔ)器之外,寫入存儲(chǔ)數(shù)據(jù)的裝置所在的設(shè)備通常還包括用于進(jìn)行無(wú)線信號(hào)收發(fā)的芯片等其他硬件,和/或用于實(shí)現(xiàn)網(wǎng)絡(luò)通信功能的板卡等其他硬件。

圖6所示為本申請(qǐng)實(shí)施例提供的一種寫入存儲(chǔ)數(shù)據(jù)的裝置,應(yīng)用在對(duì)至少兩個(gè)物理存儲(chǔ)單位進(jìn)行寫入控制的中控功能模塊上,包括累計(jì)擦除總次數(shù)單元和物理存儲(chǔ)單位單元,其中:累計(jì)擦除總次數(shù)單元用于獲取每個(gè)物理存儲(chǔ)單位內(nèi)所有塊的累計(jì)擦除總次數(shù);物理存儲(chǔ)單位單元用于在滿足預(yù)定寫入條件的物理存儲(chǔ)單位中,將存儲(chǔ)數(shù)據(jù)寫入到累計(jì)擦除總次數(shù)最少的至少一個(gè)物理存儲(chǔ)單位上。

一個(gè)例子中,所述裝置還包括偏差遷移單元,用于當(dāng)某兩個(gè)物理存儲(chǔ)單位的累計(jì)擦除總次數(shù)的差異超過(guò)預(yù)定偏差范圍時(shí),將存儲(chǔ)數(shù)據(jù)從所述兩個(gè)物理存儲(chǔ)單位中累計(jì)擦除總次數(shù)較高的物理存儲(chǔ)單位遷移到累計(jì)擦除總次數(shù)較低的物理存儲(chǔ)單位。

上述例子中,所述預(yù)定偏差范圍可以根據(jù)所有物理存儲(chǔ)單位的累計(jì)擦除總次數(shù)的平均值確定。

可選的,所述存儲(chǔ)數(shù)據(jù)包括:進(jìn)行文件遷移時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)、和/或進(jìn)行文件保存時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)。

可選的,所述物理存儲(chǔ)單位包括:主機(jī);所述中控功能模塊包括:包括所有主機(jī)的集群的集群控制模塊;所述累計(jì)擦除總次數(shù)單元具體用于:接收每個(gè)主機(jī)以預(yù)定周期上報(bào)的累計(jì)擦除總次數(shù)。

可選的,所述物理存儲(chǔ)單位包括:硬盤;所述中控功能模塊包括:主機(jī)的存儲(chǔ)控制模塊;所述累計(jì)擦除總次數(shù)單元具體用于:讀取每個(gè)硬盤的超級(jí)塊中維護(hù)的累計(jì)擦除總次數(shù),所述累計(jì)擦除總次數(shù)在所述硬盤的每個(gè)塊被分配后加1。

圖7所示為本申請(qǐng)實(shí)施例提供的一種集群,包括至少兩臺(tái)主機(jī),每臺(tái)主機(jī)包括至少兩個(gè)采用閃存作為存儲(chǔ)介質(zhì)的硬盤,還包括集群控制模塊和每臺(tái)主機(jī)上的存儲(chǔ)控制模塊,其中:集群控制模塊用于獲取每臺(tái)主機(jī)上所有塊的累計(jì)擦除總次數(shù),以及在需要寫入存儲(chǔ)數(shù)據(jù)時(shí),在滿足主機(jī)預(yù)定寫入條件的主機(jī)中,選擇主機(jī)的累計(jì)擦除總次數(shù)最少的至少一臺(tái)主機(jī)作為目標(biāo)主機(jī);每臺(tái)主機(jī)上的存儲(chǔ)控制模塊用于獲取所在主機(jī)上每個(gè)硬盤的累計(jì)擦除總次數(shù),以及當(dāng)所在主機(jī)作為目標(biāo)主機(jī)時(shí),將存儲(chǔ)數(shù)據(jù)寫入到滿足硬盤預(yù)定寫入條件、硬盤的累計(jì)擦除總次數(shù)最少的至少一個(gè)硬盤上。

可選的,所述集群控制模塊還用于:當(dāng)某兩臺(tái)主機(jī)的的累計(jì)擦除總次數(shù)的差異超過(guò)主機(jī)預(yù)定偏差范圍時(shí),將存儲(chǔ)數(shù)據(jù)從所述兩臺(tái)主機(jī)中累計(jì)擦除總次數(shù)較高的主機(jī)遷移到累計(jì)擦除總次數(shù)較低的主機(jī);所述每條主機(jī)上的存儲(chǔ)控制模塊還用于:當(dāng)某臺(tái)主機(jī)上的某兩個(gè)硬盤的累計(jì)擦除總次數(shù)的差異超過(guò)硬盤預(yù)定偏差范圍時(shí),將存儲(chǔ)數(shù)據(jù)從所述兩個(gè)硬盤中累計(jì)擦除總次數(shù)較高的硬盤遷移到累計(jì)擦除總次數(shù)較低的硬盤。

可選的,所述存儲(chǔ)數(shù)據(jù)包括:進(jìn)行文件遷移時(shí)需要寫入的存儲(chǔ)數(shù)據(jù)。

以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。

在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。

本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1