應用于雙控存儲系統的緩存同步方法及系統的制作方法
【技術領域】
[0001]本發明涉及計算機存儲領域,特別是涉及一種應用于雙控存儲系統的緩存同步方法及系統。
【背景技術】
[0002]磁盤高速緩存是一種軟件機制,其可以讓系統把一些平時儲存在磁盤上的數據存放在RAM(Random-Access Memory,隨機存取存儲器)中,使得后續對該數據存取時直接從RAM中存取,而無需存取磁盤,使得系統的快速讀寫迅速得到滿足,以此提高系統的效率。Cache Miiror(緩存鏡像)是在雙控系統運行時,讓兩邊的控制器的快速讀取同步,當第一控制器出現故障時,第二控制器能夠馬上接替第一控制器的工作,由于兩臺控制器的快取一致,因此系統能夠繼續正常運行,且數據也不會丟失。
[0003]傳統的緩存鏡像(Cache Mirror),主要有以下幾種運作情況,分別為MirrorPage (鏡像頁面),Cache Writeback (緩存回寫)、Read Shipping (讀傳遞)、Failover 及faiIback(故障轉移及故障恢復),其中Mirror Pager能夠達到鏡像的目的,但卻多了許多頁面同步的過程,同時,鏡像頁面是以頁面大小(4K)為單位寫入數據的,造成鏡像緩存的效率不佳、性能較差。
【發明內容】
[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]所述第二控制器,被配置以若所述第二控制器為所述預設主控制器,且獲得所述第一控制器將所述寫請求信號對應的數據寫入所述第一緩存后,通過所述第二標記模塊用已寫緩存標記將所述第二緩存標記為已寫緩存,將所述已寫緩存中與所述寫請求信號對應的數據