磁盤碎片整理方法、裝置及主機的制作方法
【技術領域】
[0001]本發明實施例涉及計算機技術,尤其涉及一種磁盤碎片整理方法、裝置及主機。
【背景技術】
[0002]隨著磁盤容量越來越大,文件系統使用的時間越來越長,磁盤上的碎片空間越來越多。對于機械磁盤而言,順序讀寫才能充分發揮其性能,但越來越多的磁盤碎片帶來越來越多的離散10,使磁頭來回跳躍,導致讀寫性能急劇下降。
[0003]圖1A為現有磁盤碎片整理方法示意圖,圖1B為磁盤碎片整理之前對象的物理視圖,圖1C為現有磁盤碎片整理之后對象的物理視圖。現有技術中,通過如下方式進行磁盤碎片整理:I)判斷某個源文件(即對象)包括的連續數據塊個數是否達到預設閾值;2)若達到所述預設閾值,則如圖1A所示為所述源文件創建臨時文件,并為所述臨時文件分配一段空閑的連續磁盤空間;3)將所述源文件離散的數據塊讀取出來并寫入到所述連續磁盤空間中;4)釋放所述源文件所占用的磁盤空間,并將所述臨時文件命名為所述源文件名。
[0004]現有技術中,在磁盤空間分配過程中,所述源文件離散的數據塊之間可能存在其他文件的數據塊,如圖18所示,1311^1、1311^7、1311^9、1311^1和1311^13為其它文件的數據塊;按照現有磁盤碎片整理方法(對單個文件的數據塊進行磁盤碎片整理)得到圖1C所示,可見,磁盤上的磁盤碎片仍然很多。
【發明內容】
[0005]本發明實施例提供一種磁盤碎片整理方法、裝置及主機,提高了磁盤碎片整理效率。
[0006]第一方面,本發明實施例提供一種磁盤碎片整理方法,包括:
[0007]根據第一空間管理對象判斷第一磁盤區域的碎片化程度;其中,所述第一空間管理對象用于記錄為每個對象分配所述第一磁盤區域的磁盤子單元時對應的空間管理信息;所述第一磁盤區域為磁盤空間中預設大小對應的磁盤區域;每個所述空間管理信息包括:對象名、層數、塊數、偏移值及空間大小值;
[0008]若確定所述第一磁盤區域的碎片化程度達到預設碎片化程度,則根據所述第一空間管理對象將碎片整理子區域對應的每個對象的數據塊均寫入連續磁盤空間中,并將每個所述對象的數據塊寫入連續磁盤空間時所產生的元數據寫入所述連續空間中;其中,所述碎片整理子區域小于等于所述第一磁盤區域;
[0009]釋放所述碎片整理子區域。
[0010]結合第一方面,在第一方面的第一種可能的實現方式中,所述根據第一空間管理對象判斷第一磁盤區域的碎片化程度,包括:
[0011]根據所述第一空間管理對象中的每個所述空間管理信息確定所述第一磁盤區域的總碎片個數;
[0012]根據所述總碎片個數和所述第一磁盤區域的總塊數判斷所述第一磁盤區域的碎片化程度;其中,所述第一磁盤區域的總塊數為所述第一磁盤區域所包括的磁盤子單元的總數。
[0013]結合第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式中,所述根據所述第一空間管理對象中的每個所述空間管理信息確定所述第一磁盤區域的總碎片個數,包括:
[0014]將所述第一空間管理對象中的每個所述空間管理信息按照偏移值的遞增順序進tx排序;
[0015]根據排序后的空間管理信息中每相鄰的兩個空間管理信息,確定所述第一磁盤區域的總碎片個數。
[0016]結合第一方面、第一方面的第一種或第二種任一種可能的實現方式,在第一方面的第三種可能的實現方式中,所述根據所述第一空間管理對象將碎片整理子區域對應的每個對象的數據塊均寫入連續磁盤空間中之前,還包括:
[0017]根據所述第一空間管理對象確定所述碎片整理子區域;所述碎片整理子區域為:所述第一磁盤區域中的至少一個磁盤子區域。
[0018]結合第一方面的第三種可能的實現方式,在第一方面的第四種可能的實現方式中,所述根據所述第一空間管理對象確定所述碎片整理子區域,包括:
[0019]根據預設區域值將所述第一磁盤區域劃分為至少兩個磁盤子區域,并確定每個所述磁盤子區域的碎片個數;
[0020]根據每個所述磁盤子區域的碎片個數和所述第一磁盤區域的總碎片個數確定所述碎片整理子區域。
[0021]結合第一方面、第一方面的第一種至第四種任一種可能的實現方式,在第一方面的第五種可能的實現方式中,所述根據所述第一空間管理對象將碎片整理子區域對應的每個對象的數據塊均寫入連續磁盤空間中,并將每個所述對象的數據塊寫入連續磁盤空間時所產生的元數據寫入所述連續空間中,包括:
[0022]根據所述第一空間管理對象依次將每個所述對象的數據塊寫入所述連續磁盤空間中,并依次將每個所述對象的數據塊寫入所述連續磁盤空間時所產生的元數據寫入所述連續磁盤空間中。
[0023]結合第一方面的第五種可能的實現方式,在第一方面的第六種可能的實現方式中,所述根據所述第一空間管理對象依次將每個對象的數據塊寫入所述連續磁盤空間中,包括:
[0024]將所述第一空間管理對象中屬于所述碎片整理子區域的每個所述空間管理信息依次按照對象名、層數及塊數的遞增順序進行排序;
[0025]按照排序后的空間管理信息依次讀取所述碎片整理子區域中數據塊,并依次寫入所述連續磁盤空間中。
[0026]結合第一方面、第一方面的第一種至第六種任一種可能的實現方式,在第一方面的第七種可能的實現方式中,所述根據所述第一空間管理對象將碎片整理子區域對應的每個對象的數據塊均寫入連續磁盤空間中之前,還包括:
[0027]根據所述碎片整理子區域所占的磁盤空間大小,確定碎片整理所需的連續磁盤空間大小,并根據所述連續磁盤空間大小為所述碎片整理子區域分配所述連續磁盤空間;所述連續磁盤空間用于存放所述碎片整理子區域中的數據塊及元數據塊。
[0028]結合第一方面的第七種可能的實現方式,在第一方面的第八種可能的實現方式中,所述根據所述碎片整理子區域所占的磁盤空間大小,確定碎片整理所需的連續磁盤空間大小之前,還包括:
[0029]根據屬于所述碎片整理子區域的各個空間管理信息所包括的空間大小值的總和,確定所述碎片整理子區域所占的磁盤空間大小。
[0030]結合第一方面的第七種或第八種可能的實現方式,在第一方面的第九種可能的實現方式中,所述根據所述連續磁盤空間大小為所述碎片整理子區域分配所述連續磁盤空間,包括:
[0031]根據所述連續磁盤空間大小以及預設元數據塊比例為所述碎片整理子區域分配所述連續磁盤空間。
[0032]結合第一方面、第一方面的第一種至第九種任一種可能的實現方式,在第一方面的第十種可能的實現方式中,所述根據第一空間管理對象判斷第一磁盤區域的碎片化程度之前,還包括:
[0033]獲取所述空間管理信息。
[0034]第二方面,本發明實施例提供一種磁盤碎片整理裝置,包括:
[0035]判斷模塊,用于根據第一空間管理對象判斷第一磁盤區域的碎片化程度;其中,所述第一空間管理對象用于記錄為每個對象分配所述第一磁盤區域的磁盤子單元時對應的空間管理信息;所述第一磁盤區域為磁盤空間中預設大小對應的磁盤區域;每個所述空間管理信息包括:對象名、層數、塊數、偏移值及空間大小值;
[0036]整理模塊,用于若根據所述判斷模塊確定所述第一磁盤區域的碎片化程度達到預設碎片化程度,則根據所述第一空間管理對象將碎片整理子區域對應的每個對象的數據塊均寫入連續磁盤空間中,并將每個所述對象的數據塊寫入連續磁盤空間時所產生的元數據寫入所述連續空間中;其中,所述碎片整理子區域小于等于所述第一磁盤區域;
[0037]釋放模塊,用于釋放所述碎片整理子區域。
[0038]結合第二方面,在第二方面的第一種可能的實現方式中,所述判斷模塊,包括:
[0039]第一確定單元,用于根據所述第一空間管理對象中的每個所述空間管理信息確定所述第一磁盤區域的總碎片個數;
[0040]判斷單元,用于根據所述總碎片個數和所述第一磁盤區域的總塊數判斷所述第一磁盤區域的碎片化程度;其中,所述第一磁盤區域的總塊數為所述第一磁盤區域所包括的磁盤子單元的總數。
[0041 ]結合第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式中,所述第一確定單元具體用于:
[0042]將所述第一空間管理對象中的每個所述空間管理信息按照偏移值的遞增順序進tx排序;
[0043]根據排序后的空間管理信息中每相鄰的兩個空間管理信息,確定所述第一磁盤區域的總碎片個數。
[0044]結合第二方面、第二方面的第一種或第二種任一種可能的實現方式,在第二方面的第三種可能的實現方式中,所述裝置,還包括:
[0045]確定模塊,用于根據所述第一空間管理對象確定所述碎片整理子區域;所述碎片整理子區域為:所述第一磁盤區域中的至少一個磁盤子區域。
[0046]結合第二方面的第三種可能的實現方式,在第二方面的第四種可能的實現方式中,所述確定模塊,包括:
[0047]第二確定單元,用于根據預設區域值將所述第一磁盤區域劃分為至少兩個磁盤子區域,并確定每個所述磁盤子區域的碎片個數;
[0048]第三確定單元,用于根據每個所述磁盤子區域的碎片個數和所述第一磁盤區域的總碎片個數確定所述碎片整理子區域。
[0049]結合第二方面、第二方面的第一種至第四種任一種可能的實現方式,在第二方面的第五種可能的實現方式中,所述整理模塊具體用于:
[0050]根據所述第一空間管理對象依次將每個所述對象的數據塊寫入所述連續磁盤空間中,并依次將每個所述對象的數據塊寫入所述連續磁盤空間時所產生的元數據寫入所述連續磁盤空間中。
[0051]結合第二方面的第五種可能的實現方式,在第二方面的第六種可能的實現方式中,所述整理模塊,包括:
[0052]排序單元,用于將所述第一空間管理對象中屬于所述碎片整理子區域的每個所述空間管理信息依次按照對象名、層數及塊數的遞增順序進行排序;
[0053]整理單元,用于按照排序后的空間管理信息依次讀取所述碎片整理子區域中數據塊,并依次寫入所述連續磁盤空間中。
[0054]結合第二方面、第二方面的第一種至第六種任一種可能的實現方式,在第二方面的第七種可能的實現方式中,所述裝置,還包括:
[0055]分配模塊,用于根據所述碎片整理子區域所占的磁盤空間大小,確定碎片整理所需的連續磁盤空間大小,并根據所述連續磁盤空間大小為所述碎片整理子區域分配所述連續磁盤空間;所述連續磁盤空間用于存放所述碎片整理子區域中的數據塊及元數據塊。
[0056]結合第二方面的第七種可能的實現方式,在第二方面的第八種可能的實現方式中,所述分配模塊還用于:
[0057]根據屬于所述碎片整理子區域的各個空間管理信息所包括的空間大小