向固態硬盤寫入數據的方法及設備的制作方法
【專利摘要】提供一種向固態硬盤寫入數據的方法及設備。所述方法包括:(A)確定待寫入數據的生命周期信息;(B)根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組;(C)根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。根據本發明的方法及設備,使得在對固態硬盤進行垃圾回收時能夠有效減少對有效數據的搬移,從而提高固態硬盤的性能、延長固態硬盤的使用壽命。
【專利說明】向固態硬盤寫入數據的方法及設備
【技術領域】
[0001]本發明涉及數據存儲領域,更具體地講,涉及一種向固態硬盤寫入數據的方法及設備。
【背景技術】
[0002]固態硬盤(SSD)由控制單元和存儲單元(例如,FLASH芯片)兩部分組成。控制單元負責讀取、寫入數據,存儲單元負責存儲數據。由于固態硬盤沒有普通硬盤的機械結構,因而存儲系統能夠在較低的時間內對任意位置的存儲單元完成1/0(輸入/輸出)操作。
[0003]SSD的相關技術包括閃存轉換層、磨損平衡、垃圾回收、預留空間、Trim指令、寫入放大、壞塊管理及校驗糾錯等。其中,垃圾回收是SSD的一個重要功能,是將所有區塊中的有效數據合并到新的區塊中,并將舊的區塊進行擦除,這樣做的好處一方面能夠減少尋址負擔,另一方面能夠留出更多的空閑區塊。
[0004]然而,在對固態硬盤進行垃圾回收時,由于一個區塊上同時存在無效數據和有效數據,需要將有效數據進行搬移,而大量有效數據的搬移,會導致SSD的磨損、SSD性能的下降。
【發明內容】
[0005]本發明的示例性實施例在于提供一種向固態硬盤寫入數據的方法及設備,使得在對固態硬盤進行垃圾回收時能夠有效減少對有效數據的搬移。
[0006]根據本發明的一方面,提供一種向固態硬盤寫入數據的方法,包括:(A)確定待寫入數據的生命周期信息;(B)根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組;(C)根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。
[0007]可選地,在固態硬盤中為各個生命周期組分別劃分對應的區塊,其中,步驟(C)包括:將待寫入數據寫入固態硬盤中與待寫入數據所屬的生命周期組對應的區塊。
[0008]可選地,步驟(C)包括:當存在多個待寫入數據時,使得屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。
[0009]可選地,步驟(C)包括:(C1)判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同;(C2)當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組相同時,將待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤;(C3)當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同時,使得待寫入數據處于暫緩寫入狀態。
[0010]可選地,步驟(C)還包括:在步驟(C3)之后,檢測當前是否有新的待寫入數據等待寫入固態硬盤,其中,當當前有新的待寫入數據等待寫入固態硬盤時,針對該新的待寫入數據返回執行步驟(A);當當前沒有新的待寫入數據等待寫入固態硬盤時,將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。
[0011]可選地,在將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤的過程中,使得所有處于暫緩狀態的待寫入數據中屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。
[0012]可選地,待寫入數據是文件的形式,其中,步驟(C)還包括:檢測當前是否正在向固態硬盤寫入數據,其中,當當前沒有向固態硬盤寫入數據時,執行步驟(Cl)。
[0013]可選地,待寫入數據的生命周期信息指示待寫入數據的生命周期長度或刪除時間。
[0014]可選地,刪除時間位于同一垃圾回收周期的待寫入數據屬于相同的生命周期組。
[0015]可選地,具有相同和/或相似的生命周期信息的待寫入數據屬于相同的生命周期組。
[0016]根據本發明的另一方面,提供一種向固態硬盤寫入數據的設備,包括:生命周期信息確定單元,確定待寫入數據的生命周期信息;生命周期組確定單元,根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組;數據寫入單元,根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。
[0017]可選地,在固態硬盤中為各個生命周期組分別劃分對應的區塊,其中,數據寫入單元將待寫入數據寫入固態硬盤中與待寫入數據所屬的生命周期組對應的區塊。
[0018]可選地,當存在多個待寫入數據時,數據寫入單元使得屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。
[0019]可選地,數據寫入單元包括:判斷單元,判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同;寫入單元,當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組相同時,將待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤;暫緩單元,當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同時,使得待寫入數據處于暫緩寫入狀態。
[0020]可選地,數據寫入單元還包括:第一檢測單元,在使得待寫入數據處于暫緩寫入狀態之后,檢測當前是否有新的待寫入數據等待寫入固態硬盤,其中,當當前有新的待寫入數據等待寫入固態硬盤時,生命周期信息確定單元確定該新的待寫入數據的生命周期信息;當當前沒有新的待寫入數據等待寫入固態硬盤時,寫入單元將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。
[0021]可選地,寫入單元在將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤的過程中,使得所有處于暫緩狀態的待寫入數據中屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。
[0022]可選地,待寫入數據是文件的形式,其中,數據寫入單元還包括:第二檢測單元,檢測當前是否正在向固態硬盤寫入數據,其中,當當前沒有向固態硬盤寫入數據時,判斷單元判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同。
[0023]可選地,待寫入數據的生命周期信息指示待寫入數據的生命周期長度或刪除時間。
[0024]可選地,刪除時間位于同一垃圾回收周期的待寫入數據屬于相同的生命周期組。
[0025]可選地,具有相同和/或相似的生命周期信息的待寫入數據屬于相同的生命周期組。
[0026]根據本發明示例性實施例的向固態硬盤寫入數據的方法及設備,可以將具有相同或相似的生命周期長度或刪除時間的數據寫入固態硬盤中的同一區塊內,使得在對固態硬盤進行垃圾回收時能夠有效減少需要搬移的有效數據,從而提高固態硬盤的性能、延長固態硬盤的使用壽命。
[0027]將在接下來的描述中部分闡述本發明總體構思另外的方面和/或優點,還有一部分通過描述將是清楚的,或者可以經過本發明總體構思的實施而得知。
【專利附圖】
【附圖說明】
[0028]通過下面結合示例性地示出實施例的附圖進行的描述,本發明示例性實施例的上述和其他目的和特點將會變得更加清楚,其中:
[0029]圖1示出根據本發明示例性實施例的向固態硬盤寫入數據的方法的流程圖;
[0030]圖2示出根據本發明的一個優選示例性實施例的將待寫入數據寫入固態硬盤的方法的流程圖;
[0031]圖3示出根據本發明示例性實施例的向固態硬盤寫入數據的設備的框圖;
[0032]圖4示出根據本發明的一個優選示例性實施例的數據寫入單元的框圖。
【具體實施方式】
[0033]現將詳細參照本發明的實施例,所述實施例的示例在附圖中示出,其中,相同的標號始終指的是相同的部件。以下將通過參照附圖來說明所述實施例,以便解釋本發明。
[0034]圖1示出根據本發明示例性實施例的向固態硬盤寫入數據的方法的流程圖。
[0035]如圖1所示,在步驟S10,確定待寫入數據的生命周期信息。這里,待寫入數據可以以各種數據單位的形式存在,例如,文件、字段、字節、比特以及其他的具有各種數據結構的數據。本發明對待寫入數據的具體單位不做限定。生命周期信息是能夠指示數據的生命周期長度(即,存儲時間長度)或刪除時間的信息。在一個實施例中,生命周期信息指示數據的存儲時間長度。在一個優選實施例中,生命周期信息指示數據的刪除時間。可以根據數據的特性來確定數據的生命周期信息。
[0036]例如,對于一些應用或系統,可能需要周期性地對一些數據進行更新或刪除。因此,可以定量地確定出這些數據的生命周期信息。
[0037]此外,也可以根據數據在固態硬盤中的邏輯存儲單位來確定數據的生命周期信息。例如,當邏輯存儲單位是文件時,屬于同一文件內的數據具有相同的生命周期信息,如果兩數據所屬的文件是同一文件,則可確定兩數據的生命周期信息相同。
[0038]此外,對數據的生命周期信息與數據的屬性(例如,類型、用途、來源等)的各種組合的關系進行統計或者訓練,從而也可以利用數據的屬性定性地確定出數據的生命周期信息。這在一些固態硬盤的使用場景較為固定或重復的情況下,較為容易實現。
[0039]應該理解,可以通過各種方式來獲取數據的生命周期信息,本發明對此不做限制。
[0040]在一個示例中,可利用RocksDB系統中數據的層信息作為數據的生命周期信息。在RocksDB系統中,在進行層壓縮(level compact1n)時,是通過將相鄰兩層的數據進行合并來實現的,由于合并時涉及到對本層大部分數據的操作,因此,同一層內的數據具有相同或相似的生命周期。通過對數據的生成時間和刪除時間的統計,得到每一層所存儲的數據大部分具有相同或相似的刪除時間。因此,如果兩數據的用于指示數據所屬的層的信息相同,則可確定兩數據具有相同或相似的刪除時間。
[0041]在另一示例中,可利用Cassandra系統中數據的數據類型作為數據的生命周期信息。在Cassandra系統中,大部分數據屬于以下三種數據類型中的一種:元數據、日志文件和SST文件。其中,元數據更新頻繁,每次數據庫操作都可能對其進行更改,因此,元數據的生命周期較短。日志文件是為了數據庫的可靠性而存在的,在數據通過存儲系統定時從內存固化到固態硬盤后即可刪除,因此,日志文件中的數據的生命周期中等。SST文件用于放置真正的數據,因此,SST文件的生命周期較長。
[0042]在另一示例中,可利用指示數據所指示的對象的信息作為數據的生命周期信息。由于數據所指示的對象一般與數據的生命周期長度或刪除時間相應,因此,可根據數據所指示的對象來獲知數據的生命周期信息。例如,在用于游戲管理系統的存儲系統中,如果數據所指示的對象是用戶ID、用戶注冊信息等,一旦創建就不會再更新,則指示該對象的數據的生命周期較長;如果數據所指示的對象是游戲玩家的經驗或金錢等,由于該數據與每次游戲操作相關,更新頻繁,則指示該對象的數據生命周期較短;如果數據所指示的對象是用戶的排名等,該數據需要按小時或天進行更新,則指示該對象的數據生命周期中等。
[0043]在另一示例中,可利用指示數據的來源的信息作為數據的生命周期信息,S卩,可通過數據的來源來獲知數據的生命周期信息。例如,在云存儲系統中,根據數據的來源可將數據分為用戶上傳的數據和內部管理的數據。內部管理的數據(例如,包括索引、分布路徑等)跟所有用戶的操作相關,更新頻繁,因此,生命周期較短。而用戶上傳的數據,只和該用戶相關,修改頻率較低,可認為生命周期較長。或者,可按照用戶的操作習慣來預測各用戶所存的數據的生命周期,例如,如果用戶習慣將數據上傳后長時間不對其進行修改等操作,則可預測該用戶所上傳的所有數據的生命周期都較長;而如果用戶習慣將數據上傳后時常對其進行修改、刪除等操作,則可預測該用戶所上傳的所有數據的生命周期都較短。
[0044]此外,應該理解,其他的能夠用來指示數據的生命周期長度或刪除時間的信息均可作為數據的生命周期信息,對此不做限制。
[0045]在步驟S20,根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組。
[0046]這里,具有相同和/或相似的生命周期信息的數據屬于相同的生命周期組。
[0047]例如,當生命周期信息是RocksDB系統中數據的層信息時,具有相同的層信息的數據屬于同一生命周期組。當生命周期信息是Cassandra系統中數據的數據類型時,具有相同的數據類型的數據屬于同一生命周期組。當生命周期信息是指示數據所指示的對象的信息時,指示相同的對象的數據屬于同一生命周期組。當生命周期信息是數據的來源時,具有相同的來源的數據屬于同一生命周期組。
[0048]此外,當生命周期信息指示刪除時間時,刪除時間位于同一垃圾回收周期的數據屬于相同的生命周期組。
[0049]在步驟S30,根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。SP,通過考慮待寫入數據所屬的生命周期組來確定如何將待寫入數據寫入固態硬盤。
[0050]在一個示例中,可預先在固態硬盤中為各個生命周期組分別劃分對應的區塊,在執行步驟S30時,可將待寫入數據寫入固態硬盤中與待寫入數據所屬的生命周期組對應的區塊。即,可通過預先設置,使固態硬盤的各個區塊分別與一個生命周期組相對應,在寫入數據時即可將屬于某一生命周期組的數據寫入與該組對應的區塊,從而保證了同一區塊內所存儲的數據都屬于相同的生命周期組,即,同一區塊內所存儲的數據具有相同或相近的生命周期長度和/或刪除時間。
[0051]在另一示例中,當存在多個待寫入數據時,可使得屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤,以盡量保證屬于相同生命組的數據被寫到同一區塊內。換言之,在進行寫入時,使得屬于相同生命周期組的數據被排列在一起順序寫入。
[0052]例如,可根據數據所屬的生命周期組對多個待寫入數據進行排序(例如,可先對屬于第一生命周期組的數據排序,接下來對屬于第二生命組的數據排序,最后對屬于第三生命周期組的數據排序),并按照排序將待寫入的數據相繼地依次寫入固態硬盤。
[0053]圖2示出根據本發明的一個優選示例性實施例的將待寫入數據寫入固態硬盤的方法的流程圖。
[0054]如圖2所示,在步驟S301,判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同。
[0055]例如,可根據當前待寫入區塊內最后被寫入的數據所屬的生命周期組確定當前待寫入區塊內已被寫入的數據所屬的生命周期組。也可根據當前待寫入區塊內大部分被寫入的數據所屬的生命周期組確定當前待寫入區塊內已被寫入的數據所屬的生命周期組。
[0056]在步驟S302,當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組相同時,將待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。以盡量保證屬于相同生命組的數據被寫到同一區塊內。
[0057]在步驟S303,當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同時,使得待寫入數據處于暫緩寫入狀態。即,由于待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同,暫不寫入該待寫入數據。
[0058]在一個示例中,在步驟S303之后,可檢測當前是否有新的待寫入數據等待寫入固態硬盤,其中,當當前有新的待寫入數據等待寫入固態硬盤時,針對該新的待寫入數據返回執行步驟S10;當當前沒有新的待寫入數據等待寫入固態硬盤時,將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。具體說來,如果當前有新的待寫入數據等待寫入固態硬盤,則針對該新的待寫入數據返回執行步驟S10-S30,如果當前沒有新的待寫入數據等待寫入固態硬盤,則只能將處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。
[0059]優選地,在將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤的過程中,使得所有處于暫緩狀態的待寫入數據中屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。盡量保證屬于相同生命組的數據被相鄰地保存在固態硬盤中,以盡可能讓同一區塊內的數據的生命周期長度或刪除時間相同或相似。
[0060]此外,根據本發明的一個優選示例性實施例的將待寫入數據寫入固態硬盤的方法還可包括:當待寫入數據是文件的形式時,檢測當前是否正在向固態硬盤寫入數據,其中,當當前沒有向固態硬盤寫入數據時,執行步驟S301,當當前正在向固態硬盤寫入數據時,則待數據寫完之后再執行步驟S301。即,只有當當前沒有在向固態硬盤寫入數據時,才執行步驟S301,從而保證同一文件內的數據被連續地存入固態硬盤中連續的存儲位置。由于同一文件內的數據具有相同或相似的生命周期長度或刪除時間,從而盡可能地使得同一區塊內的數據具有相同或相似的生命周期長度或刪除時間。
[0061]根據待寫入數據所屬的生命周期組將待寫入數據相應地寫入固態硬盤,能夠保證固態硬盤中各區塊內所寫入的數據屬于同一生命周期組,由于屬于同一生命周期組的數據具有相同和/或相似的生命周期長度或刪除時間,從而盡可能使固態硬盤的各區塊內的數據具有相同和/或相似的生命周期長度或刪除時間。因此,在對固態硬盤進行垃圾回收時能夠有效減少需要搬移的有效數據,以減少對固態硬盤的磨損,延長固態硬盤的使用壽命;提高固態硬盤的性能。
[0062]圖3示出根據本發明示例性實施例的向固態硬盤寫入數據的設備的框圖。
[0063]如圖3所示,根據本發明示例性實施例的向固態硬盤寫入數據的設備包括:生命周期信息確定單元10、生命周期組確定單元20和數據寫入單元30。
[0064]具體說來,生命周期信息確定單元10用于確定待寫入數據的生命周期信息。這里,待寫入數據可以以各種數據單位的形式存在,例如,文件、字段、字節、比特以及其他的具有各種數據結構的數據。本發明對待寫入數據的具體單位不做限定。生命周期信息是能夠指示數據的生命周期長度(即,存儲時間長度)或刪除時間的信息。在一個實施例中,生命周期信息指示數據的存儲時間長度。在一個優選實施例中,生命周期信息指示數據的刪除時間。可以根據數據的特性來確定數據的生命周期信息。
[0065]例如,對于一些應用或系統,可能需要周期性地對一些數據進行更新或刪除。因此,可以定量地確定出這些數據的生命周期信息。
[0066]此外,也可以根據數據在固態硬盤中的邏輯存儲單位來確定數據的生命周期信息。例如,當邏輯存儲單位是文件時,屬于同一文件內的數據具有相同的生命周期信息,如果兩數據所屬的文件是同一文件,則可確定兩數據的生命周期信息相同。
[0067]此外,對數據的生命周期信息與數據的屬性(例如,類型、用途、來源等)的各種組合的關系進行統計或者訓練,從而也可以利用數據的屬性定性地確定出數據的生命周期信息。這在一些固態硬盤的使用場景較為固定或重復的情況下,較為容易實現。
[0068]應該理解,可以通過各種方式來獲取數據的生命周期信息,本發明對此不做限制。
[0069]在一個示例中,可利用RocksDB系統中數據的層信息作為數據的生命周期信息。在RocksDB系統中,在進行層壓縮(level compact1n)時,是通過將相鄰兩層的數據進行合并來實現的,由于合并時涉及到對本層大部分數據的操作,因此,同一層內的數據具有相同或相似的生命周期。通過對數據的生成時間和刪除時間的統計,得到每一層所存儲的數據大部分具有相同或相似的刪除時間。因此,如果兩數據的用于指示數據所屬的層的信息相同,則可確定兩數據具有相同或相似的刪除時間。
[0070]在另一示例中,可利用Cassandra系統中數據的數據類型作為數據的生命周期信息。在Cassandra系統中,大部分數據屬于以下三種數據類型中的一種:元數據、日志文件和SST文件。其中,元數據更新頻繁,每次數據庫操作都可能對其進行更改,因此,元數據的生命周期較短。日志文件是為了數據庫的可靠性而存在的,在數據通過存儲系統定時從內存固化到固態硬盤后即可刪除,因此,日志文件中的數據的生命周期中等。SST文件用于放置真正的數據,因此,SST文件的生命周期較長。
[0071]在另一示例中,可利用指示數據所指示的對象的信息作為數據的生命周期信息。由于數據所指示的對象一般與數據的生命周期長度或刪除時間相應,因此,可根據數據所指示的對象來獲知數據的生命周期信息。例如,在用于游戲管理系統的存儲系統中,如果數據所指示的對象是用戶ID、用戶注冊信息等,一旦創建就不會再更新,則指示該對象的數據的生命周期較長;如果數據所指示的對象是游戲玩家的經驗或金錢等,由于該數據與每次游戲操作相關,更新頻繁,則指示該對象的數據生命周期較短;如果數據所指示的對象是用戶的排名等,該數據需要按小時或天進行更新,則指示該對象的數據生命周期中等。
[0072]在另一示例中,可利用指示數據的來源的信息作為數據的生命周期信息,S卩,可通過數據的來源來獲知數據的生命周期信息。例如,在云存儲系統中,根據數據的來源可將數據分為用戶上傳的數據和內部管理的數據。內部管理的數據(例如,包括索引、分布路徑等)跟所有用戶的操作相關,更新頻繁,因此,生命周期較短。而用戶上傳的數據,只和該用戶相關,修改頻率較低,可認為生命周期較長。或者,可按照用戶的操作習慣來預測各用戶所存的數據的生命周期,例如,如果用戶習慣將數據上傳后長時間不對其進行修改等操作,則可預測該用戶所上傳的所有數據的生命周期都較長;而如果用戶習慣將數據上傳后時常對其進行修改、刪除等操作,則可預測該用戶所上傳的所有數據的生命周期都較短。
[0073]此外,應該理解,其他的能夠用來指示數據的生命周期長度或刪除時間的信息均可作為數據的生命周期信息,對此不做限制。
[0074]生命周期組確定單元20用于根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組。
[0075]這里,具有相同和/或相似的生命周期信息的數據屬于相同的生命周期組。
[0076]例如,當生命周期信息是RocksDB系統中數據的層信息時,具有相同的層信息的數據屬于同一生命周期組。當生命周期信息是Cassandra系統中數據的數據類型時,具有相同的數據類型的數據屬于同一生命周期組。當生命周期信息是指示數據所指示的對象的信息時,指示相同的對象的數據屬于同一生命周期組。當生命周期信息是數據的來源時,具有相同的來源的數據屬于同一生命周期組。
[0077]此外,當生命周期信息指示刪除時間時,刪除時間位于同一垃圾回收周期的數據屬于相同的生命周期組。
[0078]數據寫入單元30用于根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。即,通過考慮待寫入數據所屬的生命周期組來確定如何將待寫入數據寫入固態硬盤。
[0079]在一個示例中,可預先在固態硬盤中為各個生命周期組分別劃分對應的區塊,數據寫入單元30可將待寫入數據寫入固態硬盤中與待寫入數據所屬的生命周期組對應的區塊。即,可通過預先設置,使固態硬盤的各個區塊分別與一個生命周期組相對應,在寫入數據時即可將屬于某一生命周期組的數據寫入與該組對應的區塊,從而保證了同一區塊內所存儲的數據都屬于相同的生命周期組,即,同一區塊內所存儲的數據具有相同或相近的生命周期長度和/或刪除時間。
[0080]在另一示例中,當存在多個待寫入數據時,數據寫入單元30可使得屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤,以盡量保證屬于相同生命組的數據被寫到同一區塊內。換言之,在進行寫入時,使得屬于相同生命周期組的數據被排列在一起順序寫入。
[0081]例如,數據寫入單元30可根據數據所屬的生命周期組對多個待寫入數據進行排序(例如,可先對屬于第一生命周期組的數據排序,接下來對屬于第二生命組的數據排序,最后對屬于第三生命周期組的數據排序),并按照排序將待寫入的數據相繼地依次寫入固態硬盤。
[0082]圖4示出根據本發明的一個優選示例性實施例的數據寫入單元的框圖。
[0083]如圖4所示,根據本發明的一個優選示例性實施例的數據寫入單元30包括:判斷單元301、寫入單元302和暫緩單元303。
[0084]具體說來,判斷單元301用于判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同。
[0085]例如,判斷單元301可根據當前待寫入區塊內最后被寫入的數據所屬的生命周期組確定當前待寫入區塊內已被寫入的數據所屬的生命周期組。也可根據當前待寫入區塊內大部分被寫入的數據所屬的生命周期組確定當前待寫入區塊內已被寫入的數據所屬的生命周期組。
[0086]寫入單元302用于當判斷單元301判斷出待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組相同時,將待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。以盡量保證屬于相同生命組的數據被寫到同一區塊內。
[0087]暫緩單元303用于當判斷單元301判斷出待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同時,使得待寫入數據處于暫緩寫入狀態。即,由于待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同,暫不寫入該待寫入數據。
[0088]在一個示例中,根據本發明的一個優選示例性實施例的數據寫入單元30還可包括:第一檢測單元(未示出)。第一檢測單元用于在暫緩單元使得待寫入數據處于暫緩寫入狀態之后,檢測當前是否有新的待寫入數據等待寫入固態硬盤,其中,當當前有新的待寫入數據等待寫入固態硬盤時,生命周期信息確定單元確定該新的待寫入數據的生命周期信息;當當前沒有新的待寫入數據等待寫入固態硬盤時,寫入單元302將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。
[0089]優選地,寫入單元302在將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤的過程中,使得所有處于暫緩狀態的待寫入數據中屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。盡量保證屬于相同生命組的數據被相鄰地保存在固態硬盤中,以盡可能讓同一區塊內的數據的生命周期長度或刪除時間相同或相似。
[0090]此外,在一個示例中,根據本發明的一個優選示例性實施例的數據寫入單元30還可包括:第二檢測單元(未示出)。第二檢測單元用于當待寫入數據是文件的形式時,檢測當前是否正在向固態硬盤寫入數據,其中,當當前沒有向固態硬盤寫入數據時,判斷單元判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同,當當前正在向固態硬盤寫入數據時,則待數據寫完之后再由判斷單元判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同。即,只有當當前沒有在向固態硬盤寫入數據時,才由判斷單元判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同,從而保證同一文件內的數據被連續地存入固態硬盤中連續的存儲位置。由于同一文件內的數據具有相同或相似的生命周期長度或刪除時間,從而盡可能地使得同一區塊內的數據具有相同或相似的生命周期長度或刪除時間。
[0091]數據寫入單元30根據待寫入數據所屬的生命周期組將待寫入數據相應地寫入固態硬盤,能夠保證固態硬盤中各區塊內所寫入的數據屬于同一生命周期組,由于屬于同一生命周期組的數據具有相同和/或相似的生命周期長度或刪除時間,從而盡可能使固態硬盤的各區塊內的數據具有相同和/或相似的生命周期長度或刪除時間。因此,在對固態硬盤進行垃圾回收時能夠有效減少需要搬移的有效數據,以減少對固態硬盤的磨損,延長固態硬盤的使用壽命;提高固態硬盤在相同的數據寫入量下的使用時間,提高固態硬盤的性倉泛。
[0092]此外,根據本發明的示例性實施例的上述方法可以被實現為計算機程序,從而當運行該程序時,實現上述方法。根據本發明的示例性實施例的向固態硬盤寫入數據的設備中的各個單元可被實現硬件組件。本領域技術人員根據限定的各個單元所執行的處理,可以例如使用現場可編程門陣列(FPGA)或專用集成電路(ASIC)來實現各個單元。
[0093]根據本發明示例性實施例的向固態硬盤寫入數據的方法及設備,可以將具有相同或相似的生命周期長度或刪除時間的數據寫入固態硬盤中的同一區塊內,使得在對固態硬盤進行垃圾回收時能夠有效減少需要搬移的有效數據,從而提高固態硬盤的性能、延長固態硬盤的使用壽命。
[0094]雖然已表示和描述了本發明的一些示例性實施例,但本領域技術人員應該理解,在不脫離由權利要求及其等同物限定其范圍的本發明的原理和精神的情況下,可以對這些實施例進行修改。
【權利要求】
1.一種向固態硬盤寫入數據的方法,包括: (A)確定待寫入數據的生命周期信息; (B)根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組; (C)根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。
2.如權利要求1所述的方法,其中,在固態硬盤中為各個生命周期組分別劃分對應的區塊,其中,步驟(C)包括: 將待寫入數據寫入固態硬盤中與待寫入數據所屬的生命周期組對應的區塊。
3.如權利要求1所述的方法,其中,步驟(C)包括: 當存在多個待寫入數據時,使得屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。
4.如權利要求1所述的方法,其中,步驟(C)包括: (Cl)判斷待寫入數據所屬的生命周期組與固態硬盤中的當前待寫入區塊內已被寫入的數據所屬的生命周期組是否相同; (C2)當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組相同時,將待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤; (C3)當待寫入數據所屬的生命周期組與當前待寫入區塊內已被寫入的數據所屬的生命周期組不同時,使得待寫入數據處于暫緩寫入狀態。
5.如權利要求4所述的方法,其中,步驟(C)還包括: 在步驟(C3)之后,檢測當前是否有新的待寫入數據等待寫入固態硬盤, 其中,當當前有新的待寫入數據等待寫入固態硬盤時,針對該新的待寫入數據返回執行步驟(A);當當前沒有新的待寫入數據等待寫入固態硬盤時,將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤。
6.如權利要求5所述的方法,其中,在將所有處于暫緩狀態的待寫入數據從當前待寫入區塊的待寫入位置開始寫入固態硬盤的過程中,使得所有處于暫緩狀態的待寫入數據中屬于相同生命周期組的待寫入數據被相繼地依次寫入固態硬盤。
7.如權利要求4所述的方法,其中,待寫入數據是文件的形式,其中,步驟(C)還包括: 檢測當前是否正在向固態硬盤寫入數據, 其中,當當前沒有向固態硬盤寫入數據時,執行步驟(Cl)。
8.如權利要求1所述的方法,其中,待寫入數據的生命周期信息指示待寫入數據的生命周期長度或刪除時間。
9.如權利要求8所述的方法,其中,刪除時間位于同一垃圾回收周期的待寫入數據屬于相同的生命周期組。
10.如權利要求1所述的方法,其中,具有相同和/或相似的生命周期信息的待寫入數據屬于相同的生命周期組。
11.一種向固態硬盤寫入數據的設備,包括: 生命周期信息確定單元,確定待寫入數據的生命周期信息; 生命周期組確定單元,根據待寫入數據的生命周期信息確定待寫入數據所屬的生命周期組; 數據寫入單元,根據待寫入數據所屬的生命周期組將待寫入數據寫入固態硬盤。
【文檔編號】G06F3/06GK104391661SQ201410768099
【公開日】2015年3月4日 申請日期:2014年12月12日 優先權日:2014年12月12日
【發明者】楊飛, 豆坤, 陳思羽, 唐海波, 李娜, 侯夢薇, 段明立 申請人:西安三星電子研究有限公司, 三星電子株式會社