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