現(xiàn)方式中,所述裝置還包括:
[0044]故障節(jié)點(diǎn)確定模塊,用于當(dāng)所述目標(biāo)計(jì)算節(jié)點(diǎn)檢測(cè)到所述存儲(chǔ)系統(tǒng)中計(jì)算節(jié)點(diǎn)的數(shù)量因故障減少時(shí),確定所述多個(gè)計(jì)算節(jié)點(diǎn)中出現(xiàn)故障計(jì)算節(jié)點(diǎn);
[0045]獲取模塊,用于獲取所述多個(gè)計(jì)算節(jié)點(diǎn)的控制分區(qū)的數(shù)量、所述目標(biāo)計(jì)算節(jié)點(diǎn)中每一個(gè)控制分區(qū)的標(biāo)識(shí)和所述故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)的標(biāo)識(shí);
[0046]第一處理模塊,用于在所述故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)的標(biāo)識(shí)與所述控制分區(qū)的數(shù)量之間的求模結(jié)果與所述目標(biāo)計(jì)算節(jié)點(diǎn)中一個(gè)控制分區(qū)的標(biāo)識(shí)相同時(shí),接管所述故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū);
[0047]其中,一個(gè)計(jì)算節(jié)點(diǎn)包括至少一個(gè)控制分區(qū),一個(gè)存儲(chǔ)節(jié)點(diǎn)包括至少一個(gè)數(shù)據(jù)分區(qū),一個(gè)計(jì)算節(jié)點(diǎn)可對(duì)多個(gè)數(shù)據(jù)分區(qū)進(jìn)行管理。
[0048]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0049]分配模塊,用于為管理的每一個(gè)數(shù)據(jù)分區(qū)分別分配序列號(hào);
[0050]遞增模塊,用于對(duì)目標(biāo)數(shù)據(jù)分區(qū)的序列號(hào)執(zhí)行加一;其中,所述目標(biāo)數(shù)據(jù)分區(qū)為所述目標(biāo)計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)中接收到修改類(lèi)I/o請(qǐng)求的分區(qū);
[0051]所述第一處理模塊,用于讀取所述故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)在所述故障計(jì)算節(jié)點(diǎn)發(fā)生故障時(shí)的序列號(hào)。
[0052]結(jié)合第二方面,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0053]計(jì)算模塊,用于在所述多個(gè)目標(biāo)存儲(chǔ)節(jié)點(diǎn)中任一存儲(chǔ)節(jié)點(diǎn)發(fā)生故障且恢復(fù)后,計(jì)算故障存儲(chǔ)節(jié)點(diǎn)中指定數(shù)據(jù)分區(qū)的序列號(hào)與正常存儲(chǔ)節(jié)點(diǎn)中同一數(shù)據(jù)分區(qū)的當(dāng)前序列號(hào)之差;其中,所述正常存儲(chǔ)節(jié)點(diǎn)為在所述故障存儲(chǔ)節(jié)點(diǎn)發(fā)生故障時(shí),對(duì)所述指定數(shù)據(jù)分區(qū)進(jìn)行管理的存儲(chǔ)節(jié)點(diǎn);
[0054]第二處理模塊,用于當(dāng)所述指定數(shù)據(jù)分區(qū)的序列號(hào)與當(dāng)前序列號(hào)之差不大于所述目標(biāo)計(jì)算節(jié)點(diǎn)生成的I/o請(qǐng)求的操作日志數(shù)量時(shí),則執(zhí)行所述正常存儲(chǔ)節(jié)點(diǎn)上同一數(shù)據(jù)分區(qū)上的I/o請(qǐng)求,并更新所述指定數(shù)據(jù)分區(qū)的序列號(hào);若所述指定數(shù)據(jù)分區(qū)的序列號(hào)與當(dāng)前序列號(hào)之差大于所述I/o請(qǐng)求的操作日志數(shù)量,則將所述正常存儲(chǔ)節(jié)點(diǎn)的同一數(shù)據(jù)分區(qū)存儲(chǔ)的I/O請(qǐng)求迀移至所述故障存儲(chǔ)節(jié)點(diǎn);
[0055]其中,序列號(hào)用于統(tǒng)計(jì)分發(fā)到數(shù)據(jù)分區(qū)的修改類(lèi)I/O請(qǐng)求的數(shù)量,一個(gè)數(shù)據(jù)分區(qū)在接收到一個(gè)修改類(lèi)I/o請(qǐng)求后,所述數(shù)據(jù)分區(qū)的序列號(hào)加一。
[0056]第三方面,提供了一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)方法,所述存儲(chǔ)系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn)和多個(gè)存儲(chǔ)節(jié)點(diǎn),所述方法包括:
[0057]外部節(jié)點(diǎn)接收輸入輸出I/O請(qǐng)求;
[0058]所述外部節(jié)點(diǎn)根據(jù)第一算法從所述多個(gè)計(jì)算節(jié)點(diǎn)中確定處理所述I/O請(qǐng)求的目標(biāo)計(jì)算節(jié)點(diǎn);
[0059]所述外部節(jié)點(diǎn)將所述I/O請(qǐng)求發(fā)送至所述目標(biāo)計(jì)算節(jié)點(diǎn),由所述目標(biāo)計(jì)算節(jié)點(diǎn)根據(jù)第二算法從所述多個(gè)存儲(chǔ)節(jié)點(diǎn)中確定目標(biāo)存儲(chǔ)節(jié)點(diǎn),并將所述I/O請(qǐng)求分發(fā)至所述目標(biāo)存儲(chǔ)節(jié)點(diǎn),所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)包括主存儲(chǔ)節(jié)點(diǎn)和副存儲(chǔ)節(jié)點(diǎn)。
[0060]第四方面,提供了一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)裝置,所述存儲(chǔ)系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn)和多個(gè)存儲(chǔ)節(jié)點(diǎn),所述裝置包括:
[0061 ]接收模塊,用于接收輸入輸出I/O請(qǐng)求;
[0062]計(jì)算節(jié)點(diǎn)確定模塊,用于根據(jù)第一算法從所述多個(gè)計(jì)算節(jié)點(diǎn)中確定處理所述I/O請(qǐng)求的目標(biāo)計(jì)算節(jié)點(diǎn);
[0063]發(fā)送模塊,用于將所述I/O請(qǐng)求發(fā)送至所述目標(biāo)計(jì)算節(jié)點(diǎn),由所述目標(biāo)計(jì)算節(jié)點(diǎn)根據(jù)第二算法從所述多個(gè)存儲(chǔ)節(jié)點(diǎn)中確定目標(biāo)存儲(chǔ)節(jié)點(diǎn),并將所述I/O請(qǐng)求分發(fā)至所述目標(biāo)存儲(chǔ)節(jié)點(diǎn),所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)包括主存儲(chǔ)節(jié)點(diǎn)和副存儲(chǔ)節(jié)點(diǎn)。
[0064]第五方面,提供了一種存儲(chǔ)系統(tǒng),所述存儲(chǔ)系統(tǒng)包括多個(gè)計(jì)算節(jié)點(diǎn)和多個(gè)存儲(chǔ)節(jié)占.V,
[0065]目標(biāo)計(jì)算節(jié)點(diǎn),用于接收外部節(jié)點(diǎn)發(fā)送的輸入輸出I/O請(qǐng)求;其中,所述目標(biāo)計(jì)算節(jié)點(diǎn)由所述外部節(jié)點(diǎn)根據(jù)第一算法從所述多個(gè)計(jì)算節(jié)點(diǎn)中確定;根據(jù)第二算法從所述多個(gè)存儲(chǔ)節(jié)點(diǎn)中確定目標(biāo)存儲(chǔ)節(jié)點(diǎn);向所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)發(fā)送所述I/o請(qǐng)求;所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)包括主存儲(chǔ)節(jié)點(diǎn)和副存儲(chǔ)節(jié)點(diǎn);
[0066]所述目標(biāo)存儲(chǔ)節(jié)點(diǎn),用于存儲(chǔ)所述目標(biāo)計(jì)算節(jié)點(diǎn)發(fā)送的I/O請(qǐng)求。
[0067]第六方面,提供了一種計(jì)算節(jié)點(diǎn),所述計(jì)算節(jié)點(diǎn)至少包括發(fā)送器、接收器和處理器,所述發(fā)送器和所述接收器分別與所述處理器連接,所述處理器用于
[0068]通過(guò)所述接收器接收外部節(jié)點(diǎn)發(fā)送的輸入輸出I/O請(qǐng)求,所述I/O請(qǐng)求由所述外部節(jié)點(diǎn)在根據(jù)第一算法從所述多個(gè)計(jì)算節(jié)點(diǎn)中確定處理所述I/O請(qǐng)求的目標(biāo)計(jì)算節(jié)點(diǎn)后發(fā)送;根據(jù)第二算法從所述多個(gè)存儲(chǔ)節(jié)點(diǎn)中確定目標(biāo)存儲(chǔ)節(jié)點(diǎn);通過(guò)所述發(fā)送器向所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)發(fā)送所述I/O請(qǐng)求;所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)包括主存儲(chǔ)節(jié)點(diǎn)和副存儲(chǔ)節(jié)點(diǎn)。
[0069]本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:
[0070]由于對(duì)節(jié)點(diǎn)的計(jì)算功能和存儲(chǔ)功能進(jìn)行了分離部署,使得存儲(chǔ)系統(tǒng)中包括多個(gè)計(jì)算節(jié)點(diǎn)和多個(gè)存儲(chǔ)節(jié)點(diǎn),因此計(jì)算性能和存儲(chǔ)性能不相互制約相互影響,可根據(jù)需要對(duì)系統(tǒng)的計(jì)算性能和存儲(chǔ)性能進(jìn)行靈活配置,且計(jì)算功能無(wú)需依賴(lài)存儲(chǔ)功能,軟硬件之間實(shí)現(xiàn)了解耦。
【附圖說(shuō)明】
[0071]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0072]圖1是【背景技術(shù)】中提供的一種存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖;
[0073]圖2是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖;
[0074]圖3是本發(fā)明實(shí)施例提供的一種計(jì)算節(jié)點(diǎn)的結(jié)構(gòu)示意圖;
[0075]圖4是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)方法的流程圖;
[0076]圖5是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)方法的流程圖;
[0077]圖6是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)方法的流程圖;
[0078]圖7是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)方法的流程圖;
[0079]圖8是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)方法的流程圖;
[0080]圖9是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)裝置的結(jié)構(gòu)示意圖;
[0081]圖10是本發(fā)明實(shí)施例提供的一種存儲(chǔ)系統(tǒng)中數(shù)據(jù)分發(fā)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0082]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0083]在對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)地解釋說(shuō)明之前,先對(duì)本發(fā)明實(shí)施例提供的存儲(chǔ)系統(tǒng)涉及的節(jié)點(diǎn)部署情況和I/O流程進(jìn)行說(shuō)明。
[0084]參見(jiàn)圖2,本發(fā)明實(shí)施例將節(jié)點(diǎn)的計(jì)算功能和存儲(chǔ)功能進(jìn)行了分離部署,存儲(chǔ)系統(tǒng)中包括多個(gè)計(jì)算節(jié)點(diǎn)和多個(gè)存儲(chǔ)節(jié)點(diǎn)。在圖2中,存儲(chǔ)系統(tǒng)中的全部計(jì)算節(jié)點(diǎn)組成了第一DHT環(huán),全部的存儲(chǔ)節(jié)點(diǎn)組成了第二 DHT環(huán)。當(dāng)外部節(jié)點(diǎn)檢測(cè)到用戶(hù)的一個(gè)I/O請(qǐng)求后,首先根據(jù)第一算法確定處理該I/O請(qǐng)求的目標(biāo)計(jì)算節(jié)點(diǎn)。之后,外部節(jié)點(diǎn)將該I/O請(qǐng)求發(fā)送至該目標(biāo)計(jì)算節(jié)點(diǎn),由該目標(biāo)計(jì)算節(jié)點(diǎn)根據(jù)第二算法確定存儲(chǔ)該I/o請(qǐng)求的目標(biāo)存儲(chǔ)節(jié)點(diǎn),并將該I/o請(qǐng)求分發(fā)至對(duì)應(yīng)的目標(biāo)存儲(chǔ)節(jié)點(diǎn)進(jìn)行存儲(chǔ)。由于本發(fā)明實(shí)施例對(duì)I/O請(qǐng)求的存儲(chǔ)基于多副本,因此目標(biāo)存儲(chǔ)節(jié)點(diǎn)包括主存儲(chǔ)節(jié)點(diǎn)和多個(gè)副存儲(chǔ)節(jié)點(diǎn)。這樣便實(shí)現(xiàn)了存儲(chǔ)和控制分離部署,并可以根據(jù)需要對(duì)計(jì)算性能和存儲(chǔ)性能進(jìn)行靈活配置。需要說(shuō)明的是,第一算法和第二算法均歸屬于哈希算法,二者基于相類(lèi)似的構(gòu)思。
[0085]圖3是本發(fā)明實(shí)施例提供的一種計(jì)算節(jié)點(diǎn)的結(jié)構(gòu)示意圖,參見(jiàn)圖3,包括:接收器301、發(fā)送器302、處理器303,該接收器301、該發(fā)送器302分別與該處理器303連接,該處理器303用于:
[0086]通過(guò)接收器接收外部節(jié)點(diǎn)發(fā)送的輸入輸出I/O請(qǐng)求,I/O請(qǐng)求由外部節(jié)點(diǎn)在根據(jù)第一算法從多個(gè)計(jì)算節(jié)點(diǎn)中確定處理I/O請(qǐng)求的目標(biāo)計(jì)算節(jié)點(diǎn)后發(fā)送;根據(jù)第二算法從多個(gè)存儲(chǔ)節(jié)點(diǎn)中確定目標(biāo)存儲(chǔ)節(jié)點(diǎn);通過(guò)發(fā)送器向目標(biāo)存儲(chǔ)節(jié)點(diǎn)發(fā)送I/o請(qǐng)求;目標(biāo)存儲(chǔ)節(jié)點(diǎn)包括主存儲(chǔ)節(jié)點(diǎn)和副存儲(chǔ)節(jié)點(diǎn)。
[0087]在另一個(gè)實(shí)施例中,處理器303用于:
[0088]若通過(guò)接收器301接收到主存儲(chǔ)節(jié)點(diǎn)返回的第一存儲(chǔ)成功消息,且存儲(chǔ)I/O請(qǐng)求的副存儲(chǔ)節(jié)點(diǎn)數(shù)量達(dá)到閾值,則生成I/o請(qǐng)求的操作日志,并通過(guò)發(fā)送器302向外部節(jié)點(diǎn)返回第二存儲(chǔ)成功消息。
[0089]在另一個(gè)實(shí)施例中,處理器303用于:
[0090]當(dāng)檢測(cè)到存儲(chǔ)系統(tǒng)中計(jì)算節(jié)點(diǎn)的數(shù)量因故障減少時(shí),確定多個(gè)計(jì)算節(jié)點(diǎn)中出現(xiàn)故障計(jì)算節(jié)點(diǎn),獲取多個(gè)計(jì)算節(jié)點(diǎn)的控制分區(qū)的數(shù)量、目標(biāo)計(jì)算節(jié)點(diǎn)中每一個(gè)控制分區(qū)的標(biāo)識(shí)和故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)的標(biāo)識(shí);
[0091]若故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)的標(biāo)識(shí)與控制分區(qū)的數(shù)量之間的求模結(jié)果與目標(biāo)計(jì)算節(jié)點(diǎn)中一個(gè)控制分區(qū)的標(biāo)識(shí)相同,則接管故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū);
[0092]其中,一個(gè)計(jì)算節(jié)點(diǎn)包括至少一個(gè)控制分區(qū),一個(gè)存儲(chǔ)節(jié)點(diǎn)包括至少一個(gè)數(shù)據(jù)分區(qū),一個(gè)計(jì)算節(jié)點(diǎn)可對(duì)多個(gè)數(shù)據(jù)分區(qū)進(jìn)行管理。
[0093]在另一個(gè)實(shí)施例中,處理器303用于:
[0094]為管理的每一個(gè)數(shù)據(jù)分區(qū)分別分配序列號(hào);
[0095]對(duì)目標(biāo)數(shù)據(jù)分區(qū)的序列號(hào)執(zhí)行加一;其中,目標(biāo)數(shù)據(jù)分區(qū)為目標(biāo)計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)中接收到修改類(lèi)I/O請(qǐng)求的分區(qū);
[0096]讀取故障計(jì)算節(jié)點(diǎn)管理的數(shù)據(jù)分區(qū)在故障計(jì)算節(jié)點(diǎn)發(fā)生故障時(shí)的序列號(hào)。
[0097]在另一個(gè)實(shí)施例中,處理器303用于:
[0098]在多個(gè)目標(biāo)存儲(chǔ)節(jié)點(diǎn)中任一存儲(chǔ)節(jié)點(diǎn)發(fā)生故障且恢復(fù)后,目標(biāo)計(jì)算節(jié)點(diǎn)計(jì)算故障存儲(chǔ)節(jié)點(diǎn)中指定數(shù)據(jù)分區(qū)的序列號(hào)與正常存儲(chǔ)節(jié)點(diǎn)中同一數(shù)據(jù)分區(qū)的當(dāng)前序列號(hào)之差;其中,正常存儲(chǔ)節(jié)點(diǎn)為在故障存儲(chǔ)節(jié)點(diǎn)發(fā)生故障時(shí),對(duì)指定數(shù)據(jù)分區(qū)進(jìn)行管理的存儲(chǔ)節(jié)點(diǎn);
[0099]若指定數(shù)據(jù)分區(qū)的序列號(hào)與當(dāng)前序列號(hào)之差不大于目標(biāo)計(jì)算節(jié)點(diǎn)生成的I/O請(qǐng)求的操作日志數(shù)量,則目標(biāo)計(jì)算節(jié)點(diǎn)執(zhí)行正常存儲(chǔ)節(jié)點(diǎn)上同一數(shù)據(jù)分區(qū)上的I/o請(qǐng)求,并更新指定數(shù)據(jù)分區(qū)的序列號(hào);
[0100]若指定數(shù)據(jù)分區(qū)的序列號(hào)與當(dāng)前序列號(hào)之差大于I