本發(fā)明涉及數(shù)據(jù)存儲
技術領域:
,特別涉及一種數(shù)據(jù)寫入方法及裝置、雙活系統(tǒng)。
背景技術:
:雙活系統(tǒng)是一種常見的數(shù)據(jù)存儲系統(tǒng),雙活系統(tǒng)包括第一存儲控制器和第二存儲控制器,每個存儲控制器上均可以設置有存儲陣列,每個存儲陣列可以包括多個存儲位置。與雙活系統(tǒng)連接的主機可以根據(jù)需要向雙活系統(tǒng)發(fā)送包含目標存儲位置的寫操作命令,以便于雙活系統(tǒng)中的第一存儲控制器和第二存儲控制器根據(jù)該寫操作命令向每個存儲控制器上的目標存儲位置寫入數(shù)據(jù),當?shù)谝淮鎯刂破鞴收蠒r,主機能夠從第二存儲控制器的目標存儲位置獲取數(shù)據(jù)。示例的,第一存儲控制器上的目標存儲位置為第一位置,第二存儲控制器上的目標存儲位置為第二位置。主機可以將該寫操作命令發(fā)送至第一存儲控制器,若該第一存儲控制器此時并不是正在根據(jù)某一寫操作命令向第一位置寫入數(shù)據(jù),則該第一存儲控制器可以對該第一位置進行加鎖,并將該寫操作命令發(fā)送至第二存儲控制器,使得此時第一存儲控制器無法根據(jù)其他寫操作命令向第一位置寫入數(shù)據(jù)。為了防止該第二存儲控制器在根據(jù)該寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)其他寫操作命令向第二位置寫入數(shù)據(jù),在第二存儲控制器接收到該寫操作命令后,第二存儲控制器可以觸發(fā)為第二位置加鎖的動作,使得此時該第二存儲控制器無法根據(jù)其他寫操作命令向第二位置寫入數(shù)據(jù)。在加鎖完畢之后,第二存儲控制器可以將用于指示為第二位置加鎖成功的加鎖信息發(fā)送至第一存儲控制器。然后,第一存儲控制器和第二存儲控制器可以分別根據(jù)該寫操作命令向第一位置和第二位置寫入數(shù)據(jù)。在第二存儲控制器向第二位置寫入數(shù)據(jù)完畢后,該第二存儲控制器可以向第一存儲控制器發(fā)送用于指示寫入數(shù)據(jù)執(zhí)行完畢的結(jié)束消息。在第一存儲控制器在接收到該結(jié)束消息,且向第一位置寫入數(shù)據(jù)完畢后,可以解除第一位置上的鎖,并向第二存儲控制器發(fā)送解 鎖命令,第二存儲控制器在接收到該解鎖命令后,可以解除該第二位置上的鎖??蛇x的,第二位置上的鎖可以為分布式鎖管理(英文:DistributedLockManagement;簡稱:DLM)鎖。由于在雙活系統(tǒng)中寫入數(shù)據(jù)的過程中,需要為第一位置和第二位置進行加鎖和解鎖,且在加鎖和解鎖的過程中,第一存儲控制器與第二存儲控制器需要進行多次通信,因此,雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間較長,數(shù)據(jù)寫入的效率較低。技術實現(xiàn)要素:為了解決數(shù)據(jù)寫入的效率較低的問題,本發(fā)明提供了一種數(shù)據(jù)寫入方法及裝置、雙活系統(tǒng)。所述技術方案如下:第一方面,提供了一種數(shù)據(jù)寫入方法,用于雙活系統(tǒng)中的第一存儲控制器,所述雙活系統(tǒng)還包括第二存儲控制器,所述方法包括:向第二存儲控制器發(fā)送第一寫操作命令,所述第一寫操作命令為主機發(fā)送給所述第一存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第一存儲控制器中的所述目標存儲位置為第一位置,所述第二存儲控制器中的所述目標存儲位置為第二位置;接收所述第二存儲控制器發(fā)送的返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述返回消息為所述第二存儲控制器確定所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,生成并發(fā)送給所述第一存儲控制器的;向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,所述第一轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;接收所述第二存儲控制器在確定停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且開始根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù)時,發(fā)送的所述轉(zhuǎn)發(fā)寫命令;根據(jù)所述轉(zhuǎn)發(fā)寫命令,向所述第一位置寫入數(shù)據(jù)。由于第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第 二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。結(jié)合第一方面,在第一方面的第一種可實現(xiàn)方式中,在所述向第二存儲控制器發(fā)送第一寫操作命令之前,所述方法還包括:接收主機發(fā)送的所述第一寫操作命令;判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);所述向第二存儲控制器發(fā)送第一寫操作命令,包括:若所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù),則根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù),并向所述第二存儲控制器發(fā)送所述第一寫操作命令。在第一存儲控制器接收到主機發(fā)送的第一寫操作命令后,若該第一存儲控制器此時正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則該第一存儲控制器需要等待該第一存儲控制器根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)完畢后,才根據(jù)該第一寫操作命令向第一位置寫入數(shù)據(jù),使得該第一存儲控制器按照一定的順序,有序的處理第一存儲控制器接收到的寫操作命令。結(jié)合第一方面的第一種可實現(xiàn)方式,在第一方面的第二種可實現(xiàn)方式中,在所述向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令之前,所述方法還包括:停止根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù)。結(jié)合第一方面的第一種可實現(xiàn)方式或第二種可實現(xiàn)方式,在第一方面的第三種可實現(xiàn)方式中,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,所述判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù),包括:判斷所述第一存儲控制器上的寫操作記錄模塊中是否記載有所述第一位置;若所述第一存儲控制器上的寫操作記錄模塊中記載有所述第一位置,則確定所述第一存儲控制器正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);若所述第一存儲控制器上的寫操作記錄模塊中未記載有所述第一位置,則確定所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù)。第二方面,提供了一種數(shù)據(jù)寫入方法,用于雙活系統(tǒng)中的第二存儲控制器,所述雙活系統(tǒng)還包括第一存儲控制器,所述方法包括:接收第一存儲控制器發(fā)送的第一寫操作命令,所述第一寫操作命令是所述第一存儲控制器在接收到主機發(fā)送的所述第一寫操作命令后發(fā)送給所述第二存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第二存儲控制器中的所述目標存儲位置為第二位置;在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,向所述第一存儲控制器發(fā)送返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù);接收所述第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,所述轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;在所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù),并將所述轉(zhuǎn)發(fā)寫命令發(fā)送至所述第一存儲控制器。由于第二存儲控制器接收第一存儲控制器發(fā)送的第一寫操作命令,在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存 儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。結(jié)合第二方面,在第二方面的第一種可實現(xiàn)方式中,所述方法還包括:在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述第二存儲控制器的優(yōu)先級低于所述第一存儲控制器的優(yōu)先級,且所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述第一寫操作命令向所述第二位置寫入數(shù)據(jù)。若第二存儲控制器接收到第一存儲控制器發(fā)送的第一寫操作時,該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且此時該第二存儲控制器確定該第一存儲控制器的優(yōu)先級高于該第二存儲控制器,則該第二存儲控制器可以在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)完畢后,根據(jù)該第一寫操作命令向第二位置寫入數(shù)據(jù),保證了該第二存儲控制器有序的處理第二存儲控制器接收到的寫操作命令。結(jié)合第二方面或第一方面的第一種可實現(xiàn)方式,在第二方面的第二種可實現(xiàn)方式中,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中記載有所述第二位置;在所述第二存儲控制器不是正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中未記載有所述第二位置。第三方面,提供了一種數(shù)據(jù)寫入裝置,用于雙活系統(tǒng)中的第一存儲控制器,所述雙活系統(tǒng)還包括第二存儲控制器,所述數(shù)據(jù)寫入裝置包括:第一發(fā)送模塊,用于向第二存儲控制器發(fā)送第一寫操作命令,所述第一寫操作命令為主機發(fā)送給所述第一存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第一存儲控制器中的所述目標存儲位置為第一位置,所述第二存儲控制器中的所述目標存儲位置為第二位置;第一接收模塊,用于接收所述第二存儲控制器發(fā)送的返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù) 第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述返回消息為所述第二存儲控制器確定所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,生成并發(fā)送給所述第一存儲控制器的;第二發(fā)送模塊,用于向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,所述第一轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;第二接收模塊,用于接收所述第二存儲控制器在確定停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且開始根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù)時,發(fā)送的所述轉(zhuǎn)發(fā)寫命令;寫入模塊,用于根據(jù)所述轉(zhuǎn)發(fā)寫命令,向所述第一位置寫入數(shù)據(jù)。結(jié)合第三方面,在第三方面的第一種可實現(xiàn)方式中,所述數(shù)據(jù)寫入裝置還包括:第四接收模塊,用于接收主機發(fā)送的所述第一寫操作命令;判斷模塊,用于判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);所述第一發(fā)送模塊還用于:在所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù)時,根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù),并向所述第二存儲控制器發(fā)送所述第一寫操作命令。結(jié)合第三方面的第一種可實現(xiàn)方式,在第三方面的第二種可實現(xiàn)方式中,所述數(shù)據(jù)寫入裝置還包括:停止模塊,用于停止根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù)。結(jié)合第三方面的第一種可實現(xiàn)方式或第二種可實現(xiàn)方式,在第三方面的第三種可實現(xiàn)方式中,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,所述判斷模塊還用于:判斷所述第一存儲控制器上的寫操作記錄模塊中是否記載有所述第一位置;在所述第一存儲控制器上的寫操作記錄模塊中記載有所述第一位置時,確定所述第一存儲控制器正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);在所述第一存儲控制器上的寫操作記錄模塊中未記載有所述第一位置時, 確定所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù)。第四方面,提供了一種數(shù)據(jù)寫入裝置,用于雙活系統(tǒng)中的第二存儲控制器,所述雙活系統(tǒng)還包括第一存儲控制器,所述數(shù)據(jù)寫入裝置包括:第一接收模塊,用于接收第一存儲控制器發(fā)送的第一寫操作命令,所述第一寫操作命令是所述第一存儲控制器在接收到主機發(fā)送的所述第一寫操作命令后發(fā)送給所述第二存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第二存儲控制器中的所述目標存儲位置為第二位置;發(fā)送模塊,用于在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,向所述第一存儲控制器發(fā)送返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù);第二接收模塊,用于接收所述第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,所述轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;第一寫入模塊,用于在所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù),并將所述轉(zhuǎn)發(fā)寫命令發(fā)送至所述第一存儲控制器。結(jié)合第四方面,在第四方面的第一種可實現(xiàn)方式中,所述數(shù)據(jù)寫入裝置還包括:第二寫入模塊,用于在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述第二存儲控制器的優(yōu)先級低于所述第一存儲控制器的優(yōu)先級,且所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述第一寫操作命令向所述第二位置寫入數(shù)據(jù)。結(jié)合第四方面或第一方面的第一種可實現(xiàn)方式,在第四方面的第二種可實現(xiàn)方式中,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中記載有所述第二位置;在所述第二存儲控制器不是正在根據(jù)所述第二寫操作命令向所述第二位置 寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中未記載有所述第二位置。第五方面,提供了一種雙活系統(tǒng),所述雙活系統(tǒng)包括第一存儲控制器和第二存儲控制器,所述第一存儲控制器為第三方面或第三方面中的任意一種可實現(xiàn)方式所述的數(shù)據(jù)寫入裝置;所述第二存儲控制器為第四方面或第四方面中的任意一種可實現(xiàn)方式所述的數(shù)據(jù)寫入裝置。第六方面,提供了一種數(shù)據(jù)寫入裝置,所述數(shù)據(jù)寫入裝置包括:至少一個處理器、至少一個網(wǎng)絡接口、存儲器和至少一個通信總線,所述處理器用于執(zhí)行所述存儲器中存儲的程序,所述程序包括:向第二存儲控制器發(fā)送第一寫操作命令,所述第一寫操作命令為主機發(fā)送給所述第一存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第一存儲控制器中的所述目標存儲位置為第一位置,所述第二存儲控制器中的所述目標存儲位置為第二位置;接收所述第二存儲控制器發(fā)送的返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述返回消息為所述第二存儲控制器確定所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,生成并發(fā)送給所述第一存儲控制器的;向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,所述第一轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;接收所述第二存儲控制器在確定停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且開始根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù)時,發(fā)送的所述轉(zhuǎn)發(fā)寫命令;根據(jù)所述轉(zhuǎn)發(fā)寫命令,向所述第一位置寫入數(shù)據(jù)。結(jié)合第六方面,在第六方面的第一種可實現(xiàn)方式中,在所述向第二存儲控制器發(fā)送第一寫操作命令之前,所述程序還包括:接收主機發(fā)送的所述第一寫操作命令;判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫 入數(shù)據(jù);所述向第二存儲控制器發(fā)送第一寫操作命令,包括:若所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù),則根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù),并向所述第二存儲控制器發(fā)送所述第一寫操作命令。結(jié)合第六方面的第一種可實現(xiàn)方式,在第六方面的第二種可實現(xiàn)方式中,在所述向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令之前,所述程序還包括:停止根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù)。結(jié)合第六方面的第一種可實現(xiàn)方式或第二種可實現(xiàn)方式,在第六方面的第三種可實現(xiàn)方式中,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,所述判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù),包括:判斷所述第一存儲控制器上的寫操作記錄模塊中是否記載有所述第一位置;若所述第一存儲控制器上的寫操作記錄模塊中記載有所述第一位置,則確定所述第一存儲控制器正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);若所述第一存儲控制器上的寫操作記錄模塊中未記載有所述第一位置,則確定所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù)。第七方面,提供了一種數(shù)據(jù)寫入裝置,所述數(shù)據(jù)寫入裝置包括:至少一個處理器、至少一個網(wǎng)絡接口、存儲器和至少一個通信總線,所述處理器用于執(zhí)行所述存儲器中存儲的程序,所述程序包括:接收第一存儲控制器發(fā)送的第一寫操作命令,所述第一寫操作命令是所述第一存儲控制器在接收到主機發(fā)送的所述第一寫操作命令后發(fā)送給所述第二存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第二存儲控制器中的所述目標存儲位置為第二位置;在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,向所述第一存儲控制器發(fā)送返回消息,所述返回消息用于指示所述第二存儲控 制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù);接收所述第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,所述轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;在所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù),并將所述轉(zhuǎn)發(fā)寫命令發(fā)送至所述第一存儲控制器。結(jié)合第七方面,在第七方面的第一種可實現(xiàn)方式中,所述程序還包括:在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述第二存儲控制器的優(yōu)先級低于所述第一存儲控制器的優(yōu)先級,且所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述第一寫操作命令向所述第二位置寫入數(shù)據(jù)。結(jié)合第七方面或第一方面的第一種可實現(xiàn)方式,在第七方面的第二種可實現(xiàn)方式中,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中記載有所述第二位置;在所述第二存儲控制器不是正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中未記載有所述第二位置。第八方面,提供了一種雙活系統(tǒng),所述雙活系統(tǒng)包括第一存儲控制器和第二存儲控制器,所述第一存儲控制器為第六方面或第六方面中的任意一種可實現(xiàn)方式所述的數(shù)據(jù)寫入裝置;所述第二存儲控制器為第七方面或第七方面中的任意一種可實現(xiàn)方式所述的數(shù)據(jù)寫入裝置。本發(fā)明提供了一種數(shù)據(jù)寫入方法及裝置、雙活系統(tǒng),第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該 第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本發(fā)明。附圖說明為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的應用場景示意圖;圖2為本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的方法流程圖;圖3為本發(fā)明實施例提供的另一種數(shù)據(jù)寫入方法的方法流程圖;圖4-1為本發(fā)明實施例提供的又一種數(shù)據(jù)寫入方法的方法流程圖;圖4-2為本發(fā)明實施例提供的一種寫入數(shù)據(jù)的方法流程圖;圖4-3為本發(fā)明實施例提供的另一種寫入數(shù)據(jù)的方法流程圖;圖5-1為本發(fā)明實施例提供的一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖5-2為本發(fā)明實施例提供的另一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖5-3為本發(fā)明實施例提供的又一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖6-1為本發(fā)明實施例提供的再一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖6-2為本發(fā)明另一實施例提供的一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖7為本發(fā)明另一實施例提供的另一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖8為本發(fā)明另一實施例提供的又一種數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;圖9為本發(fā)明實施例提供的一種雙活系統(tǒng)的結(jié)構(gòu)示意圖。通過上述附圖,已示出本發(fā)明明確的實施例,后文中將有更詳細的描述。 這些附圖和文字描述并不是為了通過任何方式限制本發(fā)明構(gòu)思的范圍,而是通過參考特定實施例為本領域技術人員說明本發(fā)明的概念。具體實施方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。圖1為本發(fā)明實施例提供的一種數(shù)據(jù)寫入方法的應用場景示意圖,示例的,該應用場景可以包括雙活系統(tǒng)0和主機1,雙活系統(tǒng)0包括第一存儲控制器01和第二存儲控制器02,每個存儲控制器上均可以設置有多個存儲位置,可選的,每個存儲控制器上均可以設置有存儲陣列,該存儲陣列可以包括多個陣列排布的存儲塊,多個存儲位置為多個存儲塊的存儲地址。主機1可以與雙活系統(tǒng)0中的第一存儲控制器01以及第二存儲控制器02建立連接,主機1可以根據(jù)需要向雙活系統(tǒng)0中的第一存儲控制器01發(fā)送包含目標存儲位置的寫操作命令,以便于雙活系統(tǒng)0中的第一存儲控制器01和第二存儲控制器02根據(jù)該寫操作命令向每個存儲控制器上的目標存儲位置寫入數(shù)據(jù),當?shù)谝淮鎯刂破?1故障時,主機1能夠從第二存儲控制器02的目標存儲位置獲取數(shù)據(jù)。示例的,第一存儲控制器01上的目標存儲位置為第一位置,第二存儲控制器02上的目標存儲位置為第二位置。主機1可以將該寫操作命令發(fā)送至第一存儲控制器01,若該第一存儲控制器01此時并不是正在根據(jù)某一寫操作命令向第一位置寫入數(shù)據(jù),則該第一存儲控制器01可以對該第一位置進行加鎖,并將該寫操作命令發(fā)送至第二存儲控制器02,使得此時第一存儲控制器無法根據(jù)其他寫操作命令向第一位置寫入數(shù)據(jù)。為了防止該第二存儲控制器02在根據(jù)該寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)其他寫操作命令向第二位置寫入數(shù)據(jù),在第二存儲控制器02接收到該寫操作命令后,第二存儲控制器02可以觸發(fā)為第二位置加鎖的動作,使得此時該第二存儲控制器02無法根據(jù)其他寫操作命令向第二位置寫入數(shù)據(jù)。在向第二位置寫入數(shù)據(jù)完畢后,該第二存儲控制器02可以向第一存儲控制器01發(fā)送用于指示寫入數(shù)據(jù)執(zhí)行完畢的結(jié)束消息。在第一存儲控制器01在接收到該結(jié)束消息,且向第一位置寫入數(shù)據(jù)完畢后,可以解除第一位置上的鎖,并向第二存儲控制器02發(fā)送解鎖命令,第二存儲控制器02在接 收到該解鎖命令后,可以解除該第二位置上的鎖。可選的,該第一位置和第二位置上的鎖可以為DLM鎖。由于在雙活系統(tǒng)0中寫入數(shù)據(jù)的過程中,需要為第一位置和第二位置進行加鎖和解鎖,且在加鎖和解鎖的過程中,第一存儲控制器01與第二存儲控制器02需要進行多次通信,雙活系統(tǒng)0中數(shù)據(jù)寫入耗費的時間較長,數(shù)據(jù)寫入的效率較低。如圖2所示,本發(fā)明實施例提供了一種數(shù)據(jù)寫入方法,該數(shù)據(jù)寫入方法可以用于如圖1所示的雙活系統(tǒng)0中的第一存儲控制器01,該雙活系統(tǒng)0還可以包括第二存儲控制器02,該數(shù)據(jù)寫入方法可以包括:步驟201、向第二存儲控制器發(fā)送第一寫操作命令,第一寫操作命令為主機發(fā)送給第一存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第一存儲控制器中的目標存儲位置為第一位置,第二存儲控制器中的目標存儲位置為第二位置。步驟202、接收第二存儲控制器發(fā)送的返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),返回消息為第二存儲控制器確定第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,生成并發(fā)送給第一存儲控制器的。步驟203、向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,第一轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。步驟204、接收第二存儲控制器在確定停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且開始根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)時,發(fā)送的轉(zhuǎn)發(fā)寫命令。步驟205、根據(jù)轉(zhuǎn)發(fā)寫命令,向第一位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入方法中,第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第 二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率??蛇x的,在步驟201之前,該數(shù)據(jù)寫入方法還可以包括:接收主機發(fā)送的第一寫操作命令;判斷第一存儲控制器是否正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù);向第二存儲控制器發(fā)送第一寫操作命令,包括:若第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù),并向第二存儲控制器發(fā)送第一寫操作命令??蛇x的,在步驟203之前,該數(shù)據(jù)寫入方法還可以包括:停止根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)??蛇x的,每個存儲控制器上均設置有寫操作記錄模塊,寫操作記錄模塊用于記載:寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,判斷第一存儲控制器是否正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),可以包括:判斷第一存儲控制器上的寫操作記錄模塊中是否記載有第一位置;若第一存儲控制器上的寫操作記錄模塊中記載有第一位置,則確定第一存儲控制器正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù);若第一存儲控制器上的寫操作記錄模塊中未記載有第一位置,則確定第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入方法中,第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第 二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。如圖3所示,本發(fā)明實施例提供了另一種數(shù)據(jù)寫入方法,該數(shù)據(jù)寫入方法可以用于如圖1所示的雙活系統(tǒng)0中的第二存儲控制器02,該雙活系統(tǒng)0還可以包括第一存儲控制器01,該數(shù)據(jù)寫入方法可以包括:步驟301、接收第一存儲控制器發(fā)送的第一寫操作命令,第一寫操作命令是第一存儲控制器在接收到主機發(fā)送的第一寫操作命令后發(fā)送給第二存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第二存儲控制器中的目標存儲位置為第二位置。步驟302、在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。步驟303、接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。步驟304、在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入方法中,第二存儲控制器接收第一存儲控制器發(fā)送的第一寫操作命令,在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率??蛇x的,該數(shù)據(jù)寫入方法還可以包括:在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),第二存儲控制器的優(yōu)先級低于第一存儲控制器的優(yōu)先級,且第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)??蛇x的,每個存儲控制器上均設置有寫操作記錄模塊,寫操作記錄模塊用于記載:寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中記載有所述第二位置;在所述第二存儲控制器不是正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中未記載有所述第二位置。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入方法中,第二存儲控制器接收第一存儲控制器發(fā)送的第一寫操作命令,在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。若第二存儲控制器接收到第一存儲控制器發(fā)送的第一寫操作時,該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且此時該第二存儲控制器確定該第一存儲控制器的優(yōu)先級高于該第二存儲控制器,則該第二存儲控制器可以在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)完畢后,根據(jù)該第一寫操作命令向第二位置寫入數(shù)據(jù),保證了該第二存儲控制器有序的處理第二存儲控制器接收到的寫操作命令。如圖4-1所示,本發(fā)明實施例提供了又一種數(shù)據(jù)寫入方法,該數(shù)據(jù)寫入方法可以用于如圖1所示的雙活系統(tǒng)0,該雙活系統(tǒng)0可以包括第一存儲控制器01和第二存儲控制器02,該數(shù)據(jù)寫入方法可以包括:步驟401、第一存儲控制器接收主機發(fā)送的第一寫操作命令。執(zhí)行步驟402。示例的,該主機可以為圖1中的主機1,當該主機需要向雙活系統(tǒng)中寫入數(shù)據(jù)時,主機可以生成包含目標存儲位置的第一寫操作命令,即該第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù)。具體的,該目標存儲位置上可以存儲有數(shù)據(jù),主機生成的第一寫操作命令可以為對該目標存儲位置上的數(shù)據(jù)進行修改;該目標存儲位置上也可以不存儲有數(shù)據(jù),主機生成的第一寫操作命令可以為向該目標存儲位置上存儲數(shù)據(jù)。主機在生成該第一寫操作命令后,可以將該第一寫操作命令發(fā)送至雙活系統(tǒng),本發(fā)明實施例中以主機將該第一寫操作命令發(fā)送至雙活系統(tǒng)中的第一存儲控制器為例。示例的,該第一存儲控制器和第二存儲控制器上均可以設置有多個存儲位置,第一存儲控制器中的目標存儲位置為第一位置,第二存儲控制器中的目標存儲位置為第二位置??蛇x的,該第一存儲控制器和第二存儲控制器上均可以設置有存儲陣列,每個存儲陣列可以包括多個陣列排布的存儲塊,每個存儲塊對應一個存儲地址,一個存儲地址即一個存儲位置。步驟402、第一存儲控制器判斷第一存儲控制器是否正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。若第一存儲控制器正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則執(zhí)行步驟403;若第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則執(zhí)行步驟404??蛇x的,每個存儲控制器上均可以設置有寫操作記錄模塊,寫操作記錄模塊可以用于記載:寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置。進一步的,該寫操作記錄模塊還可以記載有正在寫入數(shù)據(jù)的存儲位置對應的寫操作命令,示例的,該寫操作記錄模塊可以包括輸入或輸出(英文:In/Out;簡稱:I/O)池,該I/O池可以用于記載正在寫入數(shù)據(jù)的存儲位置對應的寫操作命令。第一存儲控制器在判斷第一存儲控制器是否正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)時,可以查詢第一存儲控制器上的寫操作記錄模塊中記錄的位置,并判斷第一存儲控制器上的寫操作記錄模塊中是否記載有第一位置,若第一存儲控制器上的寫操作記錄模塊中記載有第一位置,則該第一存儲控制器 可以確定第一存儲控制器正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。若第一存儲控制器上的寫操作記錄模塊中未記載有第一位置,則確定第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。需要說明的是,若第一存儲控制器正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則該第一存儲控制器可以確定第一存儲控制器接收到第三寫操作命令的時間早于接收到第一寫操作命令的時間。該第三寫操作命令指示的操作可以與第一寫操作命令指示的操作相同,該第三寫操作命令指示的操作也可以與第一寫操作命令指示的操作不同,本發(fā)明實施例對此不作限定。步驟403、第一存儲控制器判斷第一存儲控制器是否停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。若第一存儲控制器停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則執(zhí)行步驟404;若第一存儲控制器沒有停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則執(zhí)行步驟403。具體的,第一存儲控制器可以通過實時的查詢該第一存儲控制器上的寫操作記錄模塊中是否記載有該第一位置,來判斷該第一存儲控制器是否停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。若該第一存儲控制器未停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則重復執(zhí)行步驟403,直至檢測到該第一存儲控制器停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。需要說明的是,第一存儲控制器可以在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)完畢之后,停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。該第一存儲控制器還可以在接收到第二存儲控制器發(fā)送的返回消息后,停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。步驟404、第一存儲控制器根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)。執(zhí)行步驟405。若第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),或,第一存儲控制器停止根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則此時第一存儲控制器可以根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)。在該第一存儲控制器根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)時,該第一存儲控制器上的寫操作記錄模塊上可以記載有第一位置以及該第一位置對應的第一寫操作命令。在第一存儲控制器接收到主機發(fā)送的第一寫操作命令后,若該第一存儲控制器此時正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù),則該第一存儲控制器 需要等待該第一存儲控制器根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)完畢后,才根據(jù)該第一寫操作命令向第一位置寫入數(shù)據(jù),使得該第一存儲控制器按照一定的順序,有序的處理第一存儲控制器接收到的寫操作命令。步驟405、第一存儲控制器向第二存儲控制器發(fā)送第一寫操作命令。執(zhí)行步驟406。在第一存儲控制器根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)時,該第一存儲控制器可以向第二存儲控制器發(fā)送該第一寫操作命令。步驟406、第二存儲控制器判斷第二存儲控制器是否正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則執(zhí)行步驟407;若第二存儲控制器不是正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則執(zhí)行步驟408。第二存儲控制器在接收到第一存儲控制器發(fā)送的第一寫操作命令后,可以判斷該第二存儲控制器是否正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。第二存儲控制器在判斷第二存儲控制器是否正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,可以查詢第二存儲控制器上的寫操作記錄模塊中記錄的位置,并判斷第二存儲控制器上的寫操作記錄模塊中是否記載有第二位置,若第二存儲控制器上的寫操作記錄模塊中記載有第二位置,則該第二存儲控制器可以確定第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器上的寫操作記錄模塊中未記載有第二位置,則確定第二存儲控制器不是正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。需要說明的是,若第二存儲控制器正在根據(jù)第二寫操作命令向第一位置寫入數(shù)據(jù),則該第一存儲控制器可以確定第二存儲控制器接收到第二寫操作命令的時間早于接收到第一寫操作命令的時間。該第二寫操作命令指示的操作可以與第一寫操作命令指示的操作相同,該第二寫操作命令指示的操作也可以與第一寫操作命令指示的操作不同,本發(fā)明實施例對此不作限定。步驟407、第二存儲控制器根據(jù)第一存儲控制器和第二存儲控制器的優(yōu)先級控制第一存儲控制器和第二存儲控制器,根據(jù)第一寫操作命令分別向第一位置和第二位置寫入數(shù)據(jù)??蛇x的,該第一存儲控制器和第二存儲控制器的優(yōu)先級可以為預先設置的,且第一存儲控制器和第二存儲控制器上均可以存儲有優(yōu)先級列表,該優(yōu)先級列 表用于記錄第一存儲控制器和第二存儲控制器的優(yōu)先級。若該優(yōu)先級列表如表1所示,則該第一存儲控制器的優(yōu)先級高于第二存儲控制器,若該優(yōu)先級列表如表2所示,則該第二存儲控制器的優(yōu)先級高于第一存儲控制器。該第二存儲控制器可以查詢優(yōu)先級列表,確定第一存儲控制器和第二存儲控制器的優(yōu)先級順序。表1存儲控制器優(yōu)先級第一存儲控制器高第二存儲控制器低表2存儲控制器優(yōu)先級第一存儲控制器低第二存儲控制器高一方面,在查詢優(yōu)先級列表后,若第二存儲控制器的優(yōu)先級高于第一存儲控制器,則如圖4-2所示,步驟407可以包括:步驟4071a、第二存儲控制器向第一存儲控制器發(fā)送返回消息。執(zhí)行步驟4072a。第二存儲控制器在接收到第一存儲控制器發(fā)送的第一寫操作命令,且確定該第二存儲控制器正在根據(jù)第二寫操作向第二位置寫入數(shù)據(jù)時,該第二存儲控制器可以生成用于指示第二存儲控制器在接收到第一存儲控制器發(fā)送的第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),并將生成的返回消息發(fā)送至第一存儲控制器。步驟4072a、第一存儲控制器停止根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)。執(zhí)行步驟4073a。第一存儲控制器在接收到第二存儲控制器發(fā)送的用于指示該第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)的返回消息后,該第一存儲控制器可以停止根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)。當?shù)谝淮鎯刂破魍V垢鶕?jù)第一寫操作命令向第一位置寫入數(shù)據(jù)時,該第一存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第一 位置以及該第一位置對應的第一寫操作命令進行刪除。步驟4073a、第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令。執(zhí)行步驟4074a。第一存儲控制器可以根據(jù)該第一寫操作命令生成轉(zhuǎn)發(fā)寫命令,并向第二存儲控制器發(fā)送該轉(zhuǎn)發(fā)寫命令,且該轉(zhuǎn)發(fā)寫命令所指示的操作與該第一寫操作命令指示的操作相同,具體的,在根據(jù)第一寫操作命令生成轉(zhuǎn)發(fā)寫命令時,可以僅僅對第一寫操作命令的格式進行修改,并不對第一寫操作命令的內(nèi)容進行修改??蛇x的,在該第一存儲控制器根據(jù)第一寫操作命令生成轉(zhuǎn)發(fā)寫命令后,還可以將該第一寫操作命令進行刪除。具體的,該第一存儲控制器可以生成用于指示刪除第一寫操作命令的刪除信息,并根據(jù)該刪除信息將第一存儲控制器中的第一寫操作命令進行刪除,以及將該指示信息發(fā)送至第二存儲控制器,以便于第二存儲控制器將第二存儲控制器上的第一寫操作命令刪除??蛇x的,該第一存儲控制器可以將該第一存儲控制器上的I/O池中記載的第一位置以及第一位置對應的第一寫操作命令進行刪除,該第二存儲控制器可以將該第二存儲控制器上的I/O池中記載的第二位置以及第二位置對應的第一寫操作命令進行刪除。步驟4074a、第二存儲控制器判斷第二存儲控制器是否停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則執(zhí)行步驟4075a;若第二存儲控制器沒有停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則執(zhí)行步驟4074a。具體的,第二存儲控制器可以通過實時的查詢該第二存儲控制器上的寫操作記錄模塊中是否記載有該第二位置,來判斷該第二存儲控制器是否停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器上的寫操作記錄模塊中記載有第二位置,則確定第二存儲控制器正在根據(jù)第三寫操作命令向第二位置寫入數(shù)據(jù);若第二存儲控制器上的寫操作記錄模塊中未記載有第二位置,則確定第二存儲控制器不是正在根據(jù)第三寫操作命令向第二位置寫入數(shù)據(jù)。若該第二存儲控制器未停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則重復執(zhí)行步驟4074a,直至檢測到該第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。需要說明的是,第二存儲控制器可以在根據(jù)第二寫操作命 令向第二位置寫入數(shù)據(jù)完畢之后,可以停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。當?shù)诙鎯刂破魍V垢鶕?jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,該第二存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第二位置以及該第二位置對應的第二寫操作命令進行刪除。步驟4075a、第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)。執(zhí)行步驟4076a。若第二存儲控制器不是正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則此時第二存儲控制器可以根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)。步驟4076a、第二存儲控制器向第一存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令。執(zhí)行步驟4077a。在第二存儲控制器可以根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)時,第二存儲控制器可以向第一存儲控制器發(fā)送該轉(zhuǎn)發(fā)寫命令。步驟4077a、第一存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)。由于在步驟404中,該第一存儲控制器已經(jīng)根據(jù)該第一寫操作命令向第一位置寫入數(shù)據(jù),并在步驟4072a中停止根據(jù)該第一寫操作命令向第一位置寫入數(shù)據(jù),所以在步驟4077a中,若該轉(zhuǎn)發(fā)寫命令用于指示向目標存儲位置存儲數(shù)據(jù),則該第一存儲控制器在接收到該轉(zhuǎn)發(fā)寫命令后,可以檢測該第一存儲控制器上的第一位置上是否存儲有數(shù)據(jù),并判斷該第一位置上存儲的數(shù)據(jù)是否與該轉(zhuǎn)發(fā)寫命令所指示的需要存儲的數(shù)據(jù)相同,如果第一位置上存儲的數(shù)據(jù)與該轉(zhuǎn)發(fā)寫命令所指示的需要存儲的數(shù)據(jù)相同,則確定該第一存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)完畢,并停止根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)。如果第一位置上存儲的數(shù)據(jù)與該轉(zhuǎn)發(fā)寫命令所指示的需要存儲的數(shù)據(jù)中的一部分相同,則可以根據(jù)該轉(zhuǎn)發(fā)寫命令繼續(xù)向該第一位置寫入數(shù)據(jù),直至該第一位置上存儲的數(shù)據(jù)與該轉(zhuǎn)發(fā)寫命令所指示的需要存儲的數(shù)據(jù)完全相同,然后停止根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)。由于在步驟404中,該第一存儲控制器已經(jīng)根據(jù)該第一寫操作命令向第一位置寫入數(shù)據(jù),并在步驟4072a中停止根據(jù)該第一寫操作命令向第一位置寫入數(shù)據(jù),所以在步驟4077a中,若該轉(zhuǎn)發(fā)寫命令用于指示對目標存儲位置上的數(shù)據(jù)進行修改,則該第一存儲控制器在接收到該轉(zhuǎn)發(fā)寫命令后,可以判斷該第一位置上存儲的數(shù)據(jù)是否與根據(jù)轉(zhuǎn)發(fā)寫命令將第一位置上的數(shù)據(jù)進行修改后得到 的數(shù)據(jù)相同,如果該第一位置上存儲的數(shù)據(jù)與根據(jù)轉(zhuǎn)發(fā)寫命令將第一位置上的數(shù)據(jù)進行修改后得到的數(shù)據(jù)相同,則確定該第一存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)完畢,并停止根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)。如果該第一位置上存儲的數(shù)據(jù)與根據(jù)轉(zhuǎn)發(fā)寫命令將第一位置上的數(shù)據(jù)進行修改后得到的數(shù)據(jù)的一部分相同,則可以根據(jù)該轉(zhuǎn)發(fā)寫命令繼續(xù)向該第一位置寫入數(shù)據(jù),直至該第一位置上存儲的數(shù)據(jù)與根據(jù)轉(zhuǎn)發(fā)寫命令將第一位置上的數(shù)據(jù)進行修改后得到的數(shù)據(jù)完全相同,然后停止根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)。可選的,該第一存儲控制器在接受到該轉(zhuǎn)發(fā)寫命令后,還可以直接根據(jù)該轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù),并無需檢測該第一位置上存儲的數(shù)據(jù)是否與該轉(zhuǎn)發(fā)寫命令所指示的需要存儲的數(shù)據(jù)(或根據(jù)轉(zhuǎn)發(fā)寫命令將第一位置上的數(shù)據(jù)進行修改后得到的數(shù)據(jù))相同。在根據(jù)該轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)時,若該第一位置上已經(jīng)寫入與該轉(zhuǎn)發(fā)寫命令所指示的數(shù)據(jù)W,則在步驟4077a中進行寫入轉(zhuǎn)發(fā)寫命令所指示的數(shù)據(jù)W時,可以將步驟4077a中寫入的轉(zhuǎn)發(fā)寫命令所指示的數(shù)據(jù)W覆蓋在該第一位置上已經(jīng)寫入的數(shù)據(jù)W上。需要說明的是,在步驟4075a中該第二存儲控制器在根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)完畢后,該第二存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第二位置以及該第二位置對應的轉(zhuǎn)發(fā)寫命令進行刪除,并生成用于指示該第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)完畢的完畢消息,并將該完畢消息發(fā)送至第一存儲控制器。該第一存儲控制器在接收到該第二存儲控制器發(fā)送的完畢消息后,可以確定第一存儲控制器是否根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)完畢,并在確定第一存儲控制器是否根據(jù)轉(zhuǎn)發(fā)寫命令向第一位置寫入數(shù)據(jù)完畢之后,第一存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第一位置以及該第一位置對應的轉(zhuǎn)發(fā)寫命令進行刪除,并生成用于指示雙活系統(tǒng)根據(jù)第一寫操作命令向目標存儲位置寫入數(shù)據(jù)完畢的通知消息,然后將該通知消息發(fā)送至主機。另一方面,若第二存儲控制器的優(yōu)先級低于第一存儲控制器,則如圖4-3所示,步驟407可以包括:步驟4071b、第二存儲控制器判斷第二存儲控制器是否停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則執(zhí)行步驟4072b;若第二存儲控制器沒有停止根據(jù)第二寫操作 命令向第二位置寫入數(shù)據(jù),則執(zhí)行步驟4071b。具體的,第二存儲控制器可以通過實時的查詢該第二存儲控制器上的寫操作記錄模塊中是否記載有該第二位置,來判斷該第二存儲控制器是否停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器上的寫操作記錄模塊中記載有第二位置,則確定第二存儲控制器正在根據(jù)第三寫操作命令向第二位置寫入數(shù)據(jù);若第二存儲控制器上的寫操作記錄模塊中未記載有第二位置,則確定第二存儲控制器不是正在根據(jù)第三寫操作命令向第二位置寫入數(shù)據(jù)。若該第二存儲控制器未停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則重復執(zhí)行步驟4074a,直至檢測到該第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。需要說明的是,第二存儲控制器可以在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)完畢之后,停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),該第二存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第二位置以及該第二位置對應的第二寫操作命令進行刪除。步驟4072b、第二存儲控制器根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器不是正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則此時第二存儲控制器可以根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并向第一存儲控制器發(fā)送該轉(zhuǎn)發(fā)寫命令。若第二存儲控制器接收到第一存儲控制器發(fā)送的第一寫操作時,該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且此時該第二存儲控制器確定該第一存儲控制器的優(yōu)先級高于該第二存儲控制器,則該第二存儲控制器可以在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)完畢后,根據(jù)該第一寫操作命令向第二位置寫入數(shù)據(jù),保證了該第二存儲控制器有序的處理第二存儲控制器接收到的寫操作命令。需要說明的是,該第二存儲控制器在根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)完畢后,該第二存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第二位置以及該第二位置對應的第一寫操作命令進行刪除,并生成用于指示該第二存儲控制器根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)完畢的完畢消息,并將該完畢消息發(fā)送至第一存儲控制器。該第一存儲控制器在接收到該第二存儲控制器發(fā)送的完畢消息后,可以確定第一存儲控制器是否根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)完畢,并在確定第一存儲控制器是否根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)完畢之后,該第一存儲控制器上的寫操作記錄模 塊可以將該寫操作記錄模塊中記載的第一位置以及該第一位置對應的第一寫操作命令進行刪除,并生成用于指示雙活系統(tǒng)根據(jù)第一寫操作命令向目標存儲位置寫入數(shù)據(jù)完畢的通知消息,然后將該通知消息發(fā)送至主機。步驟408、第二存儲控制器根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)。若第二存儲控制器不是正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),則此時第二存儲控制器可以根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并向第一存儲控制器發(fā)送該轉(zhuǎn)發(fā)寫命令。需要說明的是,該第二存儲控制器在根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)完畢后,該第二存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第二位置以及該第二位置對應的第一寫操作命令進行刪除,并生成用于指示該第二存儲控制器根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)完畢的完畢消息,并將該完畢消息發(fā)送至第一存儲控制器。該第一存儲控制器在接收到該第二存儲控制器發(fā)送的完畢消息后,可以確定第一存儲控制器是否根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)完畢,并在確定第一存儲控制器是否根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)完畢之后,該第一存儲控制器上的寫操作記錄模塊可以將該寫操作記錄模塊中記載的第一位置以及該第一位置對應的第一寫操作命令進行刪除,并生成用于指示雙活系統(tǒng)根據(jù)第一寫操作命令向目標存儲位置寫入數(shù)據(jù)完畢的通知消息,然后將該通知消息發(fā)送至主機。可選的,本發(fā)明實施例中的寫操作記錄模塊還可以包括復制對(英文:PAIR)和I/O池,該I/O池可以用于記載正在寫入數(shù)據(jù)的存儲位置對應的寫操作命令,該復制PAIR可以查詢I/O池中記載的內(nèi)容,該復制PAIR還可以對I/O池中記載的內(nèi)容進行管理,即刪除該I/O池中記載的某一存儲位置以及該存儲位置對應的寫操作命令,或控制該I/O記載某一存儲位置以及該存儲位置對應的寫操作命令。本發(fā)明實施例中,每個存儲控制器上設置的存儲陣列中每個存儲塊的存儲地址可以為邏輯單元號(英文:LogicalUnitNumber;簡稱:LUN),該I/O池中記載的存儲位置也可以為某一存儲塊的LUN。示例的,本發(fā)明實施例中所述的第一存儲控制器的優(yōu)先級和第二存儲控制器的優(yōu)先級可以通過以下兩種方式進行表征,如:第一存儲控制器自身的優(yōu)先級和第二存儲控制器自身的優(yōu)先級,或者,該第一存儲控制器上的存儲位置的優(yōu)先級以及第二存儲控制器上的存儲位置的優(yōu)先級,存儲控制器上的存儲位置 可以為存儲陣列中的邏輯單元號(英文:LogicalUnitNumber;簡稱:LUN)對應的位置。需要說明的是,該第一存儲控制器的優(yōu)先級和第二存儲控制器的優(yōu)先級還可以通過其他方式表征,本發(fā)明實施例對此不做限定。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入方法中,第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。若第二存儲控制器接收到第一存儲控制器發(fā)送的第一寫操作時,該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且此時該第二存儲控制器確定該第一存儲控制器的優(yōu)先級高于該第二存儲控制器,則該第二存儲控制器可以在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)完畢后,根據(jù)該第一寫操作命令向第二位置寫入數(shù)據(jù),保證了該第二存儲控制器有序的處理第二存儲控制器接收到的寫操作命令。如圖5-1所示,本發(fā)明實施例提供了一種數(shù)據(jù)寫入裝置50,該數(shù)據(jù)寫入裝置50可以用于如圖1所示的雙活系統(tǒng)0中的第一存儲控制器01,該雙活系統(tǒng)0還可以包括第二存儲控制器02,該數(shù)據(jù)寫入裝置50可以包括:第一發(fā)送模塊501,用于向第二存儲控制器發(fā)送第一寫操作命令,第一寫操作命令為主機發(fā)送給第一存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第一存儲控制器中的目標存儲位置為第一位置,第二存儲控制器中的目標存儲位置為第二位置。第一接收模塊502,用于接收第二存儲控制器發(fā)送的返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令 向第二位置寫入數(shù)據(jù),返回消息為第二存儲控制器確定第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,生成并發(fā)送給第一存儲控制器的。第二發(fā)送模塊503,用于向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,第一轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。第二接收模塊504,用于接收第二存儲控制器在確定停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且開始根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)時,發(fā)送的轉(zhuǎn)發(fā)寫命令。寫入模塊505,用于根據(jù)轉(zhuǎn)發(fā)寫命令,向第一位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一發(fā)送模塊在向第二存儲控制器發(fā)送第一寫操作命令后,第一接收模塊接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后第二發(fā)送模塊向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。如圖5-2所示,本發(fā)明實施例提供了另一種數(shù)據(jù)寫入裝置50,該數(shù)據(jù)寫入裝置50可以用于如圖1所示的雙活系統(tǒng)0中的第一存儲控制器01,該雙活系統(tǒng)0還可以包括第二存儲控制器02,該數(shù)據(jù)寫入裝置50可以包括:第一發(fā)送模塊501,用于向第二存儲控制器發(fā)送第一寫操作命令,第一寫操作命令為主機發(fā)送給第一存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第一存儲控制器中的目標存儲位置為第一位置,第二存儲控制器中的目標存儲位置為第二位置。第一接收模塊502,用于接收第二存儲控制器發(fā)送的返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),返回消息為第二存儲控制器確定第二存儲控制器的優(yōu)先 級高于第一存儲控制器的優(yōu)先級時,生成并發(fā)送給第一存儲控制器的。第二發(fā)送模塊503,用于向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,第一轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。第二接收模塊504,用于接收第二存儲控制器在確定停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且開始根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)時,發(fā)送的轉(zhuǎn)發(fā)寫命令。寫入模塊505,用于根據(jù)轉(zhuǎn)發(fā)寫命令,向第一位置寫入數(shù)據(jù)。第四接收模塊506,用于接收主機發(fā)送的第一寫操作命令。判斷模塊507,用于判斷第一存儲控制器是否正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一發(fā)送模塊在向第二存儲控制器發(fā)送第一寫操作命令后,第一接收模塊接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后第二發(fā)送模塊向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。第一發(fā)送模塊501還可以用于:在第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)時,根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù),并向第二存儲控制器發(fā)送第一寫操作命令。如圖5-3所示,本發(fā)明實施例提供了又一種數(shù)據(jù)寫入裝置50,該數(shù)據(jù)寫入裝置50可以用于如圖1所示的雙活系統(tǒng)0中的第一存儲控制器01,該雙活系統(tǒng)0還可以包括第二存儲控制器02,該數(shù)據(jù)寫入裝置50可以包括:第一發(fā)送模塊501,用于向第二存儲控制器發(fā)送第一寫操作命令,第一寫操 作命令為主機發(fā)送給第一存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第一存儲控制器中的目標存儲位置為第一位置,第二存儲控制器中的目標存儲位置為第二位置。第一接收模塊502,用于接收第二存儲控制器發(fā)送的返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),返回消息為第二存儲控制器確定第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,生成并發(fā)送給第一存儲控制器的。第二發(fā)送模塊503,用于向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,第一轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。第二接收模塊504,用于接收第二存儲控制器在確定停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且開始根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù)時,發(fā)送的轉(zhuǎn)發(fā)寫命令。寫入模塊505,用于根據(jù)轉(zhuǎn)發(fā)寫命令,向第一位置寫入數(shù)據(jù)。第四接收模塊506,用于接收主機發(fā)送的第一寫操作命令。判斷模塊507,用于判斷第一存儲控制器是否正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。停止模塊508,用于停止根據(jù)第一寫操作命令向第一位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一發(fā)送模塊在向第二存儲控制器發(fā)送第一寫操作命令后,第一接收模塊接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后第二發(fā)送模塊向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率??蛇x的,每個存儲控制器上均設置有寫操作記錄模塊,寫操作記錄模塊用于記載:寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,判斷 模塊507還可以用于:判斷第一存儲控制器上的寫操作記錄模塊中是否記載有第一位置;在第一存儲控制器上的寫操作記錄模塊中記載有第一位置時,確定第一存儲控制器正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù);在第一存儲控制器上的寫操作記錄模塊中未記載有第一位置時,確定第一存儲控制器不是正在根據(jù)第三寫操作命令向第一位置寫入數(shù)據(jù)。如圖6-1所示,本發(fā)明實施例提供了再一種數(shù)據(jù)寫入裝置60,該數(shù)據(jù)寫入裝置60可以用于如圖1所示的雙活系統(tǒng)0中的第二存儲控制器02,該雙活系統(tǒng)0還可以包括第一存儲控制器01,該數(shù)據(jù)寫入裝置60可以包括:第一接收模塊601,用于接收第一存儲控制器發(fā)送的第一寫操作命令,第一寫操作命令是第一存儲控制器在接收到主機發(fā)送的第一寫操作命令后發(fā)送給第二存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第二存儲控制器中的目標存儲位置為第二位置。發(fā)送模塊602,用于在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。第二接收模塊603,用于接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。第一寫入模塊604,用于在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一接收模塊接收第一存儲控制器發(fā)送的第一寫操作命令,發(fā)送模塊在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后第二接收模塊接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,第一寫入模塊在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲 控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。如圖6-2所示,本發(fā)明另一實施例提供了一種數(shù)據(jù)寫入裝置60,該數(shù)據(jù)寫入裝置60可以用于如圖1所示的雙活系統(tǒng)0中的第二存儲控制器02,該雙活系統(tǒng)0還可以包括第一存儲控制器01,該數(shù)據(jù)寫入裝置60可以包括:第一接收模塊601,用于接收第一存儲控制器發(fā)送的第一寫操作命令,第一寫操作命令是第一存儲控制器在接收到主機發(fā)送的第一寫操作命令后發(fā)送給第二存儲控制器的,第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),第二存儲控制器中的目標存儲位置為第二位置。發(fā)送模塊602,用于在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,返回消息用于指示第二存儲控制器在接收到第一寫操作命令時,正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)。第二接收模塊603,用于接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,轉(zhuǎn)發(fā)寫命令指示的操作與寫操作命令指示的操作相同。第一寫入模塊604,用于在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。第二寫入模塊605,用于在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),第二存儲控制器的優(yōu)先級低于第一存儲控制器的優(yōu)先級,且第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)第一寫操作命令向第二位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一接收模塊接收第一存儲控制器發(fā)送的第一寫操作命令,發(fā)送模塊在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后第二接收模塊接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,第一寫入模塊在第二存儲控制器停止根 據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。若第二存儲控制器接收到第一存儲控制器發(fā)送的第一寫操作時,該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且該第一存儲控制器的優(yōu)先級高于該第二存儲控制器,則第二寫入模塊可以在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)完畢后,根據(jù)該第一寫操作命令向第二位置寫入數(shù)據(jù),保證了該第二存儲控制器有序的處理第二存儲控制器接收到的寫操作命令??蛇x的,每個存儲控制器上均設置有寫操作記錄模塊,寫操作記錄模塊用于記載:寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,第二存儲控制器上的寫操作記錄模塊中記載有第二位置;在第二存儲控制器不是正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,第二存儲控制器上的寫操作記錄模塊中未記載有第二位置。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一接收模塊接收第一存儲控制器發(fā)送的第一寫操作命令,發(fā)送模塊在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后第二接收模塊接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,第一寫入模塊在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。如圖7所示,本發(fā)明另一個實施例提供的另一種數(shù)據(jù)寫入裝置,該數(shù)據(jù)寫 入裝置可以包括至少一個處理器701(例如CPU),至少一個網(wǎng)絡接口702或者其他通信接口,存儲器703,和至少一個通信總線704,用于實現(xiàn)這些裝置之間的連接通信。處理器701用于執(zhí)行存儲器703中存儲的可執(zhí)行模塊,例如計算機程序。存儲器703可能包含高速隨機存取存儲器(RAM:RandomAccessMemory),也可能還包括非不穩(wěn)定的存儲器(non-volatilememory),例如至少一個磁盤存儲器。通過至少一個網(wǎng)絡接口702(可以是有線或者無線)實現(xiàn)該數(shù)據(jù)寫入裝置與至少一個其他網(wǎng)元之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),城域網(wǎng)等。在一些實施方式中,存儲器703存儲了程序7031,程序7031可以被處理器701執(zhí)行,這個程序7031包括:向第二存儲控制器發(fā)送第一寫操作命令,所述第一寫操作命令為主機發(fā)送給所述第一存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第一存儲控制器中的所述目標存儲位置為第一位置,所述第二存儲控制器中的所述目標存儲位置為第二位置;接收所述第二存儲控制器發(fā)送的返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述返回消息為所述第二存儲控制器確定所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,生成并發(fā)送給所述第一存儲控制器的;向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,所述第一轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;接收所述第二存儲控制器在確定停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且開始根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù)時,發(fā)送的所述轉(zhuǎn)發(fā)寫命令;根據(jù)所述轉(zhuǎn)發(fā)寫命令,向所述第一位置寫入數(shù)據(jù)??蛇x的,在所述向第二存儲控制器發(fā)送第一寫操作命令之前,所述程序7031還可以包括:接收主機發(fā)送的所述第一寫操作命令;判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);所述向第二存儲控制器發(fā)送第一寫操作命令,包括:若所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù),則根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù),并向所述第二存儲控制器發(fā)送所述第一寫操作命令??蛇x的,在所述向所述第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令之前,所述方法還包括:停止根據(jù)所述第一寫操作命令向所述第一位置寫入數(shù)據(jù)??蛇x的,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,所述判斷所述第一存儲控制器是否正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù),包括:判斷所述第一存儲控制器上的寫操作記錄模塊中是否記載有所述第一位置;若所述第一存儲控制器上的寫操作記錄模塊中記載有所述第一位置,則確定所述第一存儲控制器正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù);若所述第一存儲控制器上的寫操作記錄模塊中未記載有所述第一位置,則確定所述第一存儲控制器不是正在根據(jù)第三寫操作命令向所述第一位置寫入數(shù)據(jù)。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。如圖8所示,本發(fā)明另一個實施例提供的又一種數(shù)據(jù)寫入裝置,該數(shù)據(jù)寫入裝置可以包括至少一個處理器801(例如CPU),至少一個網(wǎng)絡接口802或者其他通信接口,存儲器803,和至少一個通信總線804,用于實現(xiàn)這些裝置之間的連接通信。處理器801用于執(zhí)行存儲器803中存儲的可執(zhí)行模塊,例如計算機程序。存儲器803可能包含高速隨機存取存儲器(RAM:RandomAccessMemory),也可能還包括非不穩(wěn)定的存儲器(non-volatilememory),例如至少一個磁盤存儲器。通過至少一個網(wǎng)絡接口802(可以是有線或者無線)實現(xiàn)該數(shù)據(jù)寫入裝置與至少一個其他網(wǎng)元之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),城域網(wǎng)等。在一些實施方式中,存儲器803存儲了程序8031,程序8031可以被處理器801執(zhí)行,這個程序8031包括:接收第一存儲控制器發(fā)送的第一寫操作命令,所述第一寫操作命令是所述第一存儲控制器在接收到主機發(fā)送的所述第一寫操作命令后發(fā)送給所述第二存儲控制器的,所述第一寫操作命令用于指示在目標存儲位置寫入數(shù)據(jù),所述第二存儲控制器中的所述目標存儲位置為第二位置;在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),且所述第二存儲控制器的優(yōu)先級高于所述第一存儲控制器的優(yōu)先級時,向所述第一存儲控制器發(fā)送返回消息,所述返回消息用于指示所述第二存儲控制器在接收到所述第一寫操作命令時,正在根據(jù)第二寫操作命令向所述第二位置寫入數(shù)據(jù);接收所述第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,所述轉(zhuǎn)發(fā)寫命令指示的操作與所述寫操作命令指示的操作相同;在所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述轉(zhuǎn)發(fā)寫命令向所述第二位置寫入數(shù)據(jù),并將所述轉(zhuǎn)發(fā)寫命令發(fā)送至所述第一存儲控制器??蛇x的,所述程序8031還可以包括:在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù),所述第二存儲控制器的優(yōu)先級低于所述第一存儲控制器的優(yōu)先級,且所述第二存儲控制器停止根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,根據(jù)所述第一寫操作命令向所述第二位置寫入數(shù)據(jù)??蛇x的,每個存儲控制器上均設置有寫操作記錄模塊,所述寫操作記錄模塊用于記載:所述寫操作記錄模塊所在的存儲控制器中正在寫入數(shù)據(jù)的存儲位置,在所述第二存儲控制器正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中記載有所述第二位置;在所述第二存儲控制器不是正在根據(jù)所述第二寫操作命令向所述第二位置寫入數(shù)據(jù)時,所述第二存儲控制器上的寫操作記錄模塊中未記載有所述第二位置。綜上所述,由于本發(fā)明實施例提供的數(shù)據(jù)寫入裝置中,第二存儲控制器接收第一存儲控制器發(fā)送的第一寫操作命令,在第二存儲控制器正在根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù),且第二存儲控制器的優(yōu)先級高于第一存儲控制器的優(yōu)先級時,向第一存儲控制器發(fā)送返回消息,然后接收第一存儲控制器發(fā)送的轉(zhuǎn)發(fā)寫命令,在第二存儲控制器停止根據(jù)第二寫操作命令向第二位置寫入數(shù)據(jù)時,根據(jù)轉(zhuǎn)發(fā)寫命令向第二位置寫入數(shù)據(jù),并將轉(zhuǎn)發(fā)寫命令發(fā)送至第一存儲控制器。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。如圖9所示,本發(fā)明實施例提供了一種雙活系統(tǒng)90,該雙活系統(tǒng)90可以包括第一存儲控制器901和第二存儲控制器902。一方面,該第一存儲控制器901可以為圖5-1、圖5-2或圖5-3所示的數(shù)據(jù)寫入裝置50;第二存儲控制器902可以為圖6-1或圖6-2所示的數(shù)據(jù)寫入裝置60。另一方面,該第一存儲控制器901可以為圖7所示的數(shù)據(jù)寫入裝置;第二存儲控制器902可以為圖8所示的數(shù)據(jù)寫入裝置。綜上所述,由于本發(fā)明實施例提供的雙活系統(tǒng)中,第一存儲控制器在向第二存儲控制器發(fā)送第一寫操作命令后,接收到第二存儲控制器在確定第二存儲控制器的優(yōu)先級高于第一存儲控制器,且該第二存儲控制器正在根據(jù)第二寫操 作命令向第二位置寫入數(shù)據(jù)時,向第一存儲控制器發(fā)送的返回消息,然后該第一存儲控制器向第二存儲控制器發(fā)送轉(zhuǎn)發(fā)寫命令,使得該第一存儲控制器和第二存儲控制器根據(jù)轉(zhuǎn)發(fā)寫命令分別向第一位置和第二位置寫入數(shù)據(jù)。本發(fā)明實施例中,根據(jù)第一存儲控制器與第二存儲控制器的優(yōu)先級順序,依次向第二位置寫入數(shù)據(jù),防止了該第二存儲控制器同時根據(jù)兩個寫操作命令向同一存儲位置寫入數(shù)據(jù),且無需為第二位置加鎖,所以,減少了第一存儲控制器與第二存儲控制器之間的通信次數(shù),減短了雙活系統(tǒng)中數(shù)據(jù)寫入耗費的時間,提高了數(shù)據(jù)寫入的效率。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的數(shù)據(jù)寫入裝置和雙活系統(tǒng)的具體工作過程,可以參考前述數(shù)據(jù)寫入方法實施例中的對應過程,在此不再贅述。本領域技術人員在考慮說明書及實踐這里公開的公開后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公開未公開的本
技術領域:
中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由權(quán)利要求指出。在本申請所提供的幾個實施例中,應該理解到,所揭露的雙活系統(tǒng),數(shù)據(jù)寫入裝置和數(shù)據(jù)寫入方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的數(shù)據(jù)寫入裝置實施例僅僅是示意性的,例如,所述數(shù)據(jù)寫入裝置中單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。應當理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。當前第1頁1 2 3