數(shù)據(jù)存儲方法、數(shù)據(jù)存儲裝置和存儲設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲技術(shù),尤其涉及一種數(shù)據(jù)存儲方法、數(shù)據(jù)存儲裝置和存儲設(shè)備。
【背景技術(shù)】
[0002]對于具有文件系統(tǒng)的存儲設(shè)備來說,寫入存儲設(shè)備的數(shù)據(jù)需要具有原子性。所謂原子性是指事務(wù)的完整操作,與該事務(wù)相關(guān)的數(shù)據(jù)要么全部寫入,要么全部不寫入。在現(xiàn)有技術(shù)中,數(shù)據(jù)的原子性是在磁盤中保證的,緩存中的數(shù)據(jù)通常不具有原子性,也就是說只有磁盤中存儲的數(shù)據(jù)才能被認(rèn)為是可靠的數(shù)據(jù),可以提供給主機(jī)。通常情況下,若存儲設(shè)備出現(xiàn)故障,需要先在緩存中恢復(fù)出數(shù)據(jù),然后將緩存中的數(shù)據(jù)寫入磁盤,在將緩存中的數(shù)據(jù)寫入磁盤時(shí)通過日志手段保證寫入磁盤的數(shù)據(jù)是具有原子性的。當(dāng)主機(jī)向存儲設(shè)備發(fā)送訪問請求要求訪問該數(shù)據(jù)時(shí),也需要先從磁盤中獲取具有原子性的數(shù)據(jù),再提供給主機(jī),這就延長了處理主機(jī)發(fā)送的訪問請求的時(shí)間。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲方法、裝置和存儲設(shè)備,以提高主機(jī)訪問數(shù)據(jù)的效率。
[0004]第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲方法,所述方法應(yīng)用于存儲系統(tǒng)中,所述存儲系統(tǒng)包括存儲設(shè)備和主機(jī),所述存儲設(shè)備包括第一控制器,所述第一控制器包括緩存保護(hù)區(qū)和第一寫緩存,所述緩存保護(hù)區(qū)具有數(shù)據(jù)保護(hù)功能,所述方法包括:
[0005]第一控制器接收文件處理請求,將所述文件處理請求拆分成多個(gè)文件操作,分別對每個(gè)文件操作進(jìn)行文件處理生成多個(gè)文件操作信息;
[0006]將所述多個(gè)文件操作信息全部寫入所述緩存保護(hù)區(qū);
[0007]當(dāng)?shù)谝豢刂破靼l(fā)生故障后又上電時(shí),在所述緩存保護(hù)區(qū)中恢復(fù)所述多個(gè)文件操作信息;
[0008]根據(jù)所述多個(gè)文件操作信息獲得數(shù)據(jù)信息,并將所述數(shù)據(jù)信息寫入所述第一寫緩存,以供所述主機(jī)訪問所述數(shù)據(jù)信息。
[0009]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述將所述多個(gè)文件操作信息全部寫入所述緩存保護(hù)區(qū)包括:
[0010]為每個(gè)文件操作信息在所述緩存保護(hù)區(qū)中申請存儲空間;
[0011]將所述每個(gè)文件操作信息保存在所述申請的存儲空間中;
[0012]確定所述多個(gè)文件操作信息均已保存在對應(yīng)的存儲空間中;
[0013]將所述保存有所述多個(gè)文件操作信息的存儲空間中的數(shù)據(jù),保存在所述緩存保護(hù)區(qū)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。
[0014]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述將所述多個(gè)文件操作信息全部寫入所述緩存保護(hù)區(qū)包括:
[0015]依次將每個(gè)文件操作信息發(fā)送給所述緩存保護(hù)區(qū);
[0016]確定所述多個(gè)文件操作信息均已發(fā)送給所述緩存保護(hù)區(qū);
[0017]設(shè)置所述緩存保護(hù)區(qū)中接收的所述多個(gè)文件操作信息對應(yīng)的標(biāo)記,所述標(biāo)記用于表示所述多個(gè)文件操作信息已全部寫入所述緩存保護(hù)區(qū)。
[0018]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述存儲設(shè)備包括存儲器,所述存儲器包括保護(hù)區(qū);
[0019]所述方法還包括:
[0020]當(dāng)?shù)谝豢刂破靼l(fā)生故障時(shí),根據(jù)所述緩存保護(hù)區(qū)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)確定所述緩存保護(hù)區(qū)中包括所述多個(gè)文件操作信息;
[0021]通過掉電保護(hù)程序?qū)⑺龆鄠€(gè)文件操作信息保存在所述存儲器的保護(hù)區(qū)。
[0022]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述存儲設(shè)備包括存儲器,所述存儲器包括保護(hù)區(qū);
[0023]所述方法還包括:
[0024]當(dāng)?shù)谝豢刂破靼l(fā)生故障時(shí),根據(jù)所述標(biāo)記確定所述緩存保護(hù)區(qū)中包括所述多個(gè)文件操作信息;
[0025]通過掉電保護(hù)程序?qū)⑺龆鄠€(gè)文件操作信息保存在所述存儲器的保護(hù)區(qū)。
[0026]結(jié)合第一方面,在第五種可能的實(shí)現(xiàn)方式中,所述存儲設(shè)備包括第二控制器,所述第二控制器包括第二寫緩存;
[0027]所述方法還包括:第一控制器將所述多個(gè)文件操作信息發(fā)送給所述第二控制器,使得所述第二控制器根據(jù)所述多個(gè)文件操作信息獲得所述文件處理請求對應(yīng)的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息寫入所述第二寫緩存。
[0028]第二方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲方法,所述方法應(yīng)用于存儲系統(tǒng)中,所述存儲系統(tǒng)包括存儲設(shè)備和主機(jī),所述存儲設(shè)備包括第一控制器、第二控制器和存儲器,所述第二控制器包括寫緩存,所述方法包括:
[0029]所述第一控制器接收文件處理請求,將所述文件處理請求拆分成多個(gè)文件操作,分別對每個(gè)文件操作進(jìn)行文件處理生成多個(gè)文件操作信息;將所述多個(gè)文件操作信息發(fā)送給所述第二控制器;
[0030]所述第二控制器根據(jù)所述文件操作信息獲得數(shù)據(jù)信息,將所述數(shù)據(jù)信息寫入寫緩存,以供第一控制器發(fā)生故障時(shí),主機(jī)訪問所述數(shù)據(jù)信息或者對所述存儲器執(zhí)行與所述文件處理請求相應(yīng)的操作。
[0031]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述將所述多個(gè)文件操作信息發(fā)送給所述第二控制器包括:所述第一控制器向所述第二控制器發(fā)送第一鏡像消息,所述第一鏡像消息包括所述多個(gè)文件操作信息。
[0032]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述將所述多個(gè)文件操作信息發(fā)送給所述第二控制器包括:
[0033]所述第一控制器向所述第二控制器發(fā)送多個(gè)第二鏡像消息,每個(gè)所述第二鏡像消息包括所述多個(gè)文件操作信息中的一個(gè)文件操作信息。
[0034]結(jié)合第二方面,在第三種可能的實(shí)現(xiàn)方式中,所述第二控制器包括緩存保護(hù)區(qū),所述緩存保護(hù)區(qū)具有數(shù)據(jù)保護(hù)功能;在所述第二控制器根據(jù)所述文件操作信息獲得數(shù)據(jù)信息,將所述數(shù)據(jù)信息寫入寫緩存之前所述方法還包括:
[0035]所述第二控制器將所述文件操作信息全部寫入所述緩存保護(hù)區(qū)。
[0036]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,還包括:
[0037]當(dāng)所述第二控制器發(fā)生故障又上電時(shí),在所述緩存保護(hù)區(qū)中恢復(fù)所述多個(gè)文件操作信息;
[0038]所述第二控制器根據(jù)所述文件操作信息獲得數(shù)據(jù)信息,將所述數(shù)據(jù)信息寫入寫緩存包括:
[0039]所述第二控制器根據(jù)所述緩存保護(hù)區(qū)中保存的所述多個(gè)文件操作信息獲得所述數(shù)據(jù)信息,將所述數(shù)據(jù)信息寫入所述寫緩存。
[0040]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述第二控制器將所述文件操作信息全部寫入所述緩存保護(hù)區(qū)包括:
[0041]為每個(gè)文件操作信息在所述緩存保護(hù)區(qū)中申請存儲空間;
[0042]將所述每個(gè)文件操作信息保存在所述申請的存儲空間中;
[0043]確定所述多個(gè)文件操作信息均已保存在對應(yīng)的存儲空間中;
[0044]將所述保存有所述多個(gè)文件操作信息的存儲空間中的數(shù)據(jù),保存在所述緩存保護(hù)區(qū)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。
[0045]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述第二控制器將所述文件操作信息全部寫入所述緩存保護(hù)區(qū)包括:
[0046]依次將每個(gè)文件操作信息發(fā)送給所述緩存保護(hù)區(qū);
[0047]確定所述多個(gè)文件操作信息均已發(fā)送給所述緩存保護(hù)區(qū);
[0048]設(shè)置所述緩存保護(hù)區(qū)中接收的所述多個(gè)文件操作信息對應(yīng)的標(biāo)記,所述標(biāo)記用于表示所述多個(gè)文件操作信息已全部寫入所述緩存保護(hù)區(qū)。
[0049]第三方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)存儲的裝置,包括:
[0050]文件處理模塊,用于接收文件處理請求,將所述文件處理請求拆分成多個(gè)文件操作,分別對每個(gè)文件操作進(jìn)行文件處理生成多個(gè)文件操作信息;
[0051]寫入模塊,用于將所述多個(gè)文件操作信息全部寫入緩存保護(hù)區(qū);
[0052]恢復(fù)模塊,用于當(dāng)?shù)谝豢刂破靼l(fā)生故障后又上電時(shí),在所述緩存保護(hù)區(qū)中恢復(fù)所述多個(gè)文件操作信息;
[0053]所述寫入模塊,還用于根據(jù)所述多個(gè)文件操作信息獲得數(shù)據(jù)信息,并將所述數(shù)據(jù)信息寫入第一寫緩存,以供所述主機(jī)訪問所述數(shù)據(jù)信息。
[0054]結(jié)合第三方面,在第一種可能的實(shí)現(xiàn)方式中,所述寫入模塊用于:
[0055]為每個(gè)文件操作信息在所述緩存保護(hù)區(qū)中申請存儲空間;
[0056]將所述每個(gè)文件操作信息保存在所述申請的存儲空間中;
[0057]確定所述多個(gè)文件操作信息均已保存在對應(yīng)的存儲空間中;
[0058]將所述保存有所述多個(gè)文件操作信息的存儲空間中的數(shù)據(jù),保存在所述緩存保護(hù)區(qū)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。
[0059]結(jié)合第三方面,在第二種可能的實(shí)現(xiàn)方式中,所述寫入模塊用于:
[0060]依次將每個(gè)文件操作信息發(fā)送給所述緩存保護(hù)區(qū);
[0061]確定所述多個(gè)文件操作信息均已發(fā)送給所述緩存保護(hù)區(qū);
[0062]設(shè)置所述緩存保護(hù)區(qū)中接收的所述多個(gè)文件操作信息對應(yīng)的標(biāo)記,所述標(biāo)記用于表示所述多個(gè)文件操作信息已全部寫入所述緩存保護(hù)區(qū)。
[0063]結(jié)合第三方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,還包括保護(hù)豐吳塊;
[0064]所述保護(hù)模塊,用于當(dāng)?shù)谝豢刂破靼l(fā)生故障時(shí),根據(jù)所述緩存保護(hù)區(qū)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)確定所述緩存保護(hù)區(qū)中包括所述多個(gè)文件操作信息;
[0065]通過掉電保護(hù)程序?qū)⑺龆鄠€(gè)文件操作信息保存在存儲器的保護(hù)區(qū)。
[0066]結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,還包括保護(hù)豐吳塊;
[0067]所述保護(hù)模塊,用于當(dāng)?shù)谝豢刂破靼l(fā)生故障時(shí),根據(jù)所述標(biāo)記確定所述緩存保護(hù)區(qū)中包括所述多個(gè)文件操作信息;通過掉電保護(hù)程序?qū)⑺龆鄠€(gè)文件操作信息保存在存儲器的保護(hù)區(qū)。
[0068]結(jié)合第三方面,在第五種可能的實(shí)現(xiàn)方式中,還包括發(fā)送模塊;
[0069]所述發(fā)送模塊,用于將所述多個(gè)文件操作信息發(fā)送給第二控制器,使得所述第二控制器根據(jù)所述多個(gè)文件操作信息獲得所述文件處理請求對應(yīng)的數(shù)據(jù)信息,并將所述數(shù)據(jù)信息寫入所述第二控制器的第二寫緩存。
[0070]第四方面,本發(fā)明實(shí)施例提供了一種存儲設(shè)備,所述存儲設(shè)備包括第一控制器、第二控制器和存儲器,所述第二控制器包括寫緩存;
[0071]所述第一控制器,用于接收文件處理請求,將所述文件處理請求拆分成多個(gè)文件操作,分別對每個(gè)文件操作進(jìn)行文件處理生成多個(gè)文件操作信息;將所述多個(gè)文件操作信息發(fā)送給所述第二控制器;
[0072]所述第二控制器,用于根據(jù)所述文件操作信息獲得數(shù)據(jù)信息,將所述數(shù)據(jù)信息寫入寫緩存,以供第一控制器發(fā)生故障時(shí),主機(jī)訪問所述數(shù)據(jù)信息或者對所述存儲器執(zhí)行與所述文件處理請求相應(yīng)的操作。
[0073]結(jié)合第四方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一控制器,具體用于向所述第二控制器發(fā)送第一鏡像消息,所述第一鏡像消息包括所述多個(gè)文件操作信息。
[0074]結(jié)合第四方面,在第二種可能的實(shí)現(xiàn)方式中,所述第一控制器,具體用于向所述第二控制器發(fā)送多個(gè)第二鏡像消息,每個(gè)所述第二鏡像消息包括所述多個(gè)文件操作信息中的一個(gè)文件操作信息。
[0075]結(jié)合第四方面,在第三種可能的實(shí)現(xiàn)方式中,所述第二控制器,還用于將所述文件操作信息全部寫入所述緩存保護(hù)區(qū)。
[0076]結(jié)合第四方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第二控制器,具體用于為每個(gè)文件操作信息在所述緩存保護(hù)區(qū)中申請存儲空間;將所述每個(gè)文件操作信息保存在所述申請的存儲空間中;確定所述多個(gè)文件操作信息均已保存在對應(yīng)的存儲空間中;將所述保存有所述多個(gè)文件操作信息的存儲空間中的數(shù)據(jù),保存在所述緩存保護(hù)區(qū)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中。
[0077]結(jié)合第四方面的第三種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述第二控制器,具體用于依次將每個(gè)文件操作信息發(fā)送給所述緩存保護(hù)區(qū);確定所述多個(gè)文件操作信息均已發(fā)送給所述緩存保護(hù)區(qū);設(shè)置所述緩存保護(hù)區(qū)中接收的所述多個(gè)文件操作信息對應(yīng)的標(biāo)記,所述標(biāo)記用于表示所述多個(gè)文件操作信息已全部寫入所述緩存保護(hù)區(qū)。
[0078]第五方面,本發(fā)明實(shí)施例提供了一種存儲設(shè)備,包括:
[0079]處理器、存儲器、系統(tǒng)總線和通信接口,所述處理器、所述存儲器和所述通信接口之間通過所述系統(tǒng)總線連接并完成相互間的通信;
[0080]所述通信接口,用于與存儲設(shè)備通信;
[0081]所述存儲器,用于存儲計(jì)算機(jī)執(zhí)行指令;
[0082]所述處理器,用于運(yùn)行所述計(jì)算機(jī)執(zhí)行指令,執(zhí)行如第一方面所述的數(shù)據(jù)存儲方法。
[0083]在本發(fā)明實(shí)施例中,將文件處理請求對應(yīng)的多個(gè)文件操作信息全部寫入緩存保護(hù)區(qū),由于緩存保護(hù)區(qū)具有數(shù)據(jù)保護(hù)功能,當(dāng)?shù)谝豢刂破靼l(fā)生故障后又上電時(shí),可以在所述緩存保護(hù)區(qū)中恢復(fù)所述多個(gè)文件操作信息,并且根據(jù)所述多個(gè)文件操作信息獲得數(shù)據(jù)信息,寫入第一寫緩存,由于所述多個(gè)文件操作信息是全部寫入緩存保護(hù)區(qū)的,所以當(dāng)?shù)谝豢刂破靼l(fā)生故障后又上電時(shí),在所述緩存保護(hù)區(qū)中恢復(fù)出的文件操作信息也是完整的,因此根據(jù)所述多個(gè)文件操作信息得到的數(shù)據(jù)信息具有原子性,可以直接供主機(jī)訪問。在現(xiàn)有技術(shù)中,由于第一寫緩存中的數(shù)據(jù)信息不具有原子性,存儲器中的數(shù)據(jù)才具有原子性,因此現(xiàn)有技術(shù)中的第一寫緩存中的數(shù)據(jù)信息不能直接供主機(jī)訪問,必須從存儲