本技術(shù)涉及存儲(chǔ),特別是涉及一種數(shù)據(jù)處理方法、設(shè)備、可讀存儲(chǔ)介質(zhì)和程序產(chǎn)品。
背景技術(shù):
1、在存儲(chǔ)系統(tǒng)中,小塊寫指的是向存儲(chǔ)介質(zhì)(如硬盤驅(qū)動(dòng)器、固態(tài)硬盤ssd等)寫入相對(duì)較小的數(shù)據(jù)塊的操作,通常是主機(jī)端節(jié)點(diǎn)向部署有存儲(chǔ)系統(tǒng)的當(dāng)前設(shè)備端節(jié)點(diǎn)發(fā)送小塊寫指令,當(dāng)前設(shè)備端節(jié)點(diǎn)將對(duì)應(yīng)的數(shù)據(jù)寫入日志中,并對(duì)日志中的數(shù)據(jù)進(jìn)行解析生成對(duì)應(yīng)的緩存實(shí)例,再將緩存實(shí)例寫入緩存中,即可響應(yīng)主機(jī)端節(jié)點(diǎn)寫入完成,接下來再將緩存中的緩存實(shí)例固化至存儲(chǔ)介質(zhì)中,完成對(duì)數(shù)據(jù)的存儲(chǔ)。
2、在當(dāng)前設(shè)備端節(jié)點(diǎn)發(fā)生故障時(shí),業(yè)務(wù)中斷,此時(shí)通常會(huì)啟用備用設(shè)備端節(jié)點(diǎn),由備用設(shè)備端節(jié)點(diǎn)代替當(dāng)前設(shè)備端節(jié)點(diǎn)新建緩存實(shí)例,再將緩存實(shí)例寫入緩存中,以實(shí)現(xiàn)緩存重建過程。
3、但是,上述方式存在緩存重建效率低的問題,進(jìn)而影響業(yè)務(wù)恢復(fù)效率。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問題,提供一種能夠提高業(yè)務(wù)恢復(fù)效率的數(shù)據(jù)處理方法、設(shè)備、可讀存儲(chǔ)介質(zhì)和程序產(chǎn)品。
2、第一方面,本技術(shù)提供了一種數(shù)據(jù)處理方法,包括:
3、在第二節(jié)點(diǎn)存在故障的情況下,確定第一節(jié)點(diǎn)中第一日志包括的多個(gè)待緩存重建的第一數(shù)據(jù),多個(gè)第一數(shù)據(jù)與第二節(jié)點(diǎn)中第二日志包括多個(gè)第二數(shù)據(jù)相同;
4、將各第一數(shù)據(jù)寫入第一節(jié)點(diǎn)中的擺渡池中;
5、輸出提示信息,提示信息用于提示緩存重建完成。
6、上述實(shí)施例中,當(dāng)?shù)诙?jié)點(diǎn)存在故障的情況下,作為備用的第一節(jié)點(diǎn)可以直接從第一日志中獲取到與第二節(jié)點(diǎn)的第二日志中相同的待緩存重建的第一數(shù)據(jù),第一節(jié)點(diǎn)將這些第一數(shù)據(jù)先寫入至擺渡池后,即可輸出提示緩存重建完成,主機(jī)端節(jié)點(diǎn)可以立刻開始下發(fā)小塊寫指令,縮短了緩存重建完成的周期,提高了業(yè)務(wù)恢復(fù)效率。
7、在其中一個(gè)實(shí)施例中,將各第一數(shù)據(jù)寫入第一節(jié)點(diǎn)的內(nèi)存中的擺渡池中,包括:
8、針對(duì)每個(gè)第一數(shù)據(jù),按照預(yù)設(shè)映射方式對(duì)第一數(shù)據(jù)進(jìn)行映射處理,得到第一數(shù)據(jù)對(duì)應(yīng)的第一映射地址;
9、根據(jù)第一映射地址將第一數(shù)據(jù)寫入擺渡池中。
10、上述實(shí)施例中,對(duì)各第一數(shù)據(jù)進(jìn)行映射處理,得到各第一數(shù)據(jù)對(duì)應(yīng)的第一映射地址,并按照各第一數(shù)據(jù)對(duì)應(yīng)的第一映射地址將各第一數(shù)據(jù)寫入至擺渡池中,使得后續(xù)可以快速利用各第一數(shù)據(jù)的第一映射地址找到各第一數(shù)據(jù),便于第一數(shù)據(jù)的管理。
11、在其中一個(gè)實(shí)施例中,擺渡池中包括多個(gè)內(nèi)存空間,根據(jù)第一映射地址將第一數(shù)據(jù)寫入擺渡池中,包括:
12、將第一映射地址與各內(nèi)存空間對(duì)應(yīng)的映射地址進(jìn)行匹配處理;
13、將第一數(shù)據(jù)寫入匹配成功的映射地址對(duì)應(yīng)的內(nèi)存空間中。
14、上述實(shí)施例中,將擺渡池劃分為多個(gè)映射地址不同的內(nèi)存空間,第一節(jié)點(diǎn)將第一映射地址相同的第一數(shù)據(jù)寫入相同的內(nèi)存空間,便于后續(xù)的數(shù)據(jù)讀取,提高了緩存重建的效率。
15、在其中一個(gè)實(shí)施例中,方法還包括:
16、接收主機(jī)端節(jié)點(diǎn)發(fā)送的寫指令,寫指令攜帶初始寫入數(shù)據(jù);
17、在未到達(dá)過渡內(nèi)存清理時(shí)間的情況下,檢測(cè)擺渡池是否為空,得到檢測(cè)結(jié)果;
18、根據(jù)檢測(cè)結(jié)果,將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中。
19、上述實(shí)施例中,第一節(jié)點(diǎn)在執(zhí)行主機(jī)端節(jié)點(diǎn)發(fā)送的寫指令的同時(shí),對(duì)擺渡池中的第一數(shù)據(jù)進(jìn)行處理,無感緩存重建,在提高緩存重建效率的同時(shí),提升了用戶的使用體驗(yàn)。
20、在其中一個(gè)實(shí)施例中,根據(jù)檢測(cè)結(jié)果,將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中,包括:
21、若檢測(cè)結(jié)果為擺渡池不為空,則按照預(yù)設(shè)映射方式對(duì)初始寫入數(shù)據(jù)進(jìn)行映射處理,得到初始寫入數(shù)據(jù)對(duì)應(yīng)的第二映射地址;
22、根據(jù)第二映射地址在擺渡池中確定第二映射地址對(duì)應(yīng)的目標(biāo)內(nèi)存空間,并在目標(biāo)內(nèi)存空間不為空的情況下,將初始寫入數(shù)據(jù)與目標(biāo)內(nèi)存空間中的目標(biāo)第一數(shù)據(jù)進(jìn)行匹配處理;
23、若初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)匹配,則在目標(biāo)內(nèi)存空間中刪除目標(biāo)第一數(shù)據(jù),并將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中。
24、上述實(shí)施例中,在擺渡池不為空的情況下,先對(duì)初始寫入數(shù)據(jù)進(jìn)行映射處理,從而根據(jù)映射處理的得到的第二映射地址找到目標(biāo)內(nèi)存空間,再檢測(cè)內(nèi)存空間是否為空,若不為空,再對(duì)初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)進(jìn)行匹配,并根據(jù)匹配結(jié)果將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入緩存中,避免了不必要的計(jì)算資源的開銷。
25、在其中一個(gè)實(shí)施例中,初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)匹配表征初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)完全相同,將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中,包括:
26、根據(jù)初始寫入數(shù)據(jù)生成緩存實(shí)例;
27、將緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中。
28、上述實(shí)施例中,對(duì)于完全相同的第一數(shù)據(jù),第一節(jié)點(diǎn)可以直接將擺渡池中的目標(biāo)第一數(shù)據(jù)進(jìn)行刪除,并將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中,在對(duì)初始寫入數(shù)據(jù)執(zhí)行寫指令的同時(shí)完成了對(duì)目標(biāo)第一數(shù)據(jù)的緩存重建,減少了計(jì)算資源的開銷。
29、在其中一個(gè)實(shí)施例中,初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)匹配表征初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)部分相同,將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中,包括:
30、根據(jù)目標(biāo)第一數(shù)據(jù)中與初始寫入數(shù)據(jù)不相同的部分,對(duì)初始寫入數(shù)據(jù)進(jìn)行補(bǔ)缺處理,得到目標(biāo)寫入數(shù)據(jù);
31、根據(jù)目標(biāo)寫入數(shù)據(jù)生成緩存實(shí)例,并將緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中。
32、上述實(shí)施例中,對(duì)于部分相同的目標(biāo)第一數(shù)據(jù),第一節(jié)點(diǎn)先利用目標(biāo)第一數(shù)據(jù)對(duì)初始寫入數(shù)據(jù)進(jìn)行補(bǔ)缺處理,所得到目標(biāo)寫入數(shù)據(jù)中包括完整的目標(biāo)第一數(shù)據(jù)與初始寫入數(shù)據(jù),將目標(biāo)寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)對(duì)應(yīng)的緩存中,確保了數(shù)據(jù)的完整性。
33、在其中一個(gè)實(shí)施例中,方法還包括:
34、若初始寫入數(shù)據(jù)與目標(biāo)第一數(shù)據(jù)不匹配,則根據(jù)初始寫入數(shù)據(jù)生成緩存實(shí)例,并將緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中。
35、上述實(shí)施例中,對(duì)于不匹配的目標(biāo)第一數(shù)據(jù),第一節(jié)點(diǎn)無需對(duì)其進(jìn)行處理,可以直接將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入緩存中,提高了數(shù)據(jù)寫入的效率。
36、在其中一個(gè)實(shí)施例中,根據(jù)檢測(cè)結(jié)果,將初始寫入數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中,還包括:
37、若檢測(cè)結(jié)果為擺渡池為空,則根據(jù)初始寫入數(shù)據(jù)生成緩存實(shí)例,并將緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中。
38、上述實(shí)施例中,先檢測(cè)擺渡池是否為空,再進(jìn)行后續(xù)的從數(shù)據(jù)處理,避免了第一節(jié)點(diǎn)直接根據(jù)各初始寫入數(shù)據(jù)對(duì)各第一數(shù)據(jù)進(jìn)行比對(duì)所導(dǎo)致的不必要的資源浪費(fèi)。
39、在其中一個(gè)實(shí)施例中,方法還包括:
40、若到達(dá)過渡內(nèi)存清理時(shí)間,則將擺渡池中的各第一數(shù)據(jù)對(duì)應(yīng)的緩存實(shí)例寫入第一節(jié)點(diǎn)的緩存中,并在擺渡池中刪除各第一數(shù)據(jù)。
41、上述實(shí)施例中,在到達(dá)預(yù)設(shè)的過渡內(nèi)存清理時(shí)間后,會(huì)直接對(duì)擺渡池中的第一數(shù)據(jù)進(jìn)行緩存重建,避免存在遺漏的第一數(shù)據(jù)長(zhǎng)期沒有進(jìn)行緩存重建,提高了數(shù)據(jù)的安全性。
42、第二方面,本技術(shù)還提供了一種數(shù)據(jù)處理裝置,包括:
43、確定模塊,用于在第二節(jié)點(diǎn)存在故障的情況下,確定第一節(jié)點(diǎn)中第一日志包括的多個(gè)待緩存重建的第一數(shù)據(jù),多個(gè)第一數(shù)據(jù)與第二節(jié)點(diǎn)中第二日志包括多個(gè)第二數(shù)據(jù)相同;
44、過渡模塊,用于將各第一數(shù)據(jù)寫入第一節(jié)點(diǎn)中的擺渡池中;
45、提示模塊,用于輸出提示信息,提示信息用于提示緩存重建完成。
46、第三方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如上述第一方面的方法的步驟。
47、第四方面,本技術(shù)實(shí)施例提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述第一方面的方法的步驟。
48、第五方面,本技術(shù)還提供了一種計(jì)算機(jī)程序產(chǎn)品。所述計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述第一方面的方法的步驟。
49、上述數(shù)據(jù)處理方法、設(shè)備、可讀存儲(chǔ)介質(zhì)和程序產(chǎn)品,在第二節(jié)點(diǎn)存在故障的情況下,確定第一節(jié)點(diǎn)中第一日志包括的多個(gè)待緩存重建的第一數(shù)據(jù),并將各第一數(shù)據(jù)寫入第一節(jié)點(diǎn)中的擺渡池中,即可輸出提示信息,其中,多個(gè)第一數(shù)據(jù)與第二節(jié)點(diǎn)中第二日志包括多個(gè)第二數(shù)據(jù)相同,提示信息用于提示緩存重建完成。這樣,當(dāng)?shù)诙?jié)點(diǎn)存在故障的情況下,作為備用的第一節(jié)點(diǎn)可以直接從第一日志中獲取到與第二節(jié)點(diǎn)的第二日志中相同的待緩存重建的第一數(shù)據(jù),第一節(jié)點(diǎn)將這些第一數(shù)據(jù)先寫入至擺渡池后,即可輸出提示緩存重建完成,主機(jī)端節(jié)點(diǎn)可以立刻開始下發(fā)小塊寫指令,縮短了緩存重建完成的周期,提高了業(yè)務(wù)恢復(fù)效率。