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