基于多副本的數(shù)據(jù)存儲(chǔ)方法和裝置的制造方法
【專利摘要】本公開(kāi)公開(kāi)了一種基于多副本的數(shù)據(jù)存儲(chǔ)方法,包括以下步驟:當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大??;多個(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程;主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。上述基于多副本的數(shù)據(jù)存儲(chǔ)方法保證數(shù)據(jù)的強(qiáng)一致性,能夠應(yīng)對(duì)包括主OSD(Object Storage Daemon,對(duì)象存儲(chǔ)進(jìn)程)在內(nèi)的任一副本所在的磁盤(pán)的故障。本公開(kāi)還公開(kāi)了一種基于多副本的數(shù)據(jù)存儲(chǔ)裝置。
【專利說(shuō)明】
基于多副本的數(shù)據(jù)存儲(chǔ)方法和裝置
技術(shù)領(lǐng)域
[0001]本公開(kāi)涉及計(jì)算機(jī)存儲(chǔ)技術(shù)領(lǐng)域,特別是涉及一種基于多副本的數(shù)據(jù)存儲(chǔ)方法和
目.0
【背景技術(shù)】
[0002]目前,多副本下,無(wú)法保證數(shù)據(jù)的完全一致,需要采取額外的機(jī)制來(lái)保證這一點(diǎn)。例如,在三副本下,傳統(tǒng)的方式都是由一個(gè)磁盤(pán)負(fù)責(zé)接收請(qǐng)求,并轉(zhuǎn)發(fā)數(shù)據(jù)給另外兩塊磁盤(pán),等另外兩塊落盤(pán)成功之后,自己再落盤(pán),并在成功之后給予客戶回應(yīng),至于磁盤(pán)是否能夠完全正確的寫(xiě)入,并沒(méi)有任何機(jī)制可以完全確認(rèn),這樣有可能存在問(wèn)題,即其中兩快盤(pán)出現(xiàn)在落盤(pán)是寫(xiě)入出現(xiàn)與實(shí)際不相符的情況,而且當(dāng)僅有的一塊正確的盤(pán)出現(xiàn)不可恢復(fù)的故障之后,這部分錯(cuò)誤的數(shù)據(jù)將沒(méi)有辦法恢復(fù)出來(lái)。這對(duì)于數(shù)據(jù)一致性要求非常高的場(chǎng)景下是無(wú)法接受的。另外,傳統(tǒng)技術(shù)中,上述的不一致性存在的時(shí)間越長(zhǎng),數(shù)據(jù)的安全性就越受到威脅,由于磁盤(pán)有壽命,隨著壞掉的磁盤(pán)越來(lái)越多,磁盤(pán)的更換都會(huì)帶來(lái)潛在的數(shù)據(jù)丟失的情況。
【發(fā)明內(nèi)容】
[0003]基于此,有必要提供一種提高數(shù)據(jù)一致性且保證數(shù)據(jù)安全的基于多副本的數(shù)據(jù)存儲(chǔ)方法和裝置。
[0004]—種基于多副本的數(shù)據(jù)存儲(chǔ)方法,該方法包括:
[0005]當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小;
[0006]多個(gè)從磁盤(pán)進(jìn)程在接受到所述文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將所述循環(huán)冗余碼、所述文件的大小以及所述文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至所述主磁盤(pán)進(jìn)程;
[0007]所述主磁盤(pán)進(jìn)程收到所述多個(gè)從磁盤(pán)進(jìn)程的所述反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。
[0008]在其中一個(gè)實(shí)施例中,其中,所述計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小以文件系統(tǒng)擴(kuò)展屬性的方式進(jìn)行存儲(chǔ)。
[0009]在其中一個(gè)實(shí)施例中,其中,所述主磁盤(pán)進(jìn)程收到所述多個(gè)從磁盤(pán)進(jìn)程的所述反饋信息后,執(zhí)行核對(duì)操作包括:
[0010]所述主磁盤(pán)進(jìn)程接收到所述反饋信息后,遍歷其存儲(chǔ)的所有文件;
[0011 ]所述主磁盤(pán)進(jìn)程向位于多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程發(fā)起文件長(zhǎng)度核對(duì)請(qǐng)求;
[0012]接收到所述多個(gè)從磁盤(pán)進(jìn)程返回的所述文件長(zhǎng)度后,將文件系統(tǒng)中比對(duì)長(zhǎng)度與擴(kuò)展屬性中所述文件長(zhǎng)度執(zhí)行比對(duì)操作;
[0013]如果所述文件長(zhǎng)度比對(duì)不一致,則向所述主磁盤(pán)進(jìn)程返回錯(cuò)誤消息,如果所述文件長(zhǎng)度比對(duì)一致,則將所述文件長(zhǎng)度和副本號(hào)發(fā)送至所述主磁盤(pán)進(jìn)程。
[0014]在其中一個(gè)實(shí)施例中,還包括:當(dāng)向所述主磁盤(pán)進(jìn)程返回所述錯(cuò)誤消息時(shí),則針對(duì)比對(duì)的所述文件進(jìn)行修復(fù)標(biāo)志的設(shè)置。
[0015]在其中一個(gè)實(shí)施例中,其中,所述針對(duì)比對(duì)的所述文件進(jìn)行修復(fù)標(biāo)志的設(shè)置包括:
[0016]收集位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程中所述文件長(zhǎng)度和所述副本號(hào);
[0017]將所述文件長(zhǎng)度和所述副本號(hào)與所述主磁盤(pán)進(jìn)程中的所述文件長(zhǎng)度進(jìn)行比對(duì);
[0018]若比對(duì)不一致,則將所述主磁盤(pán)進(jìn)程中的所述文件拷貝給位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程,若比對(duì)一致,則對(duì)所述主磁盤(pán)進(jìn)程中的所述文件執(zhí)行替換操作。
[0019]—種基于多副本的數(shù)據(jù)存儲(chǔ)裝置,包括:
[0020]計(jì)算模塊,用于當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大?。?br>[0021]反饋信息發(fā)送模塊,用于多個(gè)從磁盤(pán)進(jìn)程在接受到所述文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將所述循環(huán)冗余碼、所述文件的大小以及所述文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至所述主磁盤(pán)進(jìn)程;
[0022]核對(duì)處理模塊,用于所述主磁盤(pán)進(jìn)程收到所述多個(gè)從磁盤(pán)進(jìn)程的所述反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。
[0023]在其中一個(gè)實(shí)施例中,其中,所述計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小以文件系統(tǒng)擴(kuò)展屬性的方式進(jìn)行存儲(chǔ)。
[0024]在其中一個(gè)實(shí)施例中,其中,所述核對(duì)處理模塊包括:
[0025]遍歷模塊,用于所述主磁盤(pán)進(jìn)程接收到所述反饋信息后,遍歷其存儲(chǔ)的所有文件;
[0026]核對(duì)請(qǐng)求模塊,用于所述主磁盤(pán)進(jìn)程向位于多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程發(fā)起文件長(zhǎng)度核對(duì)請(qǐng)求;
[0027]第一比對(duì)模塊,用于接收到所述多個(gè)從磁盤(pán)進(jìn)程返回的所述文件長(zhǎng)度后,將文件系統(tǒng)中比對(duì)長(zhǎng)度與擴(kuò)展屬性中所述文件長(zhǎng)度執(zhí)行比對(duì)操作;
[0028]第一執(zhí)行模塊,用于如果所述文件長(zhǎng)度比對(duì)不一致,則向所述主磁盤(pán)進(jìn)程返回錯(cuò)誤消息,如果所述文件長(zhǎng)度比對(duì)一致,則將所述文件長(zhǎng)度和副本號(hào)發(fā)送至所述主磁盤(pán)進(jìn)程。
[0029]在其中一個(gè)實(shí)施例中,還包括:設(shè)置模塊,用于當(dāng)向所述主磁盤(pán)進(jìn)程返回所述錯(cuò)誤消息時(shí),則針對(duì)比對(duì)的所述文件進(jìn)行修復(fù)標(biāo)志的設(shè)置。
[0030]在其中一個(gè)實(shí)施例中,其中,所述設(shè)置模塊包括:
[0031]收集模塊,用于收集位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程中所述文件長(zhǎng)度和所述副本號(hào);
[0032]第二比對(duì)模塊,用于將所述文件長(zhǎng)度和所述副本號(hào)與所述主磁盤(pán)進(jìn)程中的所述文件長(zhǎng)度進(jìn)行比對(duì);
[0033]第二執(zhí)行模塊,用于若比對(duì)不一致,則將所述主磁盤(pán)進(jìn)程中的所述文件拷貝給位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程,若比對(duì)一致,則對(duì)所述主磁盤(pán)進(jìn)程中的所述文件執(zhí)行替換操作。
[0034]上述基于多副本的數(shù)據(jù)存儲(chǔ)方法和裝置,當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大?。欢鄠€(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程;主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。上述基于多副本的數(shù)據(jù)存儲(chǔ)方法保證數(shù)據(jù)的強(qiáng)一致性,能夠應(yīng)對(duì)包括主OSD(Object Storage Daemon,對(duì)象存儲(chǔ)進(jìn)程)在內(nèi)的任一副本所在的磁盤(pán)的故障。
【附圖說(shuō)明】
[0035]圖1是一個(gè)實(shí)施例中基于多副本的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0036]圖2是另一個(gè)實(shí)施例中基于多副本的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0037]圖3是一個(gè)實(shí)施例中基于多副本的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖;以及
[0038]圖4是另一個(gè)實(shí)施例中基于多副本的數(shù)據(jù)存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039]為使本公開(kāi)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明了,下面結(jié)合【具體實(shí)施方式】并參照附圖,對(duì)本公開(kāi)進(jìn)一步詳細(xì)說(shuō)明。應(yīng)該理解,這些描述只是示例性的,而并非要限制本公開(kāi)的范圍。此外,在以下說(shuō)明中,省略了對(duì)公知結(jié)構(gòu)和技術(shù)的描述,以避免不必要地混淆本公開(kāi)的概念。
[0040]參見(jiàn)圖1,一個(gè)實(shí)施例中,提供了一種基于多副本的數(shù)據(jù)存儲(chǔ)方法,該方法包括以下步驟:
[0041 ]步驟102,當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小。
[0042]本實(shí)施例中,計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小以文件系統(tǒng)擴(kuò)展屬性的方式進(jìn)行存儲(chǔ)。
[0043]步驟104,多個(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程。
[0044]步驟106,主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。
[0045]本實(shí)施例中,主磁盤(pán)進(jìn)程接收到反饋信息后,遍歷其存儲(chǔ)的所有文件;主磁盤(pán)進(jìn)程向位于多個(gè)磁盤(pán)的多個(gè)從磁盤(pán)進(jìn)程發(fā)起文件長(zhǎng)度核對(duì)請(qǐng)求;接收到多個(gè)從磁盤(pán)進(jìn)程返回的文件長(zhǎng)度后,將文件系統(tǒng)中比對(duì)長(zhǎng)度與擴(kuò)展屬性中文件長(zhǎng)度執(zhí)行比對(duì)操作;如果文件長(zhǎng)度比對(duì)不一致,則向主磁盤(pán)進(jìn)程返回錯(cuò)誤消息,如果文件長(zhǎng)度比對(duì)一致,則將文件長(zhǎng)度和副本號(hào)發(fā)送至主磁盤(pán)進(jìn)程。
[0046]需要說(shuō)明的是,由于每個(gè)對(duì)象都只有一個(gè)主對(duì)象存儲(chǔ)進(jìn)程,因此對(duì)于對(duì)象的更新都是順序的,不存在同步問(wèn)題。當(dāng)主對(duì)象存儲(chǔ)進(jìn)程收到對(duì)象的寫(xiě)請(qǐng)求時(shí),它負(fù)責(zé)把數(shù)據(jù)發(fā)送給其他磁盤(pán)落盤(pán),只要這個(gè)數(shù)據(jù)被保存在所有的對(duì)象存儲(chǔ)進(jìn)程上時(shí),主對(duì)象存儲(chǔ)進(jìn)程才應(yīng)答對(duì)象的寫(xiě)請(qǐng)求,保證了副本的一致性
[0047]上述基于多副本的數(shù)據(jù)存儲(chǔ)方法,當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小;多個(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程;主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。上述基于多副本的數(shù)據(jù)存儲(chǔ)方法保證數(shù)據(jù)的強(qiáng)一致性,能夠應(yīng)對(duì)包括主OSD(Object Storage Daemon,對(duì)象存儲(chǔ)進(jìn)程)在內(nèi)的任一副本所在的磁盤(pán)的故障。
[0048]如圖2所示,在一個(gè)實(shí)施例中,提供了一種基于多副本的數(shù)據(jù)存儲(chǔ)方法,該方法包括以下步驟:
[0049]步驟201,當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小。
[0050]步驟202,多個(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程。
[0051]步驟203,主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。
[0052]步驟204,當(dāng)向主磁盤(pán)進(jìn)程返回錯(cuò)誤消息時(shí),則針對(duì)比對(duì)的文件進(jìn)行修復(fù)標(biāo)志的設(shè)置。
[0053]本實(shí)施例中,收集位于多個(gè)磁盤(pán)的多個(gè)從磁盤(pán)進(jìn)程中文件長(zhǎng)度和副本號(hào);將文件長(zhǎng)度和副本號(hào)與主磁盤(pán)進(jìn)程中的文件長(zhǎng)度進(jìn)行比對(duì);若比對(duì)不一致,則將主磁盤(pán)進(jìn)程中的文件拷貝給位于多個(gè)磁盤(pán)的多個(gè)從磁盤(pán)進(jìn)程,若比對(duì)一致,則對(duì)主磁盤(pán)進(jìn)程中的文件執(zhí)行替換操作。
[0054]基于同一發(fā)明構(gòu)思,在一個(gè)實(shí)施例中,還提出一種基于多副本的數(shù)據(jù)存儲(chǔ)裝置。如圖3,該基于多副本的數(shù)據(jù)存儲(chǔ)裝置10包括計(jì)算模塊200、反饋信息發(fā)送模塊400和核對(duì)處理模塊600。
[0055]其中,計(jì)算模塊200用于當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小;反饋信息發(fā)送模塊400用于多個(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程;核對(duì)處理模塊600用于主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。
[0056]其中,計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小以文件系統(tǒng)擴(kuò)展屬性的方式進(jìn)行存儲(chǔ)。
[0057]此外,如圖4,在一個(gè)實(shí)施例中,核對(duì)處理模塊600包括:遍歷模塊610、核對(duì)請(qǐng)求模塊620、第一比對(duì)模塊630和第一執(zhí)行模塊640。
[0058]其中,遍歷模塊610用于主磁盤(pán)進(jìn)程接收到反饋信息后,遍歷其存儲(chǔ)的所有文件;核對(duì)請(qǐng)求模塊620用于主磁盤(pán)進(jìn)程向位于多個(gè)磁盤(pán)的多個(gè)從磁盤(pán)進(jìn)程發(fā)起文件長(zhǎng)度核對(duì)請(qǐng)求;第一比對(duì)模塊630用于接收到多個(gè)從磁盤(pán)進(jìn)程返回的文件長(zhǎng)度后,將文件系統(tǒng)中比對(duì)長(zhǎng)度與擴(kuò)展屬性中文件長(zhǎng)度執(zhí)行比對(duì)操作;第一執(zhí)行模塊640用于如果文件長(zhǎng)度比對(duì)不一致,則向主磁盤(pán)進(jìn)程返回錯(cuò)誤消息,如果文件長(zhǎng)度比對(duì)一致,則將文件長(zhǎng)度和副本號(hào)發(fā)送至主磁盤(pán)進(jìn)程。
[0059]另外,如圖4,在一個(gè)實(shí)施例中,該基于多副本的數(shù)據(jù)存儲(chǔ)裝置還包括:設(shè)置模塊650。其中,設(shè)置模塊650用于當(dāng)向主磁盤(pán)進(jìn)程返回錯(cuò)誤消息時(shí),則針對(duì)比對(duì)的文件進(jìn)行修復(fù)標(biāo)志的設(shè)置。具體的,設(shè)置模塊650包括:收集模塊651、第二比對(duì)模塊652和第二執(zhí)行模塊653。其中,收集模塊651用于收集位于多個(gè)磁盤(pán)的多個(gè)從磁盤(pán)進(jìn)程中文件長(zhǎng)度和副本號(hào);第二比對(duì)模塊652用于將文件長(zhǎng)度和副本號(hào)與主磁盤(pán)進(jìn)程中的文件長(zhǎng)度進(jìn)行比對(duì);第二執(zhí)行模塊653用于若比對(duì)不一致,則將主磁盤(pán)進(jìn)程中的文件拷貝給位于多個(gè)磁盤(pán)的多個(gè)從磁盤(pán)進(jìn)程,若比對(duì)一致,則對(duì)主磁盤(pán)進(jìn)程中的文件執(zhí)行替換操作。
[0060]上述基于多副本的數(shù)據(jù)存儲(chǔ)裝置,通過(guò)計(jì)算模塊200當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小;再通過(guò)反饋信息發(fā)送模塊400在多個(gè)從磁盤(pán)進(jìn)程在接受到文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將循環(huán)冗余碼、文件的大小以及文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至主磁盤(pán)進(jìn)程;最終通過(guò)核對(duì)處理模塊600在主磁盤(pán)進(jìn)程收到多個(gè)從磁盤(pán)進(jìn)程的反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。上述基于多副本的數(shù)據(jù)存儲(chǔ)裝置保證數(shù)據(jù)的強(qiáng)一致性,能夠應(yīng)對(duì)包括主0SD(0bject Storage Daemon,對(duì)象存儲(chǔ)進(jìn)程)在內(nèi)的任一副本所在的磁盤(pán)的故障。
[0061]應(yīng)當(dāng)理解的是,本公開(kāi)的上述【具體實(shí)施方式】?jī)H僅用于示例性說(shuō)明或解釋本公開(kāi)的原理,而不構(gòu)成對(duì)本公開(kāi)的限制。因此,在不偏離本公開(kāi)的精神和范圍的情況下所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本公開(kāi)的保護(hù)范圍之內(nèi)。此外,本公開(kāi)所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。
【主權(quán)項(xiàng)】
1.一種基于多副本的數(shù)據(jù)存儲(chǔ)方法,該方法包括: 當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小; 多個(gè)從磁盤(pán)進(jìn)程在接受到所述文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將所述循環(huán)冗余碼、所述文件的大小以及所述文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至所述主磁盤(pán)進(jìn)程;所述主磁盤(pán)進(jìn)程收到所述多個(gè)從磁盤(pán)進(jìn)程的所述反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。2.根據(jù)權(quán)利要求1所述的方法,其中,所述計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小以文件系統(tǒng)擴(kuò)展屬性的方式進(jìn)行存儲(chǔ)。3.根據(jù)權(quán)利要求1所述的方法,其中,所述主磁盤(pán)進(jìn)程收到所述多個(gè)從磁盤(pán)進(jìn)程的所述反饋信息后,執(zhí)行核對(duì)操作包括: 所述主磁盤(pán)進(jìn)程接收到所述反饋信息后,遍歷其存儲(chǔ)的所有文件; 所述主磁盤(pán)進(jìn)程向位于多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程發(fā)起文件長(zhǎng)度核對(duì)請(qǐng)求; 接收到所述多個(gè)從磁盤(pán)進(jìn)程返回的所述文件長(zhǎng)度后,將文件系統(tǒng)中比對(duì)長(zhǎng)度與擴(kuò)展屬性中所述文件長(zhǎng)度執(zhí)行比對(duì)操作; 如果所述文件長(zhǎng)度比對(duì)不一致,則向所述主磁盤(pán)進(jìn)程返回錯(cuò)誤消息,如果所述文件長(zhǎng)度比對(duì)一致,則將所述文件長(zhǎng)度和副本號(hào)發(fā)送至所述主磁盤(pán)進(jìn)程。4.根據(jù)權(quán)利要求3所述的方法,還包括:當(dāng)向所述主磁盤(pán)進(jìn)程返回所述錯(cuò)誤消息時(shí),則針對(duì)比對(duì)的所述文件進(jìn)行修復(fù)標(biāo)志的設(shè)置。5.根據(jù)權(quán)利要求4所述的方法,其中,所述針對(duì)比對(duì)的所述文件進(jìn)行修復(fù)標(biāo)志的設(shè)置包括: 收集位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程中所述文件長(zhǎng)度和所述副本號(hào); 將所述文件長(zhǎng)度和所述副本號(hào)與所述主磁盤(pán)進(jìn)程中的所述文件長(zhǎng)度進(jìn)行比對(duì); 若比對(duì)不一致,則將所述主磁盤(pán)進(jìn)程中的所述文件拷貝給位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程,若比對(duì)一致,則對(duì)所述主磁盤(pán)進(jìn)程中的所述文件執(zhí)行替換操作。6.—種基于多副本的數(shù)據(jù)存儲(chǔ)裝置,包括: 計(jì)算模塊,用于當(dāng)文件中的數(shù)據(jù)執(zhí)行寫(xiě)入時(shí),由主磁盤(pán)進(jìn)程在內(nèi)存中計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大??; 反饋信息發(fā)送模塊,用于多個(gè)從磁盤(pán)進(jìn)程在接受到所述文件中的數(shù)據(jù)寫(xiě)入請(qǐng)求時(shí),將所述循環(huán)冗余碼、所述文件的大小以及所述文件中的數(shù)據(jù)執(zhí)行寫(xiě)入操作,并將反饋信息發(fā)送至所述主磁盤(pán)進(jìn)程; 核對(duì)處理模塊,用于所述主磁盤(pán)進(jìn)程收到所述多個(gè)從磁盤(pán)進(jìn)程的所述反饋信息后,執(zhí)行核對(duì)操作,并將核對(duì)信息發(fā)送至數(shù)據(jù)集群管理端。7.根據(jù)權(quán)利要求6所述的裝置,其中,所述計(jì)算出所述文件中的數(shù)據(jù)的循環(huán)冗余碼以及文件的大小以文件系統(tǒng)擴(kuò)展屬性的方式進(jìn)行存儲(chǔ)。8.根據(jù)權(quán)利要求6所述的裝置,其中,所述核對(duì)處理模塊包括: 遍歷模塊,用于所述主磁盤(pán)進(jìn)程接收到所述反饋信息后,遍歷其存儲(chǔ)的所有文件;核對(duì)請(qǐng)求模塊,用于所述主磁盤(pán)進(jìn)程向位于多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程發(fā)起文件長(zhǎng)度核對(duì)請(qǐng)求; 第一比對(duì)模塊,用于接收到所述多個(gè)從磁盤(pán)進(jìn)程返回的所述文件長(zhǎng)度后,將文件系統(tǒng)中比對(duì)長(zhǎng)度與擴(kuò)展屬性中所述文件長(zhǎng)度執(zhí)行比對(duì)操作; 第一執(zhí)行模塊,用于如果所述文件長(zhǎng)度比對(duì)不一致,則向所述主磁盤(pán)進(jìn)程返回錯(cuò)誤消息,如果所述文件長(zhǎng)度比對(duì)一致,則將所述文件長(zhǎng)度和副本號(hào)發(fā)送至所述主磁盤(pán)進(jìn)程。9.根據(jù)權(quán)利要求8所述的裝置,還包括:設(shè)置模塊,用于當(dāng)向所述主磁盤(pán)進(jìn)程返回所述錯(cuò)誤消息時(shí),則針對(duì)比對(duì)的所述文件進(jìn)行修復(fù)標(biāo)志的設(shè)置。10.根據(jù)權(quán)利要求9所述的裝置,其中,所述設(shè)置模塊包括: 收集模塊,用于收集位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程中所述文件長(zhǎng)度和所述副本號(hào); 第二比對(duì)模塊,用于將所述文件長(zhǎng)度和所述副本號(hào)與所述主磁盤(pán)進(jìn)程中的所述文件長(zhǎng)度進(jìn)行比對(duì); 第二執(zhí)行模塊,用于若比對(duì)不一致,則將所述主磁盤(pán)進(jìn)程中的所述文件拷貝給位于所述多個(gè)磁盤(pán)的所述多個(gè)從磁盤(pán)進(jìn)程,若比對(duì)一致,則對(duì)所述主磁盤(pán)進(jìn)程中的所述文件執(zhí)行替換操作。
【文檔編號(hào)】G06F11/14GK105892954SQ201610264268
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2016年4月25日
【發(fā)明人】吳興義
【申請(qǐng)人】樂(lè)視控股(北京)有限公司, 樂(lè)視云計(jì)算有限公司