一種將數(shù)據(jù)寫(xiě)入存儲(chǔ)設(shè)備的方法及存儲(chǔ)設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種將數(shù)據(jù)寫(xiě)入存儲(chǔ)設(shè)備的方法及存儲(chǔ)設(shè)備。
【背景技術(shù)】
[0002]目前,存儲(chǔ)設(shè)備為了縮短對(duì)主機(jī)的響應(yīng)時(shí)延,通常都工作在回寫(xiě)(write back)模式下,回寫(xiě)模式是一種緩存技術(shù),即,先將數(shù)據(jù)寫(xiě)到寫(xiě)緩存,再?gòu)膶?xiě)緩存中寫(xiě)到SSD(SolidState Drive,固態(tài)硬盤(pán))中的緩存技術(shù)。在回寫(xiě)模式中,數(shù)據(jù)先寫(xiě)到寫(xiě)緩存中,一旦數(shù)據(jù)寫(xiě)到寫(xiě)緩存中,存儲(chǔ)設(shè)備就會(huì)發(fā)送寫(xiě)請(qǐng)求已完成信號(hào),之后再將寫(xiě)緩存的數(shù)據(jù)寫(xiě)到SSD中。
[0003]然而,隨著寫(xiě)入的數(shù)據(jù)增多,SSD的空間也會(huì)逐漸耗盡,當(dāng)SSD的空間耗盡時(shí),如果寫(xiě)緩存中有未寫(xiě)入SSD中的數(shù)據(jù),那么這些數(shù)據(jù)就會(huì)滯留在寫(xiě)緩存中,無(wú)法寫(xiě)入SSD。如果存儲(chǔ)在寫(xiě)緩存中的數(shù)據(jù)過(guò)多,則可能會(huì)占滿寫(xiě)緩存,導(dǎo)致寫(xiě)緩存失效。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種將數(shù)據(jù)寫(xiě)入存儲(chǔ)設(shè)備的方法及存儲(chǔ)設(shè)備,用于解決因?qū)懢彺嬷写鎯?chǔ)的數(shù)據(jù)過(guò)多而導(dǎo)致寫(xiě)緩存失效的技術(shù)問(wèn)題。
[0005]第一方面,提供一種將數(shù)據(jù)寫(xiě)入存儲(chǔ)設(shè)備的方法,所述存儲(chǔ)設(shè)備包括SSD、寫(xiě)緩存和處理器,所述SSD至少包括第一存儲(chǔ)空間和第二存儲(chǔ)空間,所述寫(xiě)緩存中存儲(chǔ)有數(shù)據(jù);所述方法由所述處理器執(zhí)行包括以下步驟:
[0006]確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量,所述第一存儲(chǔ)空間用于存儲(chǔ)通過(guò)回寫(xiě)模式寫(xiě)入的數(shù)據(jù)及通過(guò)透寫(xiě)模式寫(xiě)入的數(shù)據(jù);
[0007]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于預(yù)設(shè)容量,則將所述寫(xiě)緩存中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第二存儲(chǔ)空間;所述第二存儲(chǔ)空間用于存儲(chǔ)從所述寫(xiě)緩存寫(xiě)入的數(shù)據(jù)。
[0008]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備還包括第一緩存,所述第一緩存用于存儲(chǔ)寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí),所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)用于指示所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式;在確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量之后,還包括:
[0009]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,將所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)設(shè)置為所述透寫(xiě)模式對(duì)應(yīng)的標(biāo)識(shí),以將所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式設(shè)置為所述透寫(xiě)模式。
[0010]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,在將所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)設(shè)置為透寫(xiě)模式對(duì)應(yīng)的標(biāo)識(shí)之后,還包括:
[0011]接收待寫(xiě)入所述存儲(chǔ)設(shè)備的第一數(shù)據(jù);
[0012]根據(jù)所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)確定所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式為所述透寫(xiě)模式;
[0013]確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量;
[0014]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,拒絕將所述第一數(shù)據(jù)寫(xiě)入所述SSD,并返回寫(xiě)入失敗的消息;否則,將所述第一數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)空間。
[0015]結(jié)合第一方面,在第一方面的第三種可能的實(shí)現(xiàn)方式中,在確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量之后,還包括:
[0016]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,設(shè)置所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí),所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí)用于指示所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量;
[0017]接收待寫(xiě)入所述存儲(chǔ)設(shè)備的第二數(shù)據(jù);
[0018]判斷是否存在所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí);
[0019]若存在所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí),則拒絕將所述第一數(shù)據(jù)寫(xiě)入所述存儲(chǔ)設(shè)備,并返回寫(xiě)入失敗的消息;否則,若不存在所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí),則根據(jù)寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)確定當(dāng)前的寫(xiě)數(shù)據(jù)模式,并根據(jù)確定的寫(xiě)數(shù)據(jù)模式將所述第二數(shù)據(jù)寫(xiě)入所述存儲(chǔ)設(shè)備;其中,所述存儲(chǔ)設(shè)備還包括第一緩存,所述第一緩存用于存儲(chǔ)所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí),所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)用于指示所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式。
[0020]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,在設(shè)置所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí)之后,還包括:
[0021]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量大于所述預(yù)設(shè)容量,則刪除所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí)。
[0022]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn)方式中的任一種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量通過(guò)以下公式計(jì)算:
[0023]K = S-R-Y
[0024]其中,K為所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量,S為所述SSD的總存儲(chǔ)容量,R為所述第二存儲(chǔ)空間的存儲(chǔ)容量,Y為所述第一存儲(chǔ)空間中已用的存儲(chǔ)容量;
[0025]其中,R通過(guò)以下公式計(jì)算:
[0026]R = C/U+BXT
[0027]其中,C為所述寫(xiě)緩存的存儲(chǔ)容量,U為所述SSD的最差空間利用率,B為在寫(xiě)數(shù)據(jù)時(shí)系統(tǒng)能夠接受的最大帶寬,T為時(shí)長(zhǎng),且在所述時(shí)長(zhǎng)內(nèi)接收的待寫(xiě)入所述SSD的數(shù)據(jù)量小于等于所述第二存儲(chǔ)空間的存儲(chǔ)容量。
[0028]第二方面,提供一種存儲(chǔ)設(shè)備,包括SSD、寫(xiě)緩存和處理器,所述SSD至少包括第一存儲(chǔ)空間和第二存儲(chǔ)空間,所述寫(xiě)緩存中存儲(chǔ)有數(shù)據(jù);其中,所述處理器用于:
[0029]確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量,所述第一存儲(chǔ)空間用于存儲(chǔ)通過(guò)回寫(xiě)模式寫(xiě)入的數(shù)據(jù)及通過(guò)透寫(xiě)模式寫(xiě)入的數(shù)據(jù);
[0030]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,則將所述寫(xiě)緩存中存儲(chǔ)的數(shù)據(jù)寫(xiě)入所述第二存儲(chǔ)空間;所述第二存儲(chǔ)空間用于存儲(chǔ)從所述寫(xiě)緩存寫(xiě)入的數(shù)據(jù)。
[0031]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備還包括第一緩存,所述第一緩存用于存儲(chǔ)寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí),所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)用于指示所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式;
[0032]所述處理器還用于:
[0033]在確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量之后,若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,將所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)設(shè)置為所述透寫(xiě)模式對(duì)應(yīng)的標(biāo)識(shí),以將所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式設(shè)置為所述透寫(xiě)模式。
[0034]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0035]在將所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)設(shè)置為透寫(xiě)模式對(duì)應(yīng)的標(biāo)識(shí)之后,接收待寫(xiě)入所述存儲(chǔ)設(shè)備的第一數(shù)據(jù);
[0036]根據(jù)所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)確定所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式為所述透寫(xiě)模式;
[0037]確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量;
[0038]若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,拒絕將所述第一數(shù)據(jù)寫(xiě)入所述SSD,并返回寫(xiě)入失敗的消息;否則,將所述第一數(shù)據(jù)寫(xiě)入所述第一存儲(chǔ)空間。
[0039]結(jié)合第二方面,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0040]在確定所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量之后,若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量,設(shè)置所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí),所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí)用于指示所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量小于等于所述預(yù)設(shè)容量;
[0041]接收待寫(xiě)入所述存儲(chǔ)設(shè)備的第二數(shù)據(jù);
[0042]判斷是否存在所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí);
[0043]若存在所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí),則拒絕將所述第一數(shù)據(jù)寫(xiě)入所述存儲(chǔ)設(shè)備,并返回寫(xiě)入失敗的消息;否則,若不存在所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí),則根據(jù)寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)確定當(dāng)前的寫(xiě)數(shù)據(jù)模式,并根據(jù)確定的寫(xiě)數(shù)據(jù)模式將所述第二數(shù)據(jù)寫(xiě)入所述存儲(chǔ)設(shè)備;其中,所述存儲(chǔ)設(shè)備還包括第一緩存,所述第一緩存用于存儲(chǔ)所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí),所述寫(xiě)數(shù)據(jù)模式對(duì)應(yīng)的標(biāo)識(shí)用于指示所述存儲(chǔ)設(shè)備的寫(xiě)數(shù)據(jù)模式。
[0044]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述處理器還用于:
[0045]在設(shè)置所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí)之后,若所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量大于所述預(yù)設(shè)容量,則刪除所述第一存儲(chǔ)空間對(duì)應(yīng)的標(biāo)識(shí)。
[0046]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量通過(guò)以下公式計(jì)算:
[0047]K = S-R-Y
[0048]其中,K為所述第一存儲(chǔ)空間中可用的存儲(chǔ)容量,S為所述SSD的總存儲(chǔ)容量,R為所述第二存儲(chǔ)空間的存儲(chǔ)容量,Y為所述第一存儲(chǔ)空間中已用的存儲(chǔ)容量;
[0049]其中,R通過(guò)以下公式計(jì)算:
[0050]R = C/U+BXT
[0