两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

數(shù)據(jù)存儲(chǔ)的方法和存儲(chǔ)系統(tǒng)與流程

文檔序號(hào):11154707閱讀:1571來源:國知局
數(shù)據(jù)存儲(chǔ)的方法和存儲(chǔ)系統(tǒng)與制造工藝

本申請(qǐng)涉及計(jì)算機(jī)存儲(chǔ)領(lǐng)域,并且更具體地,涉及數(shù)據(jù)存儲(chǔ)的方法和存儲(chǔ)系統(tǒng)。



背景技術(shù):

鏡像是冗余的一種類型,一個(gè)磁盤上的數(shù)據(jù)在另一個(gè)磁盤上存在一個(gè)完全相同的副本即為鏡像。在服務(wù)器上常用鏡像操作是組建獨(dú)立磁盤冗余陣列(Redundant Array Of Independent Disks,RAID)1,RAID1是將一個(gè)兩塊硬盤所構(gòu)成的RAID磁盤陣列,其容量?jī)H等于一個(gè)硬盤的容量,因?yàn)榱硪粔K只是當(dāng)作數(shù)據(jù)“鏡像”。

在分布式存儲(chǔ)系統(tǒng)中,為了達(dá)到可靠性的要求,選擇在節(jié)點(diǎn)間使用鏡像機(jī)制。將本地?cái)?shù)據(jù),復(fù)制一份在鏡像節(jié)點(diǎn)保存,在故障情況下,快速恢復(fù)業(yè)務(wù)。

在現(xiàn)有技術(shù)中,待存儲(chǔ)數(shù)據(jù)發(fā)送到鏡像節(jié)點(diǎn),鏡像節(jié)點(diǎn)需要為待存儲(chǔ)數(shù)據(jù)配置內(nèi)存索引,內(nèi)存索引用于方便讀取該鏡像節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù);之后鏡像節(jié)點(diǎn)需要申請(qǐng)資源空間,并設(shè)置資源空間的存儲(chǔ)地址與內(nèi)存索引的映射關(guān)系;最后將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到存儲(chǔ)地址對(duì)應(yīng)的資源空間中。現(xiàn)有技術(shù)鏡像節(jié)點(diǎn)存儲(chǔ)待存儲(chǔ)數(shù)據(jù)的上述操作對(duì)鏡像節(jié)點(diǎn)的中央處理器(Central Processing Unit,CPU)的占用較高。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)存儲(chǔ)的方法和存儲(chǔ)系統(tǒng),能夠減少鏡像存儲(chǔ)設(shè)備存儲(chǔ)數(shù)據(jù)對(duì)CPU的占用。

第一方面,本申請(qǐng)實(shí)施例提供了一種數(shù)據(jù)存儲(chǔ)的方法,該方法應(yīng)用于包括第一存儲(chǔ)設(shè)備和至少一個(gè)第二存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng),其中,該第二存儲(chǔ)設(shè)備為該第一存儲(chǔ)設(shè)備的鏡像存儲(chǔ)設(shè)備,該方法包括:第一存儲(chǔ)設(shè)備接收寫請(qǐng)求消息,該寫請(qǐng)求消息攜帶目標(biāo)數(shù)據(jù);該第一存儲(chǔ)設(shè)備根據(jù)該目標(biāo)數(shù)據(jù),生成目標(biāo)日志,該目標(biāo)日志包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息;該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志;該第二存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志,且該存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引。

本申請(qǐng)實(shí)施例應(yīng)用于包括第一存儲(chǔ)設(shè)備和至少一個(gè)第二存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)中,且第二存儲(chǔ)設(shè)備為一類第一存儲(chǔ)設(shè)備的鏡像存儲(chǔ)設(shè)備。第一存儲(chǔ)設(shè)備接收寫請(qǐng)求消息,寫請(qǐng)求消息中攜帶待寫的數(shù)據(jù)(表示為目標(biāo)數(shù)據(jù)),根據(jù)該目標(biāo)數(shù)據(jù),生成相應(yīng)的目標(biāo)日志,并向第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志將該目標(biāo)日志直接存儲(chǔ)到第二存儲(chǔ)設(shè)備中,由于該目標(biāo)日志包括用于表示該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,這樣第二存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志時(shí)并不需要?jiǎng)?chuàng)建內(nèi)存索引,相比現(xiàn)有技術(shù)中,第二存儲(chǔ)設(shè)備需要配置內(nèi)存索引而言,本申請(qǐng)可以直接存儲(chǔ)該目標(biāo)日志,從而節(jié)省了第二存儲(chǔ)設(shè)備配置內(nèi)存索引時(shí)對(duì)CPU的占用。

在一些可能的實(shí)現(xiàn)方式中,該方法還包括:該第二存儲(chǔ)設(shè)備在完成存儲(chǔ)該目標(biāo)日志時(shí),向該第一存儲(chǔ)設(shè)備發(fā)送存儲(chǔ)完成消息;該第一存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志;該第一存儲(chǔ)設(shè)備在完成該目標(biāo)日志的存儲(chǔ)和接收到該存儲(chǔ)完成消息之后,發(fā)送寫請(qǐng)求響應(yīng)消息。

第一存儲(chǔ)設(shè)備完成寫入目標(biāo)日志,且接收到第二存儲(chǔ)設(shè)備發(fā)送的存儲(chǔ)完成消息之后,向IO設(shè)備發(fā)送寫請(qǐng)求響應(yīng)消息,這樣避免現(xiàn)有技術(shù)中需要等待將目標(biāo)數(shù)據(jù)存儲(chǔ)到內(nèi)存索引對(duì)應(yīng)的資源空間之后才能向IO設(shè)備返回寫請(qǐng)求響應(yīng)消息,從而減少了發(fā)出寫請(qǐng)求到收到寫請(qǐng)求響應(yīng)消息的時(shí)延。

在一些可能的實(shí)現(xiàn)方式中,該第二存儲(chǔ)設(shè)備包括多個(gè)資源空間;其中,該第二存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志包括:該第二存儲(chǔ)設(shè)備根據(jù)該標(biāo)識(shí)信息,確定存儲(chǔ)該目標(biāo)日志的第一資源空間,該第一資源空間為該第二存儲(chǔ)設(shè)備的多個(gè)資源空間中滿足該目標(biāo)日志的資源需求的任一資源空間;該第二存儲(chǔ)設(shè)備將該目標(biāo)日志存儲(chǔ)到該第一資源空間中。

第二存儲(chǔ)設(shè)備根據(jù)該標(biāo)識(shí)信息選擇合適的資源空間(表示為第一資源空間),將該目標(biāo)日志存儲(chǔ)到第二存儲(chǔ)設(shè)備的第一資源空間中。此外,第二存儲(chǔ)設(shè)備可以根據(jù)標(biāo)識(shí)信息識(shí)別目標(biāo)數(shù)據(jù),以目標(biāo)日志的形式可以將目標(biāo)數(shù)據(jù)按照順序進(jìn)行有規(guī)律的存儲(chǔ),這樣第二存儲(chǔ)設(shè)備可以不需要為目標(biāo)數(shù)據(jù)配置內(nèi)存索引,從而使得節(jié)省了第二存儲(chǔ)設(shè)備的CPU占用。

在一些可能的實(shí)現(xiàn)方式中,該第二存儲(chǔ)設(shè)備包括多個(gè)資源空間;該方法還包括:該第一存儲(chǔ)設(shè)備獲取第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量,該第二資源空間為該第二存儲(chǔ)設(shè)備的多個(gè)資源空間中任一資源空間;該第一存儲(chǔ)設(shè)備根據(jù)該第二資源空間的存儲(chǔ)容量和該標(biāo)識(shí)信息,確定該第二資源空間是否滿足該目標(biāo)日志的資源需求;該第一存儲(chǔ)設(shè)備在該第二資源空間滿足該目標(biāo)日志的資源需求時(shí),根據(jù)RDMA編碼方式、該目標(biāo)日志和該第二資源空間的存儲(chǔ)地址,生成RDMA消息,該RDMA消息包括該第二資源空間的存儲(chǔ)地址和該目標(biāo)日志;其中,該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志包括:該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備的第二資源空間發(fā)送該RDMA消息;其中,該第二存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志包括:該第二存儲(chǔ)設(shè)備的第二資源空間根據(jù)該RDMA消息,存儲(chǔ)該目標(biāo)日志。

第二存儲(chǔ)設(shè)備在將目標(biāo)日志存儲(chǔ)到第二資源空間之后,就可以向第一存儲(chǔ)設(shè)備返回存儲(chǔ)完成消息。本申請(qǐng)實(shí)施例相比第二存儲(chǔ)設(shè)備接收目標(biāo)日志,并需要為目標(biāo)日志選擇合適的資源空間,能夠更進(jìn)一步節(jié)省了第二存儲(chǔ)設(shè)備的CPU的占用。

在一些可能的實(shí)現(xiàn)方式中,該第一存儲(chǔ)設(shè)備獲取第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量包括:該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求消息,該資源請(qǐng)求消息用于請(qǐng)求存儲(chǔ)該目標(biāo)日志的該第二資源空間;該第一存儲(chǔ)設(shè)備接收該第二存儲(chǔ)設(shè)備根據(jù)該資源請(qǐng)求消息發(fā)送的資源請(qǐng)求響應(yīng)消息,該資源請(qǐng)求響應(yīng)消息攜帶該第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量。

第一存儲(chǔ)設(shè)備可以向第二存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求消息,第二存儲(chǔ)設(shè)備在多個(gè)資源空間中選擇任意一個(gè)資源空間(表示為第二資源空間),并向第一存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求響應(yīng)消息,且在資源請(qǐng)求響應(yīng)消息中攜帶該第二資源空間的存儲(chǔ)地址和該第二資源空間的剩余容量,從而使得第一存儲(chǔ)設(shè)備能夠?yàn)槟繕?biāo)日志選擇合適的資源空間。第一存儲(chǔ)設(shè)備可以只獲取一次第二存儲(chǔ)設(shè)備的資源空間的地址和存儲(chǔ)容量,直至該資源空間沒有剩余資源,或者剩余資源不能夠滿足當(dāng)前待寫入數(shù)據(jù)的大小,然后才進(jìn)行下一次獲取第二存儲(chǔ)設(shè)備的資源空間的地址和存儲(chǔ)容量。

在一些可能的實(shí)現(xiàn)方式中,該方法還包括:該第一存儲(chǔ)設(shè)備為該目標(biāo)數(shù)據(jù)配置內(nèi)存索引;該第一存儲(chǔ)設(shè)備根據(jù)該內(nèi)存索引,確定存儲(chǔ)該目標(biāo)數(shù)據(jù)的該第一存儲(chǔ)設(shè)備的資源空間,其中,該第一存儲(chǔ)設(shè)備的資源空間的存儲(chǔ)地址對(duì)應(yīng)于該內(nèi)存索引;該第一存儲(chǔ)設(shè)備將該目標(biāo)數(shù)據(jù)寫入該第一存儲(chǔ)設(shè)備的資源空間中。

第一存儲(chǔ)設(shè)備為目標(biāo)數(shù)據(jù)配置內(nèi)存索引,以及為目標(biāo)數(shù)據(jù)申請(qǐng)存儲(chǔ)資源(表示為第一存儲(chǔ)設(shè)備的資源空間),且配置已經(jīng)申請(qǐng)的存儲(chǔ)資源的存儲(chǔ)地址與內(nèi)存索引的映射關(guān)系,該映射關(guān)系用于后續(xù)第一存儲(chǔ)設(shè)備能夠根據(jù)內(nèi)存索引讀取到對(duì)應(yīng)的存儲(chǔ)地址中存儲(chǔ)的數(shù)據(jù),最后將目標(biāo)數(shù)據(jù)寫入到存儲(chǔ)地址對(duì)應(yīng)的資源空間中。這樣第一存儲(chǔ)設(shè)備將目標(biāo)數(shù)據(jù)存儲(chǔ)到有內(nèi)存索引對(duì)應(yīng)的資源空間中,并不會(huì)延長(zhǎng)影響返回寫請(qǐng)求響應(yīng)消息的時(shí)間。

第二方面,本申請(qǐng)實(shí)施例提供了一種存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)可以實(shí)現(xiàn)上述方面所涉及方法中第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備所執(zhí)行的功能,所述功能可以通過硬件實(shí)現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實(shí)現(xiàn)。所述硬件或軟件包括一個(gè)或多個(gè)上述功能相應(yīng)的單元或模塊。

第三方面,提供了一種存儲(chǔ)系統(tǒng),該存儲(chǔ)系統(tǒng)的結(jié)構(gòu)中包括存儲(chǔ)器,該處理器被配置為支持上述方面所涉及方法中第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備所執(zhí)行的功能。該通信接口用于支持該第一存儲(chǔ)設(shè)備、第二存儲(chǔ)設(shè)備與其它網(wǎng)元之間的通信。該存儲(chǔ)器用于與處理器耦合,其保存該第一存儲(chǔ)設(shè)備、該第二存儲(chǔ)設(shè)備必要的程序指令和數(shù)據(jù)。

第四方面,提供了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),該計(jì)算機(jī)存儲(chǔ)介質(zhì)中存儲(chǔ)有程序代碼,該程序代碼用于指示執(zhí)行上述存儲(chǔ)系統(tǒng)所用的計(jì)算機(jī)軟件指令,其包含用于執(zhí)行上述方面所設(shè)計(jì)的程序。

基于上述技術(shù)方案,第一存儲(chǔ)設(shè)備通過接收攜帶目標(biāo)數(shù)據(jù)的寫請(qǐng)求消息,根據(jù)該寫請(qǐng)求消息中的目標(biāo)數(shù)據(jù)生成包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,并向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志,第二存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志,且存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引,這樣第一存儲(chǔ)設(shè)備生成包括標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,第二存儲(chǔ)設(shè)備可以存儲(chǔ)目標(biāo)日志不需要配置內(nèi)存索引,從而減少了對(duì)第二存儲(chǔ)設(shè)備的CPU的占用。

附圖說明

為了更清楚地說明本申請(qǐng)實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng)的架構(gòu)示意圖;

圖2是本申請(qǐng)實(shí)施例的存儲(chǔ)節(jié)點(diǎn)和管理節(jié)點(diǎn)的結(jié)構(gòu)示意圖;

圖3是本申請(qǐng)實(shí)施例Cache模塊的工作流程圖;

圖4a、圖4b和圖4c是本申請(qǐng)實(shí)施例的日志格式的示意圖;

圖5是本申請(qǐng)實(shí)施例的資源空間的結(jié)構(gòu)示意圖;

圖6是現(xiàn)有技術(shù)數(shù)據(jù)存儲(chǔ)的方法的示意性流程圖;

圖7是本申請(qǐng)一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法的示意性流程圖;

圖8是本申請(qǐng)另一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法的示意性流程圖;

圖9是本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng)的示意性框圖;

圖10是本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng)的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。

圖1示出了本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng)的架構(gòu)示意圖。如圖1所示,該存儲(chǔ)系統(tǒng)包括節(jié)點(diǎn)和網(wǎng)絡(luò)。其中,節(jié)點(diǎn)分為用戶節(jié)點(diǎn)(可以有多個(gè)用戶節(jié)點(diǎn):用戶節(jié)點(diǎn)200a、用戶節(jié)點(diǎn)200b、用戶節(jié)點(diǎn)200c和用戶節(jié)點(diǎn)200d)、存儲(chǔ)節(jié)點(diǎn)(可以有多個(gè)存儲(chǔ)節(jié)點(diǎn):存儲(chǔ)節(jié)點(diǎn)100a、存儲(chǔ)節(jié)點(diǎn)100b、存儲(chǔ)節(jié)點(diǎn)100c和存儲(chǔ)節(jié)點(diǎn)100d)和管理節(jié)點(diǎn)300。網(wǎng)絡(luò)分為用于承載用戶輸入輸出(Input/Output,IO)數(shù)據(jù)的前端網(wǎng)絡(luò)400和用于承載業(yè)務(wù)數(shù)據(jù)的后端網(wǎng)絡(luò)500。本申請(qǐng)實(shí)施例中的業(yè)務(wù)數(shù)據(jù)可以是指支持RDMA的鏡像數(shù)據(jù)。

用戶節(jié)點(diǎn)用于在前端接收用戶IO數(shù)據(jù),通過前端網(wǎng)絡(luò)轉(zhuǎn)發(fā)給存儲(chǔ)節(jié)點(diǎn)。存儲(chǔ)節(jié)點(diǎn)用于存儲(chǔ)用戶業(yè)務(wù)數(shù)據(jù),同時(shí)高速緩沖存儲(chǔ)器(Cache)功能也在存儲(chǔ)節(jié)點(diǎn)上。管理節(jié)點(diǎn)用于負(fù)責(zé)維護(hù)存儲(chǔ)節(jié)點(diǎn)間的鏡像關(guān)系。

圖2示出了存儲(chǔ)節(jié)點(diǎn)和管理節(jié)點(diǎn)的結(jié)構(gòu)示意圖。其中,存儲(chǔ)節(jié)點(diǎn)可以區(qū)分IO的主存儲(chǔ)節(jié)點(diǎn)(以圖1中的100a為例)和IO的鏡像存儲(chǔ)節(jié)點(diǎn)(以圖1中的100b為例)。IO的主節(jié)點(diǎn)100a主要包括前端IO模塊110a、后端磁盤模塊120a和Cache模塊130a。前端IO模塊110a用于負(fù)責(zé)用戶IO接收、IO流控以及IO錯(cuò)誤處理。后端磁盤模塊120a用于提供用戶業(yè)務(wù)數(shù)據(jù)通過磁盤讀寫功能。Cache模塊130a分為日志層131a、資源層132a和本地存儲(chǔ)133a。管理節(jié)點(diǎn)300包括鏡像管理模塊310,鏡像管理模塊310用于在管理節(jié)點(diǎn)上負(fù)責(zé)維護(hù)節(jié)點(diǎn)間鏡像關(guān)系,并通知Cache模塊130。鏡像存儲(chǔ)節(jié)點(diǎn)100b的結(jié)構(gòu)與主存儲(chǔ)節(jié)點(diǎn)100a的結(jié)構(gòu)相同,在此不再贅述。

圖3示出了Cache模塊130a的內(nèi)部工作流程。日志層131a接收前端IO模塊110a發(fā)送的IO數(shù)據(jù),并將IO數(shù)據(jù)轉(zhuǎn)換為日志形式(例如,預(yù)寫日志(Write-ahead logging,WAL log)格式的數(shù)據(jù))發(fā)送給資源層132a;資源層132a負(fù)責(zé)資源(例如,非易失性的雙列內(nèi)存模塊(Non-Volatile Dual In-line Memory Module,NVDIMM)資源)的空間分配,并將日志發(fā)送到鏡像節(jié)點(diǎn)110b進(jìn)行存儲(chǔ)。主存儲(chǔ)節(jié)點(diǎn)100a接收到存儲(chǔ)完成消息,本地存儲(chǔ)133a在本地存儲(chǔ)日志。

為了方便理解本申請(qǐng)實(shí)施例,首先在此介紹本申請(qǐng)實(shí)施例之前引入以下幾個(gè)要素。

遠(yuǎn)程直接數(shù)據(jù)存取(Remote Direct Memory Access,RDMA)通過網(wǎng)絡(luò)將數(shù)據(jù)直接傳入鏡像節(jié)點(diǎn)的存儲(chǔ)區(qū),而不對(duì)操作系統(tǒng)造成任何影響,這樣就可以減少鏡像端的CPU的開銷。具體RDMA實(shí)現(xiàn)是通過發(fā)送方和接收方針對(duì)目的緩存區(qū)的位置進(jìn)行協(xié)商,與傳統(tǒng)的TCP連接不同的是要對(duì)傳統(tǒng)傳輸控制協(xié)議(Transmission Control Protocol,TCP)頭部數(shù)據(jù)結(jié)構(gòu)進(jìn)行一些改動(dòng)以支持RDMA協(xié)議,主要是增加一個(gè)表示目的地址的字段(即生成RDMA消息)。RDMA讀寫操作要求源端和目的端都知道目的緩存區(qū)的位置和大小,如果從主機(jī)的內(nèi)存通過RDMA向另一個(gè)主機(jī)內(nèi)存寫一塊數(shù)據(jù),則必須提供目的緩存區(qū)的地址,并確保這個(gè)緩存區(qū)足夠大來接收這塊數(shù)據(jù)。

WAL log日志格式分為三種類型:簡(jiǎn)單型日志、復(fù)合型日志和命令型日志。

簡(jiǎn)單型日志只針對(duì)元數(shù)據(jù)(即是描述數(shù)據(jù)屬性的信息,用來指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能)的一個(gè)對(duì)象的日志,或數(shù)據(jù)的一個(gè)文件的日志。在一個(gè)寫IO只包含一個(gè)Cache模塊的數(shù)據(jù)時(shí),通常使用簡(jiǎn)單型日志格式。簡(jiǎn)單型日志格式如圖4a所示,包括魔術(shù)字部分、數(shù)據(jù)部分、日志頭部分和日志尾部分。魔術(shù)字部分存儲(chǔ)一組魔術(shù)字表示日志開始,日志頭中存放元數(shù)據(jù),日志尾中存放日志的循環(huán)冗余碼校驗(yàn)(Cyclic Redundancy Check,CRC)校驗(yàn)信息。

復(fù)合型日志格式如圖4b所示,在一個(gè)寫IO包含多個(gè)Cache模塊的數(shù)據(jù)時(shí),需要轉(zhuǎn)換為多條簡(jiǎn)單日志,再對(duì)多條簡(jiǎn)單日志封裝一個(gè)復(fù)合日志頭,組合成一條復(fù)合型日志,來保證這多條log的一致性。這條復(fù)合型日志的數(shù)據(jù)部分存放著多條簡(jiǎn)單日志,具體日志個(gè)數(shù)及數(shù)據(jù)長(zhǎng)度在日志頭中保存。

命令型日志格式如圖4c所示,當(dāng)一個(gè)寫命令或者其他命令的IO下發(fā)數(shù)據(jù),這部分IO攜帶的數(shù)據(jù)將不需要在Cache中保存,為了鏡像節(jié)點(diǎn)能夠感知到,也需要寫入一條日志,描述實(shí)現(xiàn)數(shù)據(jù)的位置以及大小。其中,命令型日志頭中描述失效范圍信息。

資源層的資源分配是指將鏡像的空間分為多個(gè)段(Segment)(通常使用8M NVDIMM空間)來管理。每個(gè)Segment可以存放多條WAL log(如圖5所示),WAL log采用連續(xù)存放方式,每條WAL log首尾相連。魔術(shù)字部分存儲(chǔ)一組魔術(shù)字表示一個(gè)Segment的開始,日志頭記錄Segmnet狀態(tài)是否可用以及Segment序號(hào)等描述信息。

圖6示出了現(xiàn)有技術(shù)數(shù)據(jù)存儲(chǔ)的方法,具體流程如下所示:

101、IO前端模塊向本地緩存模塊發(fā)送寫請(qǐng)求消息,該寫請(qǐng)求消息攜帶待寫的目標(biāo)數(shù)據(jù)。

102、本地緩存模塊接收到該目標(biāo)數(shù)據(jù),并將該目標(biāo)數(shù)據(jù)發(fā)送給鏡像緩存模塊以使鏡像緩存模塊存儲(chǔ)該目標(biāo)數(shù)據(jù)。

103、鏡像緩存模塊接收該目標(biāo)數(shù)據(jù),并為該目標(biāo)數(shù)據(jù)配置內(nèi)存索引,該內(nèi)存索引用于方便讀取該目標(biāo)數(shù)據(jù),具體地,鏡像緩存模塊可以先在已有的索引表查詢是否存在該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的內(nèi)存索引,若不存在,為該目標(biāo)數(shù)據(jù)創(chuàng)建相應(yīng)的內(nèi)存索引;

104、鏡像緩存模塊根據(jù)內(nèi)存索引為目標(biāo)數(shù)據(jù)申請(qǐng)存儲(chǔ)資源(即配置合適的用于存儲(chǔ)目標(biāo)數(shù)據(jù)的資源空間),且設(shè)置目標(biāo)數(shù)據(jù)的內(nèi)存索引與申請(qǐng)的資源空間的存儲(chǔ)地址的映射關(guān)系,使得根據(jù)索引以及索引對(duì)應(yīng)的存儲(chǔ)地址能夠讀取存儲(chǔ)空間中的數(shù)據(jù)。

105、鏡像存儲(chǔ)模塊將目標(biāo)數(shù)據(jù)存儲(chǔ)到申請(qǐng)的資源空間中。

106、鏡像緩存模塊完成目標(biāo)數(shù)據(jù)的存儲(chǔ)后,向本地緩存模塊發(fā)送存儲(chǔ)完成消息。

107、本地緩存模塊接收到鏡像緩存模塊發(fā)送的存儲(chǔ)完成消息后,可以開始在本地緩存中進(jìn)行存儲(chǔ)目標(biāo)數(shù)據(jù),首先為目標(biāo)數(shù)據(jù)配置內(nèi)存索引。具體流程與鏡像節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)的流程(如上述步驟103和步驟104)相同,在此不進(jìn)行贅述。

108、本地緩存模塊為目標(biāo)數(shù)據(jù)申請(qǐng)存儲(chǔ)資源。

109、本地緩存模塊將目標(biāo)數(shù)據(jù)存儲(chǔ)到申請(qǐng)的資源空間中。

110、本地緩存模塊完成目標(biāo)數(shù)據(jù)的存儲(chǔ)后,向IO前端模塊發(fā)送寫請(qǐng)求響應(yīng)消息。

因此,現(xiàn)有技術(shù)中,鏡像緩存模塊存儲(chǔ)鏡像數(shù)據(jù)時(shí)需要經(jīng)過為目標(biāo)數(shù)據(jù)配置內(nèi)存索引、申請(qǐng)存儲(chǔ)資源(鏡像緩存模塊需要根據(jù)目標(biāo)數(shù)據(jù)的大小、類型等各種屬性找到合適的資源空間,并配置資源空間的存儲(chǔ)地址與內(nèi)存索引的映射關(guān)系)和并將目標(biāo)數(shù)據(jù)存儲(chǔ)到鏡像緩存模塊的這些步驟都需要CPU參與,從而使得鏡像存儲(chǔ)節(jié)點(diǎn)的CPU占用較高。

本申請(qǐng)實(shí)施例應(yīng)用于第一存儲(chǔ)設(shè)備正常工作的情況下,第一存儲(chǔ)設(shè)備存儲(chǔ)數(shù)據(jù)以及第二存儲(chǔ)設(shè)備存儲(chǔ)數(shù)據(jù)的場(chǎng)景。

應(yīng)理解,本申請(qǐng)實(shí)施例的第一存儲(chǔ)設(shè)備對(duì)應(yīng)于上述圖2的主存儲(chǔ)節(jié)點(diǎn)100a,第二存儲(chǔ)設(shè)備對(duì)應(yīng)于上述圖2的鏡像存儲(chǔ)節(jié)點(diǎn)100b;或者說本申請(qǐng)實(shí)施例的第一存儲(chǔ)設(shè)備就是上述圖2的主存儲(chǔ)節(jié)點(diǎn)100a,第二存儲(chǔ)設(shè)備就是上述圖2的鏡像存儲(chǔ)節(jié)點(diǎn)100b;或者該第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備分別為具有上述Cache模塊130a功能的設(shè)備和上述Cache模塊130b功能的設(shè)備,本申請(qǐng)對(duì)此不進(jìn)行限定。

圖7示出了根據(jù)本申請(qǐng)一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法的示意性流程圖。本申請(qǐng)實(shí)施例中的第一存儲(chǔ)設(shè)備可以是圖1中的存儲(chǔ)節(jié)點(diǎn)100a、100b、100c和100d中的任意一個(gè)存儲(chǔ)節(jié)點(diǎn),第二存儲(chǔ)設(shè)備可以是通過管理節(jié)點(diǎn)300確定的主存儲(chǔ)節(jié)點(diǎn)的鏡像存儲(chǔ)節(jié)點(diǎn)。

701、第一存儲(chǔ)設(shè)備接收寫請(qǐng)求消息,該寫請(qǐng)求消息攜帶目標(biāo)數(shù)據(jù)。

本申請(qǐng)實(shí)施例應(yīng)用于包括第一存儲(chǔ)設(shè)備和至少一個(gè)第二存儲(chǔ)設(shè)備的存儲(chǔ)系統(tǒng)中,且第二存儲(chǔ)設(shè)備為一類第一存儲(chǔ)設(shè)備的鏡像存儲(chǔ)設(shè)備。此外,第一存儲(chǔ)設(shè)備也可以是第二存儲(chǔ)設(shè)備的鏡像存儲(chǔ)設(shè)備,也就是說,第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備可以互為鏡像存設(shè)備,本申請(qǐng)對(duì)此不進(jìn)行限定。

第一存儲(chǔ)設(shè)備可以是圖2中的Cache模塊130a,Cache模塊130a接收IO前端模塊110a發(fā)送的寫請(qǐng)求消息,但本申請(qǐng)并不限于此。第一存儲(chǔ)設(shè)備接收寫請(qǐng)求消息,寫請(qǐng)求消息中攜帶待寫的數(shù)據(jù)(表示為目標(biāo)數(shù)據(jù)),該目標(biāo)數(shù)據(jù)可以是需要同一個(gè)緩存處理的數(shù)據(jù),也可以是需要多個(gè)緩存單元處理的數(shù)據(jù);或者該目標(biāo)數(shù)據(jù)不需要在緩存中保存。

應(yīng)注意,該第一存儲(chǔ)設(shè)備可以包括多個(gè)內(nèi)存區(qū)域、處理器、控制器、且控制器上運(yùn)行著操作系統(tǒng)等,第二存儲(chǔ)設(shè)備可以與第一存儲(chǔ)設(shè)備相同,也可以不同,本申請(qǐng)對(duì)此不進(jìn)行限定。

702、第一存儲(chǔ)設(shè)備根據(jù)該目標(biāo)數(shù)據(jù),生成相應(yīng)的目標(biāo)日志。

該目標(biāo)日志包括目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,該標(biāo)識(shí)信息為指示目標(biāo)數(shù)據(jù)屬性的各種信息。例如,日志格式如圖4a、圖4b和圖4c所示,以簡(jiǎn)單型日志為例,簡(jiǎn)單型日志中包括魔術(shù)字部分、數(shù)據(jù)部分和日志頭部分和日志尾部分。存儲(chǔ)設(shè)備能夠根據(jù)魔術(shù)字部分識(shí)別日志的開始;而日志頭中存儲(chǔ)元數(shù)據(jù),元數(shù)據(jù)用于指示數(shù)據(jù)存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能;日志尾部分存放日志的CRC校驗(yàn)信息,保證了數(shù)據(jù)的可靠性。因此,本申請(qǐng)實(shí)施例中的目標(biāo)日志中包括的標(biāo)識(shí)信息可以是日志頭、日志尾以及魔術(shù)字部分中存儲(chǔ)的所有信息。

日志格式包括簡(jiǎn)單型日志、復(fù)合型日志和命令型日志。若目標(biāo)數(shù)據(jù)需要一個(gè)緩存處理,則第一存儲(chǔ)存儲(chǔ)設(shè)備將該目標(biāo)數(shù)據(jù)轉(zhuǎn)換為簡(jiǎn)單型日志;若目標(biāo)數(shù)據(jù)是需要多個(gè)緩存處理,則第一存儲(chǔ)設(shè)備將目標(biāo)數(shù)據(jù)轉(zhuǎn)換為復(fù)合型日志。若目標(biāo)數(shù)據(jù)不需要在緩存中保存,則第一存儲(chǔ)設(shè)備將目標(biāo)數(shù)據(jù)轉(zhuǎn)換為命令型日志,以描述該數(shù)據(jù)失效,以及失效數(shù)據(jù)的位置和大小。這樣第一存儲(chǔ)設(shè)備能夠根據(jù)目標(biāo)數(shù)據(jù)需要一個(gè)緩存處理、多個(gè)緩存處理還是不需要緩存處理,為目標(biāo)數(shù)據(jù)選擇生成合適的目標(biāo)日志。

應(yīng)理解,本申請(qǐng)實(shí)施例中對(duì)“緩存”和“內(nèi)存”不進(jìn)行區(qū)分,也就是說,緩存和內(nèi)存都能夠?qū)崿F(xiàn)本申請(qǐng)實(shí)施例對(duì)數(shù)據(jù)存儲(chǔ)的需求,因此本申請(qǐng)對(duì)此不進(jìn)行限定。

例如,目標(biāo)數(shù)據(jù)為需要一個(gè)緩存處理的塊存儲(chǔ)數(shù)據(jù),塊存儲(chǔ)數(shù)據(jù)主要包括卷標(biāo)識(shí)(volume Identity,volume ID)、塊起始地址(Logical block address,LBA)、塊個(gè)數(shù)(lengh)、用戶數(shù)據(jù)(buff)。由于目標(biāo)數(shù)據(jù)需要一個(gè)緩存處理,因此,第一存儲(chǔ)設(shè)備將該塊存儲(chǔ)數(shù)據(jù)轉(zhuǎn)換為簡(jiǎn)單型日志,并將LBA轉(zhuǎn)化為緩存管理單元的編號(hào),比如LBA除以64k取整得到單元編號(hào)(chunk ID)、取余得到單元內(nèi)的偏移(offset),把volume ID、chunk ID、offset寫入日志頭中,將buff寫入日志數(shù)據(jù)部分,將用于保證數(shù)據(jù)的可靠性的循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check,CRC)寫在日志尾。

應(yīng)理解,本申請(qǐng)實(shí)施例中對(duì)“緩存”和“內(nèi)存”不進(jìn)行區(qū)分,也就是說,緩存和內(nèi)存都能夠?qū)崿F(xiàn)本申請(qǐng)實(shí)施例對(duì)數(shù)據(jù)存儲(chǔ)的需求。

703、第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志。

第二存儲(chǔ)設(shè)備接收到該第一存儲(chǔ)設(shè)備發(fā)送的目標(biāo)日志,并將目標(biāo)日志存儲(chǔ)到第二存儲(chǔ)設(shè)備的內(nèi)存中。

704、第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志。

第二存儲(chǔ)設(shè)備接收第一存儲(chǔ)設(shè)備根據(jù)寫請(qǐng)求消息中攜帶的目標(biāo)數(shù)據(jù)生成的目標(biāo)日志,并將該目標(biāo)日志直接存儲(chǔ)到第二存儲(chǔ)設(shè)備中,由于該目標(biāo)日志包括用于表示該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,這樣第二存儲(chǔ)設(shè)備存儲(chǔ)該目標(biāo)日志時(shí)并不需要?jiǎng)?chuàng)建內(nèi)存索引,相比現(xiàn)有技術(shù)中,第二存儲(chǔ)設(shè)備需要配置內(nèi)存索引而言,本申請(qǐng)可以直接存儲(chǔ)該目標(biāo)日志,從而節(jié)省了第二存儲(chǔ)設(shè)備配置內(nèi)存索引時(shí)對(duì)CPU的占用。

可選地,作為一個(gè)實(shí)施例,第一存儲(chǔ)設(shè)備接收到第二存儲(chǔ)設(shè)備完成鏡像存儲(chǔ)目標(biāo)日志的存儲(chǔ)完成消息,保證第二存儲(chǔ)設(shè)備已經(jīng)成功完成寫入目標(biāo)日志之后,第一存儲(chǔ)設(shè)備才開始在自己的緩存中寫入目標(biāo)日志,這樣可以避免第二存儲(chǔ)設(shè)備失敗,浪費(fèi)了第一存儲(chǔ)設(shè)備的CPU占用。第一存儲(chǔ)設(shè)備完成寫入目標(biāo)日志,且接收到第二存儲(chǔ)設(shè)備發(fā)送的存儲(chǔ)完成消息之后,向IO設(shè)備發(fā)送寫請(qǐng)求響應(yīng)消息,這樣避免現(xiàn)有技術(shù)中需要等待將目標(biāo)數(shù)據(jù)存儲(chǔ)到內(nèi)存索引對(duì)應(yīng)的資源空間之后才能向IO設(shè)備返回寫請(qǐng)求響應(yīng)消息,從而減少了發(fā)出寫請(qǐng)求到收到寫請(qǐng)求響應(yīng)消息的時(shí)延。

應(yīng)理解,發(fā)送寫請(qǐng)求消息和接收寫請(qǐng)求響應(yīng)消息的設(shè)備可以是IO設(shè)備也可以是其他設(shè)備,為描述方便以IO設(shè)備為例進(jìn)行說明,但本申請(qǐng)并不限于此。

可選地,第一存儲(chǔ)設(shè)備沒有接收到存儲(chǔ)完成消息之前,第一存儲(chǔ)設(shè)備就開始寫入該目標(biāo)日志,在第一存儲(chǔ)設(shè)備完成寫入目標(biāo)日志,且接收到第二存儲(chǔ)設(shè)備發(fā)送的存儲(chǔ)完成消息之后,向IO設(shè)備發(fā)送寫請(qǐng)求響應(yīng)消息,這樣可以更進(jìn)一步節(jié)省向IO設(shè)備返回寫請(qǐng)求響應(yīng)消息的時(shí)間。

可選地,作為一個(gè)實(shí)施例,該第二存儲(chǔ)設(shè)備包括多個(gè)資源空間;其中,該第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志包括:該第二存儲(chǔ)設(shè)備根據(jù)該標(biāo)識(shí)信息,確定存儲(chǔ)該目標(biāo)日志的第一資源空間,該第一資源空間為該第二存儲(chǔ)設(shè)備的多個(gè)資源空間中滿足該目標(biāo)日志的資源需求的任一資源空間;該第二存儲(chǔ)設(shè)備將該目標(biāo)日志鏡像存儲(chǔ)到該第一資源空間中。

具體而言,第二存儲(chǔ)設(shè)備接收目標(biāo)日志,該目標(biāo)日志包括用于標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息,第二存儲(chǔ)設(shè)備根據(jù)該標(biāo)識(shí)信息選擇合適的資源空間(表示為第一資源空間),將該目標(biāo)日志存儲(chǔ)到第二存儲(chǔ)設(shè)備的第一資源空間中。此外,第二存儲(chǔ)設(shè)備可以根據(jù)標(biāo)識(shí)信息識(shí)別目標(biāo)數(shù)據(jù),以目標(biāo)日志的形式可以將目標(biāo)數(shù)據(jù)按照順序進(jìn)行有規(guī)律的存儲(chǔ),這樣第二存儲(chǔ)設(shè)備可以不需要為目標(biāo)數(shù)據(jù)配置內(nèi)存索引,從而使得節(jié)省了第二存儲(chǔ)設(shè)備的CPU占用。

應(yīng)理解,第一資源空間即為上述提到的以Segment為單位的資源空間,每個(gè)Segment可以存放多條日志。

可選地,該第二存儲(chǔ)設(shè)備包括多個(gè)資源空間;該方法還包括:該第一存儲(chǔ)設(shè)備獲取第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量,該第二資源空間為該第二存儲(chǔ)設(shè)備的多個(gè)資源空間中任一資源空間;該第一存儲(chǔ)設(shè)備根據(jù)該第二資源空間的存儲(chǔ)容量和該標(biāo)識(shí)信息,確定該第二資源空間是否滿足該目標(biāo)日志的資源需求;該第一存儲(chǔ)設(shè)備在該第二資源空間滿足該目標(biāo)日志的資源需求時(shí),根據(jù)RDMA編碼方式、該目標(biāo)日志和該第二資源空間的存儲(chǔ)地址,生成RDMA消息,該RDMA消息包括該第二資源空間的存儲(chǔ)地址和該目標(biāo)日志;其中,該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志包括:該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送該RDMA消息;其中,該第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志包括:該第二存儲(chǔ)設(shè)備根據(jù)該RDMA消息,將該目標(biāo)日志存儲(chǔ)到該第二資源空間中。

具體而言,第二存儲(chǔ)設(shè)備包括多個(gè)資源空間,第二存儲(chǔ)設(shè)備可以隨意發(fā)送任意一個(gè)資源空間的存儲(chǔ)容量和存儲(chǔ)地址。第一存儲(chǔ)設(shè)備獲取到第二存儲(chǔ)設(shè)備中多個(gè)資源空間中任意一個(gè)資源空間(表示為第二資源空間)的存儲(chǔ)地址和存儲(chǔ)容量,并根據(jù)該第二資源空間的存儲(chǔ)容量和目標(biāo)日志的標(biāo)識(shí)信息確定第二資源空間是否滿足目標(biāo)日志的資源需求,相應(yīng)地,第二資源空間也是上述提到的Segment資源空間。由于目標(biāo)日志的標(biāo)識(shí)信息包括目標(biāo)數(shù)據(jù)的資源大小(即存儲(chǔ)目標(biāo)日志所需的資源),因此第一存儲(chǔ)設(shè)備可以通過比較標(biāo)識(shí)信息中目標(biāo)數(shù)據(jù)的資源大小與第二資源空間的存儲(chǔ)容量確定第二資源空間是否能夠滿足目標(biāo)日志的資源需求。

該第一存儲(chǔ)設(shè)備在該第二資源空間滿足該目標(biāo)日志的資源需求時(shí),根據(jù)RDMA編碼方式、該目標(biāo)日志和該第二資源空間的存儲(chǔ)地址,生成RDMA消息,該RDMA消息包括該第二資源空間的存儲(chǔ)地址和該目標(biāo)日志,第一存儲(chǔ)設(shè)備向第二存儲(chǔ)設(shè)備發(fā)送該RDMA消息,第二存儲(chǔ)設(shè)備的第二資源空間接收到RDMA消息后,解析得到目標(biāo)日志,并將目標(biāo)日志直接存儲(chǔ)到第二資源空間中。第二存儲(chǔ)設(shè)備在將目標(biāo)日志鏡像存儲(chǔ)到第二資源空間之后,就可以向第一存儲(chǔ)設(shè)備返回鏡像存儲(chǔ)完成消息。本申請(qǐng)實(shí)施例相比第二存儲(chǔ)設(shè)備接收目標(biāo)日志,并需要為目標(biāo)日志選擇合適的資源空間,能夠更進(jìn)一步節(jié)省了第二存儲(chǔ)設(shè)備的CPU的占用。

例如,如圖2所示,第一存儲(chǔ)設(shè)備通過RDMA技術(shù),可以將目標(biāo)日志從資源層132a直接發(fā)送到資源層132b。

可選地,作為一個(gè)實(shí)施例,該第一存儲(chǔ)設(shè)備獲取第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量包括:該第一存儲(chǔ)設(shè)備向該第二存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求消息,該資源請(qǐng)求消息用于請(qǐng)求存儲(chǔ)該目標(biāo)日志的該第二資源空間;該第一存儲(chǔ)設(shè)備接收該第二存儲(chǔ)設(shè)備根據(jù)該資源請(qǐng)求消息發(fā)送的資源請(qǐng)求響應(yīng)消息,該資源請(qǐng)求響應(yīng)消息攜帶該第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量。

具體而言,第一存儲(chǔ)設(shè)備可以向第二存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求,以獲取第二存儲(chǔ)設(shè)備的資源空間的存儲(chǔ)地址以及該資源空間的剩余資源大小(即該資源空間中還能夠?qū)懭攵啻蟮臄?shù)據(jù))。第一存儲(chǔ)設(shè)備可以向第二存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求消息,第二存儲(chǔ)設(shè)備在多個(gè)資源空間中選擇任意一個(gè)資源空間(表示為第二資源空間),并向第一存儲(chǔ)設(shè)備發(fā)送資源請(qǐng)求響應(yīng)消息,且在資源請(qǐng)求響應(yīng)消息中攜帶該第二資源空間的存儲(chǔ)地址和該第二資源空間的剩余容量,從而使得第一存儲(chǔ)設(shè)備能夠?yàn)槟繕?biāo)日志選擇合適的資源空間。

應(yīng)理解,本申請(qǐng)實(shí)施例中,第一存儲(chǔ)設(shè)備可以只獲取一次第二存儲(chǔ)設(shè)備的資源空間的地址和存儲(chǔ)容量,直至該資源空間沒有剩余資源,或者剩余資源不能夠滿足當(dāng)前待寫入數(shù)據(jù)的大小,然后才進(jìn)行下一次獲取第二存儲(chǔ)設(shè)備的資源空間的地址和存儲(chǔ)容量。

可選地,作為一個(gè)實(shí)施例,該方法還包括:該第一存儲(chǔ)設(shè)備為該目標(biāo)數(shù)據(jù)配置內(nèi)存索引;該第一存儲(chǔ)設(shè)備根據(jù)該內(nèi)存索引,確定存儲(chǔ)該目標(biāo)數(shù)據(jù)的該第一存儲(chǔ)設(shè)備的資源空間,其中,該第一存儲(chǔ)設(shè)備的資源空間的存儲(chǔ)地址對(duì)應(yīng)于該內(nèi)存索引;該第一存儲(chǔ)設(shè)備將該目標(biāo)數(shù)據(jù)寫入該第一存儲(chǔ)設(shè)備的資源空間中。

第一存儲(chǔ)設(shè)備在完成存儲(chǔ)目標(biāo)日志,以及接收到第二存儲(chǔ)設(shè)備返回的存儲(chǔ)完成消息后,向IO設(shè)備發(fā)送寫請(qǐng)求響應(yīng)消息。由于根據(jù)內(nèi)存索引讀取目標(biāo)數(shù)據(jù)比較快,因此,在此之后,第一存儲(chǔ)設(shè)備還可以為目標(biāo)數(shù)據(jù)配置內(nèi)存索引,該內(nèi)存索引用于標(biāo)識(shí)目標(biāo)數(shù)據(jù)(例如,目標(biāo)數(shù)據(jù)的大小、類型等),并根據(jù)該內(nèi)存索引為目標(biāo)數(shù)據(jù)申請(qǐng)存儲(chǔ)資源(表示為第一存儲(chǔ)設(shè)備的資源空間,該第一存儲(chǔ)設(shè)備也可以包括多個(gè)存儲(chǔ)空間),且配置已經(jīng)申請(qǐng)的存儲(chǔ)資源的存儲(chǔ)地址與內(nèi)存索引的映射關(guān)系,該映射關(guān)系用于后續(xù)第一存儲(chǔ)設(shè)備能夠根據(jù)內(nèi)存索引讀取到對(duì)應(yīng)的存儲(chǔ)地址中存儲(chǔ)的數(shù)據(jù),最后將目標(biāo)數(shù)據(jù)寫入到存儲(chǔ)地址對(duì)應(yīng)的資源空間中,這樣第一存儲(chǔ)設(shè)備將目標(biāo)數(shù)據(jù)存儲(chǔ)到有內(nèi)存索引對(duì)應(yīng)的資源空間中,并不會(huì)延長(zhǎng)影響返回寫請(qǐng)求響應(yīng)消息的時(shí)間。

應(yīng)理解,該目標(biāo)數(shù)據(jù)可以是寫請(qǐng)求中攜帶的目標(biāo)數(shù)據(jù),也可以是解析目標(biāo)日志獲得的目標(biāo)數(shù)據(jù),本申請(qǐng)對(duì)此不進(jìn)行限定。

還應(yīng)理解,第一存儲(chǔ)設(shè)備也可以不存儲(chǔ)目標(biāo)日志,而是直接將目標(biāo)數(shù)據(jù)寫入內(nèi)存索引對(duì)應(yīng)的資源空間中;或者,第一存儲(chǔ)設(shè)備寫入目標(biāo)日志后,再進(jìn)行將目標(biāo)數(shù)據(jù)寫入內(nèi)存索引對(duì)應(yīng)的資源空間中之后,才發(fā)送寫請(qǐng)求響應(yīng)消息。本申請(qǐng)對(duì)此不進(jìn)行限定。

第二存儲(chǔ)設(shè)備存儲(chǔ)目標(biāo)日志用于在第一存儲(chǔ)設(shè)備故障時(shí),第二存儲(chǔ)設(shè)備可以接管第一存儲(chǔ)設(shè)備當(dāng)前服務(wù)的數(shù)據(jù)存儲(chǔ),具體故障現(xiàn)象有如下幾種:

在第一存儲(chǔ)設(shè)備故障時(shí),第二存儲(chǔ)設(shè)備檢測(cè)到該故障后,第二存儲(chǔ)設(shè)備接管數(shù)據(jù)存儲(chǔ)。這時(shí),第二存儲(chǔ)設(shè)備需要進(jìn)行目標(biāo)日志回放,日志回放是指解析目標(biāo)日志以獲取有效的目標(biāo)數(shù)據(jù)(即將目標(biāo)數(shù)據(jù)逐條讀出),為目標(biāo)數(shù)據(jù)配置內(nèi)存索引,并將目標(biāo)數(shù)據(jù)存儲(chǔ)到對(duì)應(yīng)的資源空間中(即表示日志回放結(jié)束),該資源空間為內(nèi)存索引對(duì)應(yīng)的存儲(chǔ)地址,該存儲(chǔ)地址對(duì)應(yīng)的資源空間;此后,第二存儲(chǔ)設(shè)備才能夠處理數(shù)據(jù)存儲(chǔ)業(yè)務(wù)。

在第一存儲(chǔ)設(shè)備故障后快速恢復(fù),第一存儲(chǔ)設(shè)備可以直接重啟回放日志,之后,第一存儲(chǔ)設(shè)備才能夠處理數(shù)據(jù)存儲(chǔ)業(yè)務(wù)。

在第一存儲(chǔ)設(shè)備和第二存儲(chǔ)設(shè)備都故障的情況下,重啟后,第一存儲(chǔ)設(shè)備可以與第二存儲(chǔ)設(shè)備競(jìng)爭(zhēng)主存儲(chǔ)設(shè)備(即接管當(dāng)前數(shù)據(jù)存儲(chǔ)),競(jìng)爭(zhēng)為主存儲(chǔ)設(shè)備后,回放日志。此后,第二存儲(chǔ)設(shè)備才能夠處理數(shù)據(jù)存儲(chǔ)業(yè)務(wù),不會(huì)造成內(nèi)存數(shù)據(jù)的丟失,提供了數(shù)據(jù)存儲(chǔ)的可靠性。。

應(yīng)理解,在本申請(qǐng)的各種實(shí)施例中,上述各過程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本申請(qǐng)實(shí)施例的實(shí)施過程構(gòu)成任何限定。

因此,本申請(qǐng)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法,第一存儲(chǔ)設(shè)備通過接收攜帶目標(biāo)數(shù)據(jù)的寫請(qǐng)求消息,根據(jù)該寫請(qǐng)求消息中的目標(biāo)數(shù)據(jù)生成包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,并向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志,第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志,且鏡像存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引,這樣第一存儲(chǔ)設(shè)備生成包括標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,第二存儲(chǔ)設(shè)備可以存儲(chǔ)目標(biāo)日志不需要配置內(nèi)存索引,從而減少了對(duì)第二存儲(chǔ)設(shè)備的CPU的占用。

圖8示出了根據(jù)本申請(qǐng)一個(gè)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法的交互流程圖。本申請(qǐng)實(shí)施例中的各種術(shù)語的含義與前述各實(shí)施例相同。

應(yīng)注意,這只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本申請(qǐng)實(shí)施例,而非限制本申請(qǐng)實(shí)施例的范圍。

801、第一存儲(chǔ)設(shè)備接收寫請(qǐng)求消息,該寫請(qǐng)求消息攜帶目標(biāo)數(shù)據(jù)。

802、第一存儲(chǔ)設(shè)備根據(jù)目標(biāo)數(shù)據(jù)生成相應(yīng)的目標(biāo)日志,目標(biāo)日志包括目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息。

803、第一存儲(chǔ)設(shè)備獲取第二存儲(chǔ)設(shè)備的資源空間(表示為第二資源空間)的存儲(chǔ)地址和資源空間的存儲(chǔ)容量。

804、第一存儲(chǔ)設(shè)備根據(jù)第二資源空間的存儲(chǔ)容量和標(biāo)識(shí)信息,確定獲取的第二資源空間的存儲(chǔ)容量是否能夠滿足目標(biāo)日志的資源需求。

805、第一存儲(chǔ)設(shè)備在確定獲取的第二資源空間的存儲(chǔ)容量能夠滿足目標(biāo)日志的資源需求,根據(jù)目標(biāo)日志、RDMA編碼方式、第二資源空間的存儲(chǔ)地址生成RDMA消息。

806、第一存儲(chǔ)設(shè)備向第二存儲(chǔ)設(shè)備發(fā)送RDMA消息。

807、第二存儲(chǔ)設(shè)備根據(jù)RDMA消息,將目標(biāo)日志直接存儲(chǔ)到存儲(chǔ)地址對(duì)應(yīng)的第二資源空間中。

可選地,第一存儲(chǔ)設(shè)備可以直接向第二存儲(chǔ)設(shè)備發(fā)送目標(biāo)日志,由第二存儲(chǔ)設(shè)備來確定能夠存儲(chǔ)目標(biāo)日志的資源空間,這樣可以不需要步驟803至807。

808、第二存儲(chǔ)設(shè)備在完成目標(biāo)日志的鏡像存儲(chǔ)后,向第一存儲(chǔ)設(shè)備發(fā)送存儲(chǔ)完成消息。

809、第一存儲(chǔ)設(shè)備在本地存儲(chǔ)目標(biāo)日志。

步驟808和步驟809可以沒有先后關(guān)系,本申請(qǐng)對(duì)此不進(jìn)行限定。

810、第一存儲(chǔ)設(shè)備在本地完成存儲(chǔ)目標(biāo)日志,且接收到存儲(chǔ)完成消息之后,向IO設(shè)備返回寫請(qǐng)求響應(yīng)消息。

811、第一存儲(chǔ)設(shè)備在本地為目標(biāo)數(shù)據(jù)配置對(duì)應(yīng)的內(nèi)存索引,該內(nèi)存索引用于標(biāo)識(shí)目標(biāo)數(shù)據(jù)。

812、第一存儲(chǔ)設(shè)備根據(jù)該內(nèi)存索引,確定存儲(chǔ)目標(biāo)數(shù)據(jù)的第一存儲(chǔ)設(shè)備的資源空間。

813、第一存儲(chǔ)設(shè)備將目標(biāo)數(shù)據(jù)存儲(chǔ)到確定的第一存儲(chǔ)設(shè)備的資源空間中。

應(yīng)理解,上述相應(yīng)信息的具體指示方式可參考前述各實(shí)施例,為了簡(jiǎn)潔,在此不再贅述。

因此,本申請(qǐng)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法,第一存儲(chǔ)設(shè)備通過接收攜帶目標(biāo)數(shù)據(jù)的寫請(qǐng)求消息,根據(jù)該寫請(qǐng)求消息中的目標(biāo)數(shù)據(jù)生成包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,獲取第二存儲(chǔ)設(shè)備的第二資源空間,在第二資源空間滿足目標(biāo)日志的資源需求時(shí),根據(jù)目標(biāo)日志、RDMA編碼方式和第二資源空間的存儲(chǔ)地址生成RDMA消息,并向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志,第二存儲(chǔ)設(shè)備根據(jù)RDMA消息將目標(biāo)日志直接存儲(chǔ)到第二資源空間中,且存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引,這樣第一存儲(chǔ)設(shè)備生成包括標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,并通過發(fā)送RDMA消息直接將目標(biāo)日志存儲(chǔ)在滿足資源需求的存儲(chǔ)空間中,第二存儲(chǔ)設(shè)備存儲(chǔ)目標(biāo)日志可以不需要配置內(nèi)存索引,從而減少了對(duì)第二存儲(chǔ)設(shè)備的CPU的占用。

應(yīng)理解,在本申請(qǐng)的各種實(shí)施例中,上述各過程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本申請(qǐng)實(shí)施例的實(shí)施過程構(gòu)成任何限定。

上文中詳細(xì)描述了根據(jù)本申請(qǐng)實(shí)施例的數(shù)據(jù)存儲(chǔ)的方法,下面將描述根據(jù)本申請(qǐng)實(shí)施例的存儲(chǔ)設(shè)備。

圖9示出了根據(jù)本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng)900的示意性框圖,該存儲(chǔ)系統(tǒng)包括第一存儲(chǔ)設(shè)備910和至少一個(gè)第二存儲(chǔ)設(shè)備920,其中,該第二存儲(chǔ)設(shè)備920為該第一存儲(chǔ)設(shè)備910的鏡像存儲(chǔ)設(shè)備,該存儲(chǔ)系統(tǒng)900用于執(zhí)行圖7所述的數(shù)據(jù)存儲(chǔ)的方法,該存儲(chǔ)系統(tǒng)900包括:

該第一存儲(chǔ)設(shè)備910,用于接收寫請(qǐng)求消息,該寫請(qǐng)求消息攜帶目標(biāo)數(shù)據(jù),根據(jù)該目標(biāo)數(shù)據(jù)生成目標(biāo)日志,并向該第二存儲(chǔ)設(shè)備920發(fā)送該目標(biāo)日志,該目標(biāo)日志包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息;

該第二存儲(chǔ)設(shè)備920,用于存儲(chǔ)該目標(biāo)日志,且該存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引。

因此,本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng),第一存儲(chǔ)設(shè)備通過接收攜帶目標(biāo)數(shù)據(jù)的寫請(qǐng)求消息,根據(jù)該寫請(qǐng)求消息中的目標(biāo)數(shù)據(jù)生成包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,并向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志,第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志,且鏡像存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引,這樣第一存儲(chǔ)設(shè)備生成包括標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,第二存儲(chǔ)設(shè)備可以存儲(chǔ)目標(biāo)日志不需要配置內(nèi)存索引,從而減少了對(duì)第二存儲(chǔ)設(shè)備的CPU的占用。

可選地,在本申請(qǐng)一個(gè)實(shí)施例中,該第二存儲(chǔ)設(shè)備920還用于在完成存儲(chǔ)該目標(biāo)日志時(shí),向該第一存儲(chǔ)設(shè)備910發(fā)送存儲(chǔ)完成消息;

該第一存儲(chǔ)設(shè)備910還用于存儲(chǔ)該目標(biāo)日志,并在完成該目標(biāo)日志的存儲(chǔ)和接收到該存儲(chǔ)完成消息之后,發(fā)送寫請(qǐng)求響應(yīng)消息。

可選地,在本申請(qǐng)一個(gè)實(shí)施例中,該第二存儲(chǔ)設(shè)備920包括多個(gè)資源空間;

該第二存儲(chǔ)設(shè)備920具體用于:

根據(jù)該標(biāo)識(shí)信息,確定存儲(chǔ)該目標(biāo)日志的第一資源空間,該第一資源空間為該第二存儲(chǔ)設(shè)備920的多個(gè)資源空間中滿足該目標(biāo)日志的資源需求的任一資源空間;

將該目標(biāo)日志存儲(chǔ)到該第一資源空間中。

可選地,在本申請(qǐng)一個(gè)實(shí)施例中,該第二存儲(chǔ)設(shè)備920包括多個(gè)資源空間;

該第一存儲(chǔ)設(shè)備910,還用于獲取第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量,根據(jù)該第二資源空間的存儲(chǔ)容量和該標(biāo)識(shí)信息確定該第二資源空間是否滿足該目標(biāo)日志的資源需求,并在該第二資源空間滿足該目標(biāo)日志的資源需求時(shí)根據(jù)遠(yuǎn)程直接數(shù)據(jù)存取RDMA編碼方式、該目標(biāo)日志和該第二資源空間的存儲(chǔ)地址生成RDMA消息,以及向該第二存儲(chǔ)設(shè)備920的第二資源空間發(fā)送該RDMA消息,該第二資源空間為該第二存儲(chǔ)設(shè)備920的多個(gè)資源空間中任一資源空間,該RDMA消息包括該第二資源空間的存儲(chǔ)地址和該目標(biāo)日志;

該第二存儲(chǔ)設(shè)備920,還用于通過該第二資源空間根據(jù)該RDMA消息,存儲(chǔ)該目標(biāo)日志。

可選地,在本申請(qǐng)一個(gè)實(shí)施例中,該第一存儲(chǔ)設(shè)備910,還用于向該第二存儲(chǔ)設(shè)備920發(fā)送資源請(qǐng)求消息,并接收該第二存儲(chǔ)設(shè)備920根據(jù)該資源請(qǐng)求消息發(fā)送的資源請(qǐng)求響應(yīng)消息,該資源請(qǐng)求消息用于請(qǐng)求存儲(chǔ)該目標(biāo)日志的該第二資源空間,該資源請(qǐng)求響應(yīng)消息攜帶該第二資源空間的存儲(chǔ)地址和該第二資源空間的存儲(chǔ)容量。

可選地,在本申請(qǐng)一個(gè)實(shí)施例中,該第一存儲(chǔ)設(shè)備910,還用于為該目標(biāo)數(shù)據(jù)配置內(nèi)存索引,并根據(jù)該內(nèi)存索引確定存儲(chǔ)該目標(biāo)數(shù)據(jù)的該第一存儲(chǔ)設(shè)備的資源空間,以及將該目標(biāo)數(shù)據(jù)寫入該第一存儲(chǔ)設(shè)備的資源空間中,其中,該第一存儲(chǔ)設(shè)備的資源空間的存儲(chǔ)地址對(duì)應(yīng)于該內(nèi)存索引。

因此,本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng),第一存儲(chǔ)設(shè)備通過接收攜帶目標(biāo)數(shù)據(jù)的寫請(qǐng)求消息,根據(jù)該寫請(qǐng)求消息中的目標(biāo)數(shù)據(jù)生成包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,并向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志,第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志,且鏡像存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引,這樣第一存儲(chǔ)設(shè)備生成包括標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,第二存儲(chǔ)設(shè)備可以存儲(chǔ)目標(biāo)日志不需要配置內(nèi)存索引,從而減少了對(duì)第二存儲(chǔ)設(shè)備的CPU的占用。

根據(jù)本申請(qǐng)實(shí)施例的存儲(chǔ)系統(tǒng)900可對(duì)應(yīng)于根據(jù)本申請(qǐng)實(shí)施例圖7或圖8的數(shù)據(jù)存儲(chǔ)的方法的存儲(chǔ)系統(tǒng),并且存儲(chǔ)系統(tǒng)900中的各個(gè)模塊的上述和其它操作和/或功能分別為了實(shí)現(xiàn)前述各個(gè)方法的相應(yīng)流程,為了簡(jiǎn)潔,在此不再贅述。

圖10示出了本申請(qǐng)的實(shí)施例提供的存儲(chǔ)系統(tǒng)的結(jié)構(gòu),包括至少一個(gè)處理器1002(例如CPU),至少一個(gè)網(wǎng)絡(luò)接口1005或者其他通信接口,至少一個(gè)存儲(chǔ)器1006,和至少一個(gè)通信總線1003,用于實(shí)現(xiàn)這些裝置之間的連接通信。處理器1002用于執(zhí)行存儲(chǔ)器1006中存儲(chǔ)的可執(zhí)行模塊,例如計(jì)算機(jī)程序。存儲(chǔ)器1006可能包含高速隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM),也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。通過至少一個(gè)網(wǎng)絡(luò)接口1005(可以是有線或者無線)實(shí)現(xiàn)與至少一個(gè)其他網(wǎng)元之間的通信連接。

在一些實(shí)施方式中,存儲(chǔ)器1006存儲(chǔ)了程序10061,處理器1002執(zhí)行程序10061,用于執(zhí)行以下操作:

通過網(wǎng)絡(luò)接口1005接收寫請(qǐng)求消息,該寫請(qǐng)求消息攜帶目標(biāo)數(shù)據(jù);

根據(jù)該目標(biāo)數(shù)據(jù),生成目標(biāo)日志,該目標(biāo)日志包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息;

通過網(wǎng)絡(luò)接口1005向第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志;

存儲(chǔ)所述目標(biāo)日志,且所述存儲(chǔ)所述目標(biāo)日志不需要配置內(nèi)存索引。

需要說明的是,該存儲(chǔ)系統(tǒng)可以用于執(zhí)行上述圖7或圖8所示的方法實(shí)施例中的各個(gè)步驟和/或流程。

從本申請(qǐng)實(shí)施例提供的以上技術(shù)方案可以看出,第一存儲(chǔ)設(shè)備通過接收攜帶目標(biāo)數(shù)據(jù)的寫請(qǐng)求消息,根據(jù)該寫請(qǐng)求消息中的目標(biāo)數(shù)據(jù)生成包括該目標(biāo)數(shù)據(jù)和用于標(biāo)識(shí)該目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,并向該第二存儲(chǔ)設(shè)備發(fā)送該目標(biāo)日志,第二存儲(chǔ)設(shè)備鏡像存儲(chǔ)該目標(biāo)日志,且鏡像存儲(chǔ)該目標(biāo)日志不需要配置內(nèi)存索引,這樣第一存儲(chǔ)設(shè)備生成包括標(biāo)識(shí)目標(biāo)數(shù)據(jù)的標(biāo)識(shí)信息的目標(biāo)日志,第二存儲(chǔ)設(shè)備可以存儲(chǔ)目標(biāo)日志不需要配置內(nèi)存索引,從而減少了對(duì)第二存儲(chǔ)設(shè)備的CPU的占用。

本申請(qǐng)實(shí)施例還提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),該計(jì)算機(jī)存儲(chǔ)介質(zhì)可以存儲(chǔ)用于指示上述任一種方法的程序指令。

可選地,該存儲(chǔ)介質(zhì)具體可以為存儲(chǔ)器1106。

應(yīng)理解,本申請(qǐng)中的具體的例子只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本申請(qǐng)實(shí)施例,而非限制本申請(qǐng)實(shí)施例的范圍。

應(yīng)理解,本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:?jiǎn)为?dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。

應(yīng)理解,在本申請(qǐng)的各種實(shí)施例中,上述各過程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本申請(qǐng)實(shí)施例的實(shí)施過程構(gòu)成任何限定。

本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本申請(qǐng)的范圍。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,該單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。

所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所述,僅為本申請(qǐng)的具體實(shí)施方式,但本申請(qǐng)的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本申請(qǐng)揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本申請(qǐng)的保護(hù)范圍之內(nèi)。因此,本申請(qǐng)的保護(hù)范圍應(yīng)以該權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
99热只有精品国产| 久久久久国产一级毛片高清牌| 亚洲精华国产精华精| 久久精品91蜜桃| 国产熟女xx| 精品无人区乱码1区二区| 久久久久国产精品人妻aⅴ院| 中文字幕人成人乱码亚洲影| 女生性感内裤真人,穿戴方法视频| 久久久久国产精品人妻aⅴ院| 亚洲一区高清亚洲精品| 听说在线观看完整版免费高清| 曰老女人黄片| 亚洲人成电影免费在线| 叶爱在线成人免费视频播放| 国产三级中文精品| 国产亚洲精品av在线| 给我免费播放毛片高清在线观看| 欧美黄色片欧美黄色片| 九九在线视频观看精品| 99久久综合精品五月天人人| 欧美一区二区国产精品久久精品| 99国产极品粉嫩在线观看| 99国产精品一区二区三区| 国产麻豆成人av免费视频| 亚洲熟妇中文字幕五十中出| 黄色 视频免费看| xxx96com| 狂野欧美白嫩少妇大欣赏| 亚洲狠狠婷婷综合久久图片| 午夜福利18| 久久久久国产精品人妻aⅴ院| 国产高清videossex| 久久久久国内视频| 国产主播在线观看一区二区| 亚洲午夜精品一区,二区,三区| 精品久久久久久久久久久久久| 亚洲七黄色美女视频| 国产主播在线观看一区二区| 夜夜看夜夜爽夜夜摸| 美女被艹到高潮喷水动态| 日韩欧美在线二视频| 精品熟女少妇八av免费久了| 嫁个100分男人电影在线观看| 51午夜福利影视在线观看| 久久精品国产亚洲av香蕉五月| 一a级毛片在线观看| 成年女人看的毛片在线观看| 两性午夜刺激爽爽歪歪视频在线观看| 一级毛片女人18水好多| 国产人伦9x9x在线观看| 两个人看的免费小视频| 久久久久国产一级毛片高清牌| 两人在一起打扑克的视频| 一进一出抽搐动态| www.www免费av| 香蕉丝袜av| 制服丝袜大香蕉在线| 免费av毛片视频| 最新中文字幕久久久久 | 午夜久久久久精精品| 99久久综合精品五月天人人| 男插女下体视频免费在线播放| www日本黄色视频网| 好看av亚洲va欧美ⅴa在| 国产伦精品一区二区三区四那| 天堂影院成人在线观看| 亚洲欧美精品综合久久99| 中文字幕精品亚洲无线码一区| 性色avwww在线观看| 麻豆国产97在线/欧美| 男人舔女人的私密视频| 免费看光身美女| 国产精品亚洲美女久久久| 亚洲av成人一区二区三| 日韩大尺度精品在线看网址| 高清在线国产一区| 午夜福利成人在线免费观看| 一级作爱视频免费观看| 18美女黄网站色大片免费观看| 床上黄色一级片| 一区福利在线观看| 97碰自拍视频| 亚洲精品在线美女| 激情在线观看视频在线高清| 啦啦啦观看免费观看视频高清| e午夜精品久久久久久久| 欧美成狂野欧美在线观看| 色综合站精品国产| 草草在线视频免费看| 丁香欧美五月| 亚洲黑人精品在线| 悠悠久久av| 国产精品98久久久久久宅男小说| 不卡av一区二区三区| www.精华液| 一进一出抽搐动态| 免费在线观看成人毛片| 性色avwww在线观看| 国产精品 国内视频| 十八禁网站免费在线| 在线永久观看黄色视频| 中文字幕人成人乱码亚洲影| 大型黄色视频在线免费观看| 精品不卡国产一区二区三区| 日韩大尺度精品在线看网址| 最新在线观看一区二区三区| 这个男人来自地球电影免费观看| 午夜福利免费观看在线| 精品国产美女av久久久久小说| av国产免费在线观看| 人人妻,人人澡人人爽秒播| 久久久久亚洲av毛片大全| 九九在线视频观看精品| www日本在线高清视频| 免费看光身美女| 99久久99久久久精品蜜桃| 真人做人爱边吃奶动态| 国产成人av激情在线播放| 真人做人爱边吃奶动态| 国产精品久久电影中文字幕| 午夜免费激情av| 免费看美女性在线毛片视频| 精品久久久久久,| 不卡一级毛片| 成年女人看的毛片在线观看| 国产精品乱码一区二三区的特点| 搞女人的毛片| 亚洲最大成人中文| 欧美乱色亚洲激情| 亚洲国产日韩欧美精品在线观看 | 国产精品久久久av美女十八| 久久精品人妻少妇| 老汉色∧v一级毛片| 国产精品1区2区在线观看.| av福利片在线观看| 丁香六月欧美| 中文字幕最新亚洲高清| 色av中文字幕| 美女扒开内裤让男人捅视频| 成人18禁在线播放| 午夜成年电影在线免费观看| 一本精品99久久精品77| 欧美国产日韩亚洲一区| 欧美中文综合在线视频| 亚洲第一欧美日韩一区二区三区| www国产在线视频色| 国产精品香港三级国产av潘金莲| 国产三级在线视频| 国产男靠女视频免费网站| 日本免费一区二区三区高清不卡| 大型黄色视频在线免费观看| 久久这里只有精品中国| 亚洲国产精品999在线| 97碰自拍视频| 亚洲精品在线观看二区| 亚洲国产精品999在线| 男人舔女人下体高潮全视频| 国产不卡一卡二| 免费av毛片视频| 亚洲精品色激情综合| АⅤ资源中文在线天堂| 久久精品影院6| 国产亚洲欧美在线一区二区| 色综合站精品国产| 日本免费a在线| 啪啪无遮挡十八禁网站| 午夜免费激情av| 欧美日韩福利视频一区二区| 亚洲人成伊人成综合网2020| 欧美一级毛片孕妇| 99热这里只有是精品50| 美女黄网站色视频| АⅤ资源中文在线天堂| 免费观看人在逋| 久久久久久久久免费视频了| 精品午夜福利视频在线观看一区| 亚洲人成伊人成综合网2020| 人妻久久中文字幕网| 精品久久久久久久久久久久久| 小蜜桃在线观看免费完整版高清| 日韩精品中文字幕看吧| 久久香蕉精品热| 午夜免费成人在线视频| 男女做爰动态图高潮gif福利片| 国产私拍福利视频在线观看| 亚洲国产欧美人成| 天天添夜夜摸| 欧美成人一区二区免费高清观看 | 色综合欧美亚洲国产小说| 国产精品永久免费网站| 欧美最黄视频在线播放免费| 国产精品亚洲美女久久久| 国产精品1区2区在线观看.| 色哟哟哟哟哟哟| 我要搜黄色片| 最新中文字幕久久久久 | 久久亚洲精品不卡| 国产三级在线视频| 波多野结衣高清作品| 午夜福利免费观看在线| 听说在线观看完整版免费高清| 亚洲精品久久国产高清桃花| 欧美xxxx黑人xx丫x性爽| 别揉我奶头~嗯~啊~动态视频| 老汉色av国产亚洲站长工具| 在线观看66精品国产| 色尼玛亚洲综合影院| 两个人视频免费观看高清| 久久精品91蜜桃| 国产v大片淫在线免费观看| 亚洲av成人av| 亚洲午夜精品一区,二区,三区| 91麻豆av在线| 美女免费视频网站| 精品国内亚洲2022精品成人| 久久精品aⅴ一区二区三区四区| 久久久国产成人精品二区| 精华霜和精华液先用哪个| 欧美日韩亚洲国产一区二区在线观看| 色噜噜av男人的天堂激情| 亚洲第一电影网av| 中文字幕人妻丝袜一区二区| 亚洲欧美激情综合另类| 国产亚洲欧美在线一区二区| 女人高潮潮喷娇喘18禁视频| 两性午夜刺激爽爽歪歪视频在线观看| 免费观看精品视频网站| 床上黄色一级片| 亚洲av片天天在线观看| 国产欧美日韩精品亚洲av| 亚洲av电影不卡..在线观看| 日韩精品青青久久久久久| 国产亚洲av嫩草精品影院| 一个人看的www免费观看视频| 听说在线观看完整版免费高清| 国内精品久久久久精免费| 啦啦啦免费观看视频1| 国产成人aa在线观看| av女优亚洲男人天堂 | 亚洲avbb在线观看| 久久国产精品人妻蜜桃| 好看av亚洲va欧美ⅴa在| 欧美一级毛片孕妇| 757午夜福利合集在线观看| 丁香欧美五月| 国内揄拍国产精品人妻在线| 视频区欧美日本亚洲| av片东京热男人的天堂| 亚洲中文日韩欧美视频| 悠悠久久av| 一个人免费在线观看的高清视频| 久9热在线精品视频| 国产69精品久久久久777片 | 免费看光身美女| bbb黄色大片| 精品熟女少妇八av免费久了| 国产午夜精品久久久久久| 国产免费男女视频| 中国美女看黄片| 特级一级黄色大片| 观看美女的网站| 成人永久免费在线观看视频| 国产精品,欧美在线| 免费看日本二区| 男女午夜视频在线观看| 很黄的视频免费| 成人性生交大片免费视频hd| 97碰自拍视频| 精品午夜福利视频在线观看一区| 日韩精品青青久久久久久| 三级毛片av免费| 99国产极品粉嫩在线观看| 特大巨黑吊av在线直播| 天天躁狠狠躁夜夜躁狠狠躁| 少妇熟女aⅴ在线视频| 欧美乱妇无乱码| 国产一级毛片七仙女欲春2| 中文字幕精品亚洲无线码一区| 亚洲国产精品999在线| 国产97色在线日韩免费| 在线视频色国产色| 国内久久婷婷六月综合欲色啪| 男人舔女人下体高潮全视频| 精品久久久久久久人妻蜜臀av| av在线天堂中文字幕| 99视频精品全部免费 在线 | 深夜精品福利| 午夜精品一区二区三区免费看| 国产av不卡久久| 香蕉久久夜色| 色播亚洲综合网| 一进一出抽搐gif免费好疼| 国产1区2区3区精品| 天堂影院成人在线观看| 狂野欧美白嫩少妇大欣赏| 观看美女的网站| 久久亚洲精品不卡| 一级a爱片免费观看的视频| 99久久精品热视频| 黄频高清免费视频| 国产真实乱freesex| 免费看日本二区| 9191精品国产免费久久| av在线蜜桃| 午夜免费观看网址| 国产精品 国内视频| 久久伊人香网站| 曰老女人黄片| 黄色女人牲交| 18禁裸乳无遮挡免费网站照片| 级片在线观看| 国产视频一区二区在线看| 一区福利在线观看| 国产精品久久久久久人妻精品电影| 99久久综合精品五月天人人| 成年版毛片免费区| 国产精品一及| 毛片女人毛片| 麻豆一二三区av精品| 国内精品美女久久久久久| 国产一区二区在线av高清观看| 两个人视频免费观看高清| 1024手机看黄色片| 夜夜夜夜夜久久久久| 日日摸夜夜添夜夜添小说| 超碰成人久久| 亚洲专区中文字幕在线| 2021天堂中文幕一二区在线观| 日韩成人在线观看一区二区三区| 无遮挡黄片免费观看| 欧美一区二区国产精品久久精品| 丝袜人妻中文字幕| 精品一区二区三区四区五区乱码| 亚洲男人的天堂狠狠| 99久久精品一区二区三区| 在线观看舔阴道视频| 久久国产精品影院| 欧美激情久久久久久爽电影| 小说图片视频综合网站| 美女大奶头视频| 日韩欧美三级三区| 麻豆av在线久日| 国产激情偷乱视频一区二区| 一区二区三区高清视频在线| 五月玫瑰六月丁香| 18美女黄网站色大片免费观看| 日本在线视频免费播放| 黄色日韩在线| 国产私拍福利视频在线观看| 三级毛片av免费| 波多野结衣巨乳人妻| 嫩草影视91久久| 狠狠狠狠99中文字幕| 久久久久精品国产欧美久久久| 精品国产亚洲在线| 88av欧美| 在线免费观看不下载黄p国产 | 国产单亲对白刺激| 中文字幕高清在线视频| 亚洲国产精品999在线| 校园春色视频在线观看| 国产午夜精品论理片| 男女下面进入的视频免费午夜| 国产淫片久久久久久久久 | 无遮挡黄片免费观看| 亚洲av电影在线进入| 亚洲欧美日韩无卡精品| 99热只有精品国产| 男插女下体视频免费在线播放| 午夜福利成人在线免费观看| 91在线观看av| 女同久久另类99精品国产91| 无遮挡黄片免费观看| 精品国产三级普通话版| 久久久久久大精品| 俺也久久电影网| 99热这里只有精品一区 | 精品国内亚洲2022精品成人| 动漫黄色视频在线观看| 一区福利在线观看| 亚洲无线在线观看| 免费观看的影片在线观看| 国产成人啪精品午夜网站| 欧美高清成人免费视频www| 999久久久精品免费观看国产| 久久这里只有精品中国| 国产高清有码在线观看视频| 国产日本99.免费观看| 亚洲无线观看免费| 每晚都被弄得嗷嗷叫到高潮| 久久婷婷人人爽人人干人人爱| 国产黄色小视频在线观看| 国产成人av教育| 中文字幕久久专区| 婷婷亚洲欧美| 美女大奶头视频| 我要搜黄色片| 麻豆国产av国片精品| www.熟女人妻精品国产| 白带黄色成豆腐渣| 老熟妇仑乱视频hdxx| 久久精品国产清高在天天线| 日本免费a在线| 国产成人一区二区三区免费视频网站| 国产精品99久久久久久久久| 国产三级在线视频| 日韩欧美免费精品| 亚洲国产色片| 人妻丰满熟妇av一区二区三区| 亚洲中文字幕日韩| 欧美av亚洲av综合av国产av| 婷婷六月久久综合丁香| 51午夜福利影视在线观看| 久久久久国产一级毛片高清牌| 少妇的逼水好多| 国产精品98久久久久久宅男小说| 19禁男女啪啪无遮挡网站| 很黄的视频免费| 国产1区2区3区精品| 美女大奶头视频| 国产成人精品久久二区二区91| 国产成人啪精品午夜网站| 小说图片视频综合网站| 深夜精品福利| 真人一进一出gif抽搐免费| 国产熟女xx| 18禁国产床啪视频网站| 中文字幕精品亚洲无线码一区| 欧美精品啪啪一区二区三区| 色吧在线观看| 麻豆av在线久日| 亚洲在线观看片| 动漫黄色视频在线观看| 88av欧美| av女优亚洲男人天堂 | 日韩精品青青久久久久久| 久久久国产精品麻豆| 日韩有码中文字幕| 搞女人的毛片| 亚洲国产看品久久| 亚洲国产欧美一区二区综合| 真实男女啪啪啪动态图| 欧美又色又爽又黄视频| 一本久久中文字幕| 成人高潮视频无遮挡免费网站| 精品国产三级普通话版| 久久性视频一级片| 黑人操中国人逼视频| 久久人人精品亚洲av| 男女之事视频高清在线观看| 久久伊人香网站| 国内精品美女久久久久久| 久久久久久国产a免费观看| 精品熟女少妇八av免费久了| 亚洲av中文字字幕乱码综合| 国产真人三级小视频在线观看| www.www免费av| 天堂av国产一区二区熟女人妻| 好男人在线观看高清免费视频| 美女高潮的动态| 成人特级黄色片久久久久久久| 男女之事视频高清在线观看| 日日摸夜夜添夜夜添小说| 欧美黄色片欧美黄色片| 亚洲一区高清亚洲精品| 又紧又爽又黄一区二区| 免费高清视频大片| 中文字幕精品亚洲无线码一区| 久久久久国产精品人妻aⅴ院| 黄片小视频在线播放| 麻豆成人午夜福利视频| 中文字幕高清在线视频| 丁香欧美五月| 一个人观看的视频www高清免费观看 | 国产精品99久久久久久久久| 精品久久久久久,| 免费搜索国产男女视频| 欧美大码av| 日韩 欧美 亚洲 中文字幕| 香蕉国产在线看| 成人永久免费在线观看视频| 国产精品,欧美在线| 午夜激情福利司机影院| 国产精品国产高清国产av| 亚洲av美国av| 熟女人妻精品中文字幕| 可以在线观看毛片的网站| 美女大奶头视频| 亚洲国产色片| 婷婷亚洲欧美| 18禁美女被吸乳视频| 亚洲成av人片在线播放无| 99热只有精品国产| 黑人欧美特级aaaaaa片| 亚洲国产欧洲综合997久久,| 法律面前人人平等表现在哪些方面| 美女免费视频网站| 国产成人av教育| 一区二区三区激情视频| 亚洲七黄色美女视频| 可以在线观看毛片的网站| 美女高潮喷水抽搐中文字幕| 国产单亲对白刺激| 一进一出抽搐gif免费好疼| 免费搜索国产男女视频| 国产亚洲精品av在线| 国产91精品成人一区二区三区| 成人三级做爰电影| 国产野战对白在线观看| 国产淫片久久久久久久久 | 免费看a级黄色片| 午夜激情欧美在线| 午夜福利高清视频| 性色avwww在线观看| www日本在线高清视频| 久久久久久大精品| 人妻丰满熟妇av一区二区三区| 美女免费视频网站| 国产成人aa在线观看| 变态另类成人亚洲欧美熟女| 俄罗斯特黄特色一大片| 国产aⅴ精品一区二区三区波| 日韩人妻高清精品专区| 日韩av在线大香蕉| 搡老熟女国产l中国老女人| 久久精品影院6| 成年女人毛片免费观看观看9| 亚洲国产高清在线一区二区三| 亚洲精品中文字幕一二三四区| 看免费av毛片| 黄色女人牲交| 99久久综合精品五月天人人| 日韩国内少妇激情av| 九九久久精品国产亚洲av麻豆 | 久久久久久大精品| 午夜成年电影在线免费观看| 每晚都被弄得嗷嗷叫到高潮| 亚洲国产欧美一区二区综合| 欧美激情久久久久久爽电影| 偷拍熟女少妇极品色| 小蜜桃在线观看免费完整版高清| 哪里可以看免费的av片| 高清在线国产一区| 久久婷婷人人爽人人干人人爱| 99久久综合精品五月天人人| 人人妻,人人澡人人爽秒播| 久久午夜亚洲精品久久| 又黄又爽又免费观看的视频| 视频区欧美日本亚洲| 日韩欧美国产在线观看| 国产精品久久久av美女十八| 无人区码免费观看不卡| 女同久久另类99精品国产91| 香蕉丝袜av| 美女被艹到高潮喷水动态| 久久久成人免费电影| aaaaa片日本免费| 久久国产精品影院| 在线观看美女被高潮喷水网站 | 99视频精品全部免费 在线 | 欧美激情久久久久久爽电影| 亚洲性夜色夜夜综合| 淫妇啪啪啪对白视频| 久久这里只有精品中国| 国产v大片淫在线免费观看| av中文乱码字幕在线| 国产成人一区二区三区免费视频网站| 99视频精品全部免费 在线 | 伦理电影免费视频| 国产精品久久久av美女十八| 中文字幕精品亚洲无线码一区| 成人特级黄色片久久久久久久| 免费人成视频x8x8入口观看| 99久久精品一区二区三区| 欧美午夜高清在线| 精品99又大又爽又粗少妇毛片 | 日韩欧美一区二区三区在线观看| 成年女人毛片免费观看观看9| 日韩免费av在线播放| 嫁个100分男人电影在线观看| 亚洲欧美日韩东京热| 欧美性猛交黑人性爽| 日韩欧美国产在线观看| 精品国产三级普通话版| 久久久久国产一级毛片高清牌| 国产男靠女视频免费网站| 操出白浆在线播放| 动漫黄色视频在线观看| 免费搜索国产男女视频| 欧美精品啪啪一区二区三区| 久久久久久久精品吃奶| 国产精品1区2区在线观看.| 老鸭窝网址在线观看| 国产精品亚洲一级av第二区| 又大又爽又粗| 身体一侧抽搐| 女警被强在线播放| 欧美又色又爽又黄视频| 成人鲁丝片一二三区免费| 国产一区二区在线观看日韩 | 88av欧美| 国产高清三级在线| 国产精品久久久久久精品电影| 亚洲avbb在线观看| 男女下面进入的视频免费午夜| 欧美成人免费av一区二区三区| 美女午夜性视频免费| 亚洲第一欧美日韩一区二区三区| 99国产极品粉嫩在线观看| 三级毛片av免费| 男人舔奶头视频| 欧美日韩福利视频一区二区| 日韩人妻高清精品专区| 一进一出抽搐动态|