本發(fā)明涉及存儲(chǔ)系統(tǒng)領(lǐng)域,尤其涉及一種寫操作控制方法、裝置及系統(tǒng)。
背景技術(shù):
一般的存儲(chǔ)系統(tǒng),都會(huì)使用磁盤緩存技術(shù),來減少對(duì)磁盤的訪問。而對(duì)于寫入磁盤緩存中的數(shù)據(jù)(通常稱之為臟數(shù)據(jù)),磁盤緩存技術(shù)一旦感知到這些臟數(shù)據(jù)量達(dá)到一定的閾值或者定時(shí)超時(shí),就會(huì)把這些臟數(shù)據(jù)寫入磁盤固化,存儲(chǔ)系統(tǒng)一般稱此過程為數(shù)據(jù)刷盤。
寫抑制最早是由文件系統(tǒng)提出的,其主要目的是為了防止出現(xiàn)大量并發(fā)的寫數(shù)據(jù)灌入磁盤緩存中的速度超過了臟數(shù)據(jù)刷盤的速度,導(dǎo)致寫入數(shù)據(jù)的業(yè)務(wù)IO產(chǎn)生等待或者休眠,從而使寫數(shù)據(jù)業(yè)務(wù)IO出現(xiàn)時(shí)延驟增,客戶非常不愿意接受這種時(shí)延驟增,這種對(duì)寫入數(shù)據(jù)的業(yè)務(wù)IO進(jìn)行控制,防止出現(xiàn)寫數(shù)據(jù)業(yè)務(wù)IO的時(shí)延等待或者休眠。但是,無論怎么進(jìn)行策略調(diào)整,都還是會(huì)避免不了寫操作IO受磁盤刷盤速度的影響,在文件系統(tǒng)中出現(xiàn)寫操作IO等待或者休眠的情況,寫操作IO一旦出現(xiàn)IO等待或者休眠,就沒有辦法及時(shí)的得到喚醒,從而導(dǎo)致文件系統(tǒng)處理寫IO的時(shí)延變長(zhǎng)。
因此,如何提供一種避免寫操作受磁盤刷盤速度影響的寫操作控制方法,是本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種寫操作控制方法、裝置及系統(tǒng),以解決現(xiàn)有技術(shù)存在的 寫操作受磁盤刷盤速度影響導(dǎo)致的寫操作IO等待或者休眠的問題。
本發(fā)明提供了一種寫操作控制方法,其包括:獲取磁盤緩存的臟數(shù)據(jù)余量;根據(jù)臟數(shù)據(jù)余量以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度,控制寫操作。
進(jìn)一步的,根據(jù)臟數(shù)據(jù)余量控制寫操作包括:獲取當(dāng)前寫操作的預(yù)留流量,計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,根據(jù)余量差值以及數(shù)據(jù)長(zhǎng)度控制寫操作。
進(jìn)一步的,獲取當(dāng)前寫操作的預(yù)留流量包括:獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量。
進(jìn)一步的,根據(jù)余量差值以及數(shù)據(jù)長(zhǎng)度控制寫操作包括:判斷余量差值與數(shù)據(jù)長(zhǎng)度的大小,當(dāng)余量差值大于數(shù)據(jù)長(zhǎng)度時(shí),執(zhí)行寫操作,否則,抑制寫操作。
進(jìn)一步的,還包括:獲取寫操作的協(xié)議類型,根據(jù)寫操作的協(xié)議類型控制寫操作。
本發(fā)明提供了一種寫操作控制裝置,其包括:獲取模塊,用于獲取磁盤緩存的臟數(shù)據(jù)余量;控制模塊,用于根據(jù)臟數(shù)據(jù)余量以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度,控制寫操作。
進(jìn)一步的,控制模塊用于獲取當(dāng)前寫操作的預(yù)留流量,計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,根據(jù)余量差值以及數(shù)據(jù)長(zhǎng)度控制寫操作。
進(jìn)一步的,控制模塊用于獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量。
進(jìn)一步的,控制模塊用于判斷余量差值與數(shù)據(jù)長(zhǎng)度的大小,當(dāng)余量差值大于數(shù)據(jù)長(zhǎng)度時(shí),執(zhí)行寫操作,否則,抑制寫操作。
進(jìn)一步的,控制模塊還用于獲取寫操作的協(xié)議類型,根據(jù)寫操作的協(xié)議類型控制寫操作。
本發(fā)明提供了一種寫操作控制系統(tǒng),其包括:本地文件系統(tǒng)、分布式文件系統(tǒng)以及接入?yún)f(xié)議文件系統(tǒng);其中,本地文件系統(tǒng)用于獲取磁盤緩存的臟數(shù)據(jù)余量,上傳至分布式文件系統(tǒng);分布式文件系統(tǒng)用于獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量,并計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,上傳至接入?yún)f(xié)議文件系統(tǒng);接入?yún)f(xié)議文件系統(tǒng)用于根據(jù)余量差值以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度控制寫操作。
本發(fā)明的有益效果:
本發(fā)明提供了一種寫操作控制方法,獲取磁盤緩存的臟數(shù)據(jù)余量,并根據(jù)該臟數(shù)據(jù)余量與寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度來控制是否執(zhí)行寫操作,在每執(zhí)行一個(gè)寫操作之前都進(jìn)行判斷,僅當(dāng)滿足條件時(shí)才執(zhí)行寫操作,這樣就保證了每個(gè)寫操作都可以被執(zhí)行,并且在執(zhí)行過程中不會(huì)出現(xiàn)刷盤,解決了現(xiàn)有技術(shù)存在的寫操作受磁盤刷盤速度影響導(dǎo)致的寫操作IO等待或者休眠的問題,提高了用戶的使用體驗(yàn)。
附圖說明
圖1為本發(fā)明第一實(shí)施例提供的寫操作控制裝置的結(jié)構(gòu)示意圖;
圖2為本發(fā)明第二實(shí)施例提供的寫操作控制方法的流程圖;
圖3為本發(fā)明第三實(shí)施例提供的寫操作控制系統(tǒng)的示意圖;
圖4為本發(fā)明第三實(shí)施例提供的寫操作控制方法的流程圖。
具體實(shí)施方式
現(xiàn)通過具體實(shí)施方式結(jié)合附圖的方式對(duì)本發(fā)明做出進(jìn)一步的詮釋說明。
第一實(shí)施例:
圖1為本發(fā)明第一實(shí)施例提供的寫操作控制裝置的結(jié)構(gòu)示意圖,由圖1可知,在本實(shí)施例中,本發(fā)明提供的寫操作控制裝置1包括:
獲取模塊11,用于獲取磁盤緩存的臟數(shù)據(jù)余量;
控制模塊12,用于根據(jù)臟數(shù)據(jù)余量以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度,控制寫操作。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊12用于獲取當(dāng)前寫操作的預(yù)留流量,計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,根據(jù)余量差值以及數(shù)據(jù)長(zhǎng)度控制寫操作。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊12用于獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊12用于判斷余量差值與數(shù)據(jù)長(zhǎng)度的大小,當(dāng)余量差值大于數(shù)據(jù)長(zhǎng)度時(shí),執(zhí)行寫操作,否則,抑制寫操作。
在一些實(shí)施例中,上述實(shí)施例中的控制模塊12還用于獲取寫操作的協(xié)議類型,根據(jù)寫操作的協(xié)議類型控制寫操作。
對(duì)應(yīng)的,本發(fā)明提供了一種寫操作控制系統(tǒng),其包括:本地文件系統(tǒng)、分布式文件系統(tǒng)以及接入?yún)f(xié)議文件系統(tǒng);其中,本地文件系統(tǒng)用于獲取磁盤緩存的臟數(shù)據(jù)余量,上傳至分布式文件系統(tǒng);分布式文件系統(tǒng)用于獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量,并計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,上傳至接入?yún)f(xié)議文件系統(tǒng);接入?yún)f(xié)議文件系統(tǒng)用于根據(jù)余量差值以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度控制寫操作。
第二實(shí)施例:
圖2為本發(fā)明第二實(shí)施例提供的寫操作控制方法的流程圖,由圖2可知,在本實(shí)施例中,本發(fā)明提供的寫操作控制方法包括以下步驟:
S201:獲取磁盤緩存的臟數(shù)據(jù)余量;
S202:根據(jù)臟數(shù)據(jù)余量以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度,控制寫操作。
在一些實(shí)施例中,上述實(shí)施例中的根據(jù)臟數(shù)據(jù)余量控制寫操作包括:獲取當(dāng)前寫操作的預(yù)留流量,計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,根據(jù)余量差值以及數(shù)據(jù)長(zhǎng)度控制寫操作。
在一些實(shí)施例中,上述實(shí)施例中的獲取當(dāng)前寫操作的預(yù)留流量包括:獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量。
在一些實(shí)施例中,上述實(shí)施例中的根據(jù)余量差值以及數(shù)據(jù)長(zhǎng)度控制寫操作包括:判斷余量差值與數(shù)據(jù)長(zhǎng)度的大小,當(dāng)余量差值大于數(shù)據(jù)長(zhǎng)度時(shí),執(zhí)行寫操作,否則,抑制寫操作。
在一些實(shí)施例中,上述實(shí)施例中的方法還包括:獲取寫操作的協(xié)議類型, 根據(jù)寫操作的協(xié)議類型控制寫操作。
現(xiàn)結(jié)合具體應(yīng)用場(chǎng)景對(duì)本發(fā)明做進(jìn)一步的詮釋說明。
第三實(shí)施例:
圖3為本發(fā)明第三實(shí)施例提供的寫操作控制系統(tǒng)的示意圖,由圖3可知,在本實(shí)施例中,本發(fā)明提供的寫操作控制系統(tǒng)包括:本地文件系統(tǒng)31、分布式文件系統(tǒng)32以及接入?yún)f(xié)議文件系統(tǒng)33;其中,本地文件系統(tǒng)31用于獲取磁盤緩存的臟數(shù)據(jù)余量,上傳至分布式文件系統(tǒng)32;分布式文件系統(tǒng)32用于獲取當(dāng)前寫操作中未被響應(yīng)的寫操作的數(shù)據(jù)流量、以及已響應(yīng)的寫操作的未寫入磁盤緩存的數(shù)據(jù)流量,計(jì)算兩者之和作為預(yù)留流量,并計(jì)算臟數(shù)據(jù)余量與預(yù)留流量的余量差值,上傳至接入?yún)f(xié)議文件系統(tǒng)33;接入?yún)f(xié)議文件系統(tǒng)33用于根據(jù)余量差值以及寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度控制寫操作。
圖4為本發(fā)明第三實(shí)施例提供的寫操作控制方法的流程圖,由圖4可知,在本實(shí)施例中,本發(fā)明提供的寫操作控制方法包括以下步驟:
S401:接入?yún)f(xié)議文件系統(tǒng)接收寫操作IO請(qǐng)求。
當(dāng)前進(jìn)行寫操作IO請(qǐng)求,其來源有兩處,一處是文件接入?yún)f(xié)議系統(tǒng)從存儲(chǔ)系統(tǒng)底層協(xié)議收到的寫操作IO請(qǐng)求;另一處是文件接入?yún)f(xié)議系統(tǒng)在進(jìn)行寫操作IO請(qǐng)求時(shí),產(chǎn)生過寫抑制,存放到寫操作IO請(qǐng)求隊(duì)列中的寫操作IO請(qǐng)求。
S402:接入?yún)f(xié)議文件系統(tǒng)處理寫操作IO請(qǐng)求。
當(dāng)寫操作IO請(qǐng)求進(jìn)入到了文件接入?yún)f(xié)議系統(tǒng)后,件接入?yún)f(xié)議系統(tǒng)首先需要判斷當(dāng)前本系統(tǒng)得之的臟數(shù)據(jù)余量差值a是否大于當(dāng)前寫操作IO請(qǐng)求的數(shù)據(jù)長(zhǎng)度;如果大于當(dāng)前寫操作IO的請(qǐng)求的數(shù)據(jù)長(zhǎng)度,則說明可以直接進(jìn)行寫操作IO請(qǐng)求,減去寫操作IO請(qǐng)求的長(zhǎng)度后,更新給本系統(tǒng)的臟數(shù)據(jù)余量差值a,并統(tǒng) 計(jì)當(dāng)前發(fā)送寫操作IO請(qǐng)求的個(gè)數(shù)加1,發(fā)送寫操作IO請(qǐng)求給分布式文件系統(tǒng);如果小于當(dāng)前寫操作IO的請(qǐng)求的數(shù)據(jù)長(zhǎng)度,并且當(dāng)前寫操作IO請(qǐng)求的個(gè)數(shù)為零,說明存儲(chǔ)系統(tǒng)中存在多文件接入?yún)f(xié)議訪問的情況(同時(shí)存在ISCSI協(xié)議的寫訪問和FC協(xié)議的寫訪問),但又不能只寫抑制本接入?yún)f(xié)議的發(fā)送,所以還是可以統(tǒng)計(jì)當(dāng)前發(fā)送寫操作IO請(qǐng)求個(gè)數(shù)加1,發(fā)送寫操作IO請(qǐng)求給分布式文件系統(tǒng);如果小于當(dāng)前寫操作IO的請(qǐng)求的數(shù)據(jù)長(zhǎng)度,并且當(dāng)前寫操作IO請(qǐng)求的個(gè)數(shù)不為零,則說明需要本系統(tǒng)對(duì)該寫操作IO請(qǐng)求進(jìn)行寫抑制,將寫操作IO請(qǐng)求緩存到待發(fā)送請(qǐng)求寫操作IO的隊(duì)列中。
S403:分布式文件系統(tǒng)執(zhí)行寫操作IO請(qǐng)求。
當(dāng)寫操作IO請(qǐng)求進(jìn)入分布式文件系統(tǒng)的入口后,分布式文件系統(tǒng)統(tǒng)計(jì)當(dāng)前正在進(jìn)行寫操作IO的數(shù)據(jù)長(zhǎng)度;判斷是否開啟了定時(shí)探測(cè)臟數(shù)據(jù)余量,如果開啟,則關(guān)閉定時(shí)探測(cè)臟數(shù)據(jù)余量,在正常的寫操作IO過程中,探測(cè)臟數(shù)據(jù)余量已顯得意義不大,臟數(shù)據(jù)余量的信息由寫操作IO的應(yīng)答攜帶;分布式文件系統(tǒng)的對(duì)當(dāng)前寫操作IO的其他信息處理后,提交給本地文件系統(tǒng)處理。
S404:本地文件系統(tǒng)將寫操作IO請(qǐng)求寫入磁盤緩存。
經(jīng)分布式文件系統(tǒng)處理后,正常的寫操作IO請(qǐng)求,當(dāng)寫操作IO請(qǐng)求進(jìn)入本地文件系統(tǒng),本地文件系統(tǒng)先提交給子系統(tǒng)內(nèi)部文件系統(tǒng)接入層處理;再提交給本地文件系統(tǒng)的磁盤緩存ARC模塊處理;磁盤緩存ARC模塊處理以后,更新當(dāng)前臟數(shù)據(jù)余量(隨寫入數(shù)據(jù)IO的增加,臟數(shù)據(jù)余量會(huì)越來越少),并將更新的臟數(shù)據(jù)余量隨寫操作IO請(qǐng)求的應(yīng)答再次提交給本地文件系統(tǒng)的文件系統(tǒng)接入層;由本地文件系統(tǒng)的內(nèi)部文件系統(tǒng)接入層統(tǒng)一把臟數(shù)據(jù)余量攜帶到寫操作IO請(qǐng)求應(yīng)答中。并將寫操作IO請(qǐng)求應(yīng)答提交給分布式文件系統(tǒng),由分布式文件 系統(tǒng)處理。
同時(shí),臟數(shù)據(jù)余量達(dá)到一個(gè)設(shè)定的閾值(例如臟數(shù)據(jù)余量小于等于100M)或者定時(shí)超時(shí),本地文件系統(tǒng)都會(huì)將臟數(shù)據(jù)刷到磁盤上,進(jìn)行數(shù)據(jù)固化,在此過程中,隨著越來越多的臟數(shù)據(jù)固化,臟數(shù)據(jù)余量就會(huì)越來越大。臟數(shù)據(jù)余量的變化,同時(shí)將隨寫操作IO的請(qǐng)求應(yīng)答逐步體現(xiàn)在存儲(chǔ)系統(tǒng)的各個(gè)子系統(tǒng)中,從而使寫操作IO不會(huì)出現(xiàn)IO等待或者休眠的情況。
S405:本地文件系統(tǒng)反饋寫操作IO響應(yīng)至文件接入?yún)f(xié)議系統(tǒng),攜帶臟數(shù)據(jù)余量。
綜上可知,通過本發(fā)明的實(shí)施,至少存在以下有益效果:
獲取磁盤緩存的臟數(shù)據(jù)余量,并根據(jù)該臟數(shù)據(jù)余量與寫操作請(qǐng)求的數(shù)據(jù)長(zhǎng)度來控制是否執(zhí)行寫操作,在每執(zhí)行一個(gè)寫操作之前都進(jìn)行判斷,僅當(dāng)滿足條件時(shí)才執(zhí)行寫操作,這樣就保證了每個(gè)寫操作都可以被執(zhí)行,并且在執(zhí)行過程中不會(huì)出現(xiàn)刷盤,解決了現(xiàn)有技術(shù)存在的寫操作受磁盤刷盤速度影響導(dǎo)致的寫操作IO等待或者休眠的問題,提高了用戶的使用體驗(yàn)。
以上僅是本發(fā)明的具體實(shí)施方式而已,并非對(duì)本發(fā)明做任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施方式所做的任意簡(jiǎn)單修改、等同變化、結(jié)合或修飾,均仍屬于本發(fā)明技術(shù)方案的保護(hù)范圍。