国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法和設(shè)備的制造方法

      文檔序號(hào):10624781閱讀:291來(lái)源:國(guó)知局
      一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法和設(shè)備的制造方法
      【專(zhuān)利摘要】本發(fā)明實(shí)施例提供一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法和設(shè)備,用以解決現(xiàn)有技術(shù)中存在的將數(shù)據(jù)存儲(chǔ)在ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的任意的空存儲(chǔ)塊上,降低了對(duì)存儲(chǔ)容量大的ext4鏡像文件的讀寫(xiě)效率的問(wèn)題。本發(fā)明實(shí)施例的方法包括:確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;若需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的至少一段連續(xù)的空存儲(chǔ)塊中。由于本發(fā)明實(shí)施例將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的至少一段連續(xù)的空存儲(chǔ)塊中,以便于數(shù)據(jù)的寫(xiě)入讀出操作,提高了對(duì)存儲(chǔ)容量大的鏡像文件的讀寫(xiě)效率。
      【專(zhuān)利說(shuō)明】
      一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法和設(shè)備
      技術(shù)領(lǐng)域
      [0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法和設(shè)備。
      【背景技術(shù)】
      [0002]鏡像文件與ZIP (計(jì)算機(jī)文件壓縮算法)壓縮包類(lèi)似,它將特定的一系列文件按照一定的格式制作成單一的文件,以便用戶(hù)下載和使用,例如一個(gè)測(cè)試版的操作系統(tǒng)鏡像文件、一個(gè)游戲鏡像文件等。鏡像文件不僅具有ZIP壓縮包的“合成”功能,它最重要的特點(diǎn)是可以被特定的軟件識(shí)別并可直接刻錄到光盤(pán)上。通常意義上的鏡像文件可以包含系統(tǒng)文件、引導(dǎo)文件、分區(qū)表信息等,這樣的鏡像文件可以包含一個(gè)分區(qū)甚至是一塊硬盤(pán)的所有信息。
      [0003]在Windows平臺(tái)下,一種米用ext4(The fourth extended file system,第四代擴(kuò)展文件系統(tǒng))文件系統(tǒng)的鏡像文件,現(xiàn)有技術(shù)中,大部分工具軟件不支持對(duì)此種ext4鏡像文件進(jìn)行寫(xiě)入文件操作,雖然有小部分工具軟件實(shí)現(xiàn)了對(duì)ext4鏡像文件進(jìn)行寫(xiě)入文件的功能,但是都默認(rèn)加入了寫(xiě)保護(hù),以此來(lái)避免寫(xiě)入操作對(duì)文件系統(tǒng)造成損壞,即使關(guān)閉了寫(xiě)保護(hù),對(duì)于寫(xiě)入的文件數(shù)據(jù)的存儲(chǔ)方式為:將數(shù)據(jù)存儲(chǔ)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的任意的空存儲(chǔ)塊上,采用這種方法對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),降低了對(duì)存儲(chǔ)容量大的ext4鏡像文件的讀寫(xiě)效率。
      [0004]綜上所述,目前的這種將數(shù)據(jù)存儲(chǔ)在ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的任意的空存儲(chǔ)塊上的方法,降低了對(duì)存儲(chǔ)容量大的ext4鏡像文件的讀寫(xiě)效率。

      【發(fā)明內(nèi)容】

      [0005]本發(fā)明提供一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法和設(shè)備,用以解決現(xiàn)有技術(shù)中存在的將數(shù)據(jù)存儲(chǔ)在ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的任意的空存儲(chǔ)塊上的方法,降低了對(duì)存儲(chǔ)容量大的ext4鏡像文件的讀寫(xiě)效率的問(wèn)題。
      [0006]本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法包括:
      [0007]確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;
      [0008]若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;
      [0009]將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。
      [0010]由于本發(fā)明實(shí)施例將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的至少一段連續(xù)的空存儲(chǔ)塊中,以便于數(shù)據(jù)的寫(xiě)入與讀出操作,提高了對(duì)存儲(chǔ)容量大的鏡像文件的讀寫(xiě)效率。
      [0011]較佳地,所述確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,包括:
      [0012]若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將每一段的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。
      [0013]由于本發(fā)明實(shí)施例將長(zhǎng)度大于預(yù)定門(mén)限值的數(shù)據(jù)進(jìn)行分段處理,以便于每次將較小的數(shù)據(jù)量寫(xiě)入鏡像文件,提高了系統(tǒng)的性能。
      [0014]較佳地,所述根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊,包括:
      [0015]根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù);
      [0016]如果有,則將所述一段連續(xù)的空存儲(chǔ)塊作為查找到的一段連續(xù)的空存儲(chǔ)塊;
      [0017]否則,查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩段連續(xù)的空存儲(chǔ)塊。
      [0018]較佳地,所述根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),包括:
      [0019]將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,判斷存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),如果存儲(chǔ)塊組能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則將所述存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊;
      [0020]如果存儲(chǔ)塊組不能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),判斷與所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是空存儲(chǔ)塊,則將所述下一個(gè)存儲(chǔ)塊加入到所述存儲(chǔ)塊組中,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟;
      [0021]如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊不是空存儲(chǔ)塊,則將后續(xù)的兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟,直到找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值;
      [0022]如果找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值,且未查找到能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的一個(gè)存儲(chǔ)塊組,則查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組;
      [0023]如果找到的所有存儲(chǔ)塊組組合在一起無(wú)法存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則增加所述閾值,并返回將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組的步驟。
      [0024]由于本發(fā)明實(shí)施例在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找至少兩個(gè)存儲(chǔ)塊組,以便于將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)進(jìn)去,進(jìn)而便于對(duì)該段數(shù)據(jù)的寫(xiě)入與讀出操作。
      [0025]較佳地,所述查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組,包括:
      [0026]確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù);
      [0027]根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組。
      [0028]由于本發(fā)明實(shí)施例在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找不到一個(gè)能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)的存儲(chǔ)塊組后,查找與需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組,以便于該段數(shù)據(jù)盡可能的存儲(chǔ)到連續(xù)的區(qū)域,進(jìn)而便于對(duì)該段數(shù)據(jù)的寫(xiě)入與讀出操作。
      [0029]較佳地,所述根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組,包括:
      [0030]從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組;
      [0031]其中,查找到的前N個(gè)存儲(chǔ)塊組不小于所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,N為大于I的正整數(shù)。
      [0032]由于本發(fā)明實(shí)施例在已查找到的所有存儲(chǔ)塊組中,查找與需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的最大的前N個(gè)存儲(chǔ)塊組,以便于將該段數(shù)據(jù)存儲(chǔ)到最大的連續(xù)的區(qū)域上,進(jìn)而便于對(duì)該段數(shù)據(jù)的寫(xiě)入與讀出操作。
      [0033]較佳地,若所述鏡像文件為第四代擴(kuò)展文件系統(tǒng)ext4鏡像文件,則所述查找至少一段連續(xù)的空存儲(chǔ)塊之后,還包括:
      [0034]根據(jù)查找到的至少一段連續(xù)的空存儲(chǔ)塊,生成一個(gè)用于索引所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的區(qū)段樹(shù)extent tree信息,并將所述extent tree信息置于所述ext4鏡像文件中的所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的索引表中。
      [0035]本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入鏡像文件的設(shè)備,包括:
      [0036]長(zhǎng)度確定模塊,用于確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;
      [0037]查找模塊,用于若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;
      [0038]存儲(chǔ)模塊,用于將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。
      [0039]較佳地,所述長(zhǎng)度確定模塊具體用于:
      [0040]若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將每一段的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。
      [0041]較佳地,所述查找模塊具體用于:
      [0042]根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù);
      [0043]如果有,則將所述一段連續(xù)的空存儲(chǔ)塊作為查找到的一段連續(xù)的空存儲(chǔ)塊;
      [0044]否則,查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩段連續(xù)的空存儲(chǔ)塊。
      [0045]較佳地,所述查找模塊具體用于:
      [0046]將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,判斷存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),如果存儲(chǔ)塊組能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則將所述存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊;
      [0047]如果存儲(chǔ)塊組不能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),判斷與所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是空存儲(chǔ)塊,則將所述下一個(gè)存儲(chǔ)塊加入到所述存儲(chǔ)塊組中,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟;
      [0048]如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊不是空存儲(chǔ)塊,則將后續(xù)的兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟,直到找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值;
      [0049]如果找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值,且未查找到能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的一個(gè)存儲(chǔ)塊組,則查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組;
      [0050]如果找到的所有存儲(chǔ)塊組組合在一起無(wú)法存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則增加所述閾值,并返回將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組的步驟。
      [0051]較佳地,所述查找模塊具體用于:
      [0052]確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù);
      [0053]根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組。
      [0054]較佳地,所述查找模塊具體用于:
      [0055]從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組;
      [0056]其中,查找到的前N個(gè)存儲(chǔ)塊組不小于所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,N為大于I的正整數(shù)。
      [0057]較佳地,若所述鏡像文件為第四代擴(kuò)展文件系統(tǒng)ext4鏡像文件,則所述查找模塊還用于:
      [0058]根據(jù)查找到的至少一段連續(xù)的空存儲(chǔ)塊,生成一個(gè)用于索引所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的區(qū)段樹(shù)extent tree信息,并將所述extent tree信息置于所述ext4鏡像文件中的所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的索引表中。
      [0059]由于本發(fā)明實(shí)施例將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的至少一段連續(xù)的空存儲(chǔ)塊中,以便于數(shù)據(jù)的寫(xiě)入與讀出操作,提高了對(duì)存儲(chǔ)容量大的鏡像文件的讀寫(xiě)效率。
      【附圖說(shuō)明】
      [0060]圖1為本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法流程示意圖;
      [0061]圖2為本發(fā)明實(shí)施例提供的鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域示意圖;
      [0062]圖3為本發(fā)明實(shí)施例提供的一種在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找至少一段連續(xù)的空存儲(chǔ)塊的方法流程示意圖;
      [0063]圖4為本發(fā)明實(shí)施例提供的ext2/ext3的間接塊映射存儲(chǔ)方式示意圖;
      [0064]圖5為本發(fā)明實(shí)施例提供的ext4的extent tree映射存儲(chǔ)方式示意圖;
      [0065]圖6為本發(fā)明實(shí)施例提供的ext2/ext3/ext4的磁盤(pán)布局示意圖;
      [0066]圖7為本發(fā)明實(shí)施例提供的將需要6個(gè)block的數(shù)據(jù)以extent tree的形式進(jìn)行存儲(chǔ)的不意圖;
      [0067]圖8為本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入ext4鏡像文件的方法流程示意圖;
      [0068]圖9為本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入鏡像文件的設(shè)備結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0069]本發(fā)明實(shí)施例確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。由于本發(fā)明實(shí)施例將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的至少一段連續(xù)的空存儲(chǔ)塊中,以便于數(shù)據(jù)的寫(xiě)入與讀出操作,提高了對(duì)存儲(chǔ)容量大的鏡像文件的讀寫(xiě)效率。
      [0070]其中,本發(fā)明實(shí)施例的系統(tǒng)平臺(tái)可以是Windows平臺(tái),也可以是Linux平臺(tái),其它系統(tǒng)平臺(tái)也可以。
      [0071]其中,本發(fā)明實(shí)施例的鏡像文件可以是:ext2 (The second extended filesystem,第二代擴(kuò)展文件系統(tǒng))鏡像文件、ext3(Third extended file system,第三代擴(kuò)展文件系統(tǒng))鏡像文件、ext4鏡像文件等。
      [0072]本發(fā)明實(shí)施例可以實(shí)現(xiàn)在Windows平臺(tái)下對(duì)ext4鏡像文件(ext4是Linux平臺(tái)下的一種文件系統(tǒng)類(lèi)型,Windows平臺(tái)下不支持這種文件系統(tǒng))進(jìn)行處理。
      [0073]下面結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
      [0074]如圖1所示,本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法包括:
      [0075]步驟100、確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;
      [0076]步驟101、若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;
      [0077]步驟102、將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。
      [0078]本發(fā)明實(shí)施例若需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度不大于一個(gè)存儲(chǔ)塊,那么直接將該數(shù)據(jù)存儲(chǔ)到一個(gè)空存儲(chǔ)塊中。
      [0079]本發(fā)明實(shí)施例若需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊時(shí),可以將需要寫(xiě)入鏡像文件的數(shù)據(jù)一次性的存儲(chǔ)到查找的至少一段連續(xù)的空存儲(chǔ)塊中,也可以將需要寫(xiě)入鏡像文件的數(shù)據(jù)進(jìn)行分段后,將每段數(shù)據(jù)存儲(chǔ)到查找的至少一段連續(xù)的空存儲(chǔ)塊中。
      [0080]較佳地,在步驟100中,所述確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,包括:
      [0081]若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將每一段的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。
      [0082]本發(fā)明實(shí)施例若需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度不大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。
      [0083]例如:需要將78M的數(shù)據(jù)寫(xiě)入ext4鏡像文件,此時(shí)的預(yù)定門(mén)限值為20M,因此需要將此78M的數(shù)據(jù)分為四段,第一段為20M、第二段為20M、第三段為20M、第四段為18M,然后分別將該四段數(shù)據(jù)寫(xiě)入ext4鏡像文件中。
      [0084]又例如:需要將15M的數(shù)據(jù)寫(xiě)入ext4鏡像文件,此時(shí)的預(yù)定門(mén)限值為20M,因此不需要將此15M的數(shù)據(jù)進(jìn)行分段處理,直接將該段數(shù)據(jù)寫(xiě)入ext4鏡像文件中。
      [0085]本發(fā)明實(shí)施例根據(jù)需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中能夠查找到一段連續(xù)的空存儲(chǔ)塊用于存儲(chǔ)該數(shù)據(jù),或者在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中能夠查找到至少一段連續(xù)的空存儲(chǔ)塊用于存儲(chǔ)該數(shù)據(jù)。
      [0086]較佳地,在步驟101中,所述根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊,包括:
      [0087]根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù);
      [0088]如果有,則將所述一段連續(xù)的空存儲(chǔ)塊作為查找到的一段連續(xù)的空存儲(chǔ)塊;
      [0089]否則,查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩段連續(xù)的空存儲(chǔ)塊。
      [0090]本發(fā)明實(shí)施例根據(jù)鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的存儲(chǔ)塊的存儲(chǔ)位置,依次查找至少一段連續(xù)的空存儲(chǔ)塊,并且依次命名為第一段連續(xù)的空存儲(chǔ)塊、第二段連續(xù)的空存儲(chǔ)塊……第N段連續(xù)的空存儲(chǔ)塊,其中,N為大于I的整數(shù)。
      [0091]具體的根據(jù)確定的需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,判斷鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)該數(shù)據(jù)的方式為:
      [0092]較佳地,所述根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),包括:
      [0093]將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,判斷存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),如果存儲(chǔ)塊組能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則將所述存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊;
      [0094]如果存儲(chǔ)塊組不能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),判斷與所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是空存儲(chǔ)塊,則將所述下一個(gè)存儲(chǔ)塊加入到所述存儲(chǔ)塊組中,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟;
      [0095]如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊不是空存儲(chǔ)塊,則將后續(xù)的兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟,直到找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值;
      [0096]如果找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值,且未查找到能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的一個(gè)存儲(chǔ)塊組,則查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組;
      [0097]如果找到的所有存儲(chǔ)塊組組合在一起無(wú)法存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則增加所述閾值,并返回將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組的步驟。
      [0098]例如:在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找至少一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)時(shí),首先將找到的存儲(chǔ)塊組的數(shù)量的設(shè)定閾值設(shè)置為200。當(dāng)在查找到的200個(gè)存儲(chǔ)塊組并沒(méi)有一個(gè)存儲(chǔ)塊組能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù),且所有200個(gè)存儲(chǔ)塊組組合在一起也不能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)時(shí),將找到的存儲(chǔ)塊組的數(shù)量的設(shè)定閾值設(shè)置為400。若所有400個(gè)存儲(chǔ)塊組組合在一起還不能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù),依次增加設(shè)定閾值的數(shù)量,直到整個(gè)鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的空存儲(chǔ)塊都被查找過(guò)為止。
      [0099]如圖2所示,為本發(fā)明實(shí)施例提供的鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域,從圖2中可知,該存儲(chǔ)區(qū)域上有12個(gè)block(塊),block號(hào)分別為第O號(hào)至第11號(hào),第2號(hào)、第7號(hào)和第11號(hào)block上存儲(chǔ)有數(shù)據(jù),其余的block是空的。
      [0100]又例如:需要寫(xiě)入鏡像文件的數(shù)據(jù)總共需要3個(gè)block,從圖2中的存儲(chǔ)區(qū)域上查找到兩個(gè)連續(xù)的空block為第O號(hào)block和第I號(hào)block,將其作為一個(gè)存儲(chǔ)塊組,此時(shí)一共有2個(gè)空block,但不能存儲(chǔ)需要3個(gè)block的數(shù)據(jù);進(jìn)而判斷與第I號(hào)block相鄰的下一個(gè)block(第2號(hào)block)是否是空block,經(jīng)判斷下一個(gè)block(第2號(hào)block)不是空block,將該存儲(chǔ)塊組作為一段連續(xù)的空block,但是該段連續(xù)的空block并不能存儲(chǔ)需要3個(gè)block的數(shù)據(jù);繼續(xù)從圖2中的存儲(chǔ)區(qū)域上查找到另外兩個(gè)連續(xù)的空block為第3號(hào)block和第4號(hào)block,并且米用上述方法查找到第3號(hào)block至第5號(hào)block的一段連續(xù)的空block,該段連續(xù)的空block能夠存儲(chǔ)需要3個(gè)block的數(shù)據(jù),查找成功。
      [0101]又例如:需要寫(xiě)入鏡像文件的數(shù)據(jù)總共需要6個(gè)block,從圖2中的存儲(chǔ)區(qū)域上查找到兩個(gè)連續(xù)的空block為第O號(hào)block和第I號(hào)block,將其作為一個(gè)存儲(chǔ)塊組,此時(shí)一共有2個(gè)空block,但不能存儲(chǔ)需要6個(gè)block的數(shù)據(jù);進(jìn)而判斷與第I號(hào)block相鄰的下一個(gè)block(第2號(hào)block)是否是空block,經(jīng)判斷下一個(gè)block(第2號(hào)block)不是空block,將該存儲(chǔ)塊組作為一段連續(xù)的空block,但是該段連續(xù)的空block并不能存儲(chǔ)需要6個(gè)block的數(shù)據(jù);繼續(xù)從圖2中的存儲(chǔ)區(qū)域上查找到另外兩個(gè)連續(xù)的空block為第3號(hào)block和第4號(hào)block,并且米用上述方法查找到第3號(hào)block至第6號(hào)block的一段連續(xù)的空block,該段連續(xù)的空block并不能夠存儲(chǔ)需要6個(gè)block的數(shù)據(jù);繼續(xù)從圖2中的存儲(chǔ)區(qū)域上查找到另外兩個(gè)連續(xù)的空block為第8號(hào)block和第9號(hào)block,并且采用上述方法查找到第8號(hào)block至第10號(hào)block的一段連續(xù)的空block,該段連續(xù)的空block不能夠存儲(chǔ)需要6個(gè)block的數(shù)據(jù),查找不成功。
      [0102]本發(fā)明實(shí)施例當(dāng)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找不到能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)的一段連續(xù)的空存儲(chǔ)塊時(shí),會(huì)將至少兩段連續(xù)的空存儲(chǔ)塊用于存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)。
      [0103]具體的從鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找到能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組的方式為:
      [0104]較佳地,所述查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組,包括:
      [0105]確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù);
      [0106]根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組。
      [0107]具體的根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組,可以采用如下方式去實(shí)現(xiàn):
      [0108]較佳地,所述根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組,包括:
      [0109]從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組;
      [0110]其中,查找到的前N個(gè)存儲(chǔ)塊組不小于所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,N為大于I的正整數(shù)。
      [0111]具體的從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組,可以采用如下方式:
      [0112]方式一:
      [0113]將所有存儲(chǔ)塊組的塊數(shù)按照從大到小的順序進(jìn)行排序;
      [0114]順序選擇至少兩個(gè)存儲(chǔ)塊組,其中,順序選擇的所述至少兩個(gè)存儲(chǔ)塊組不小于需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;
      [0115]當(dāng)順序選擇的所述至少兩個(gè)存儲(chǔ)塊組大于需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度時(shí),從塊數(shù)最小的一個(gè)存儲(chǔ)塊組中,選擇前N個(gè)連續(xù)的空存儲(chǔ)塊對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),并且此時(shí)數(shù)據(jù)剛好存儲(chǔ)完,其中,N為不小于I的整數(shù)。
      [0116]例如:需要寫(xiě)入鏡像文件的數(shù)據(jù)總共需要6個(gè)block,從圖2中的存儲(chǔ)區(qū)域上查找到三個(gè)存儲(chǔ)塊組,第一個(gè)存儲(chǔ)塊組的空block為:第O號(hào)block至第I號(hào)block、空block總數(shù)為2,第二個(gè)存儲(chǔ)塊組的空block為:第3號(hào)block至第6號(hào)block、空block總數(shù)為4,第三個(gè)存儲(chǔ)塊組的空block為:第8號(hào)block至第10號(hào)block、空block總數(shù)為3 ;上述三個(gè)存儲(chǔ)塊組都不能夠存儲(chǔ)需要6個(gè)block的數(shù)據(jù);將該三個(gè)存儲(chǔ)塊組按照空block總數(shù)從大到小進(jìn)行排序,排序順序?yàn)?第二個(gè)存儲(chǔ)塊組、第三個(gè)存儲(chǔ)塊組、第一個(gè)存儲(chǔ)塊組;將第二個(gè)存儲(chǔ)塊組和第三個(gè)存儲(chǔ)塊組用于存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù),但是由于此時(shí)需要寫(xiě)入鏡像文件的數(shù)據(jù)總共需要6個(gè)block,而第二個(gè)存儲(chǔ)塊組和第三個(gè)存儲(chǔ)塊組的總空block數(shù)為7,因而將第三個(gè)存儲(chǔ)塊組中的第8號(hào)block和第9號(hào)block用于存儲(chǔ)數(shù)據(jù)即可。
      [0117]方式二:
      [0118]將所有存儲(chǔ)塊組的塊數(shù)按照從大到小的順序進(jìn)行排序;
      [0119]順序選擇至少兩個(gè)存儲(chǔ)塊組,其中,順序選擇的所述至少兩個(gè)存儲(chǔ)塊組不小于需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;
      [0120]當(dāng)順序選擇的所述至少兩個(gè)存儲(chǔ)塊組大于需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度時(shí),不使用塊數(shù)最小的一個(gè)存儲(chǔ)塊組存儲(chǔ)數(shù)據(jù),繼續(xù)在剩余的多個(gè)存儲(chǔ)塊組中選擇一個(gè)存儲(chǔ)塊組,此時(shí)數(shù)據(jù)能存儲(chǔ)完,并且該存儲(chǔ)塊組能被全部使用或剩余最少的空存儲(chǔ)塊。
      [0121]例如:需要寫(xiě)入鏡像文件的數(shù)據(jù)總共需要6個(gè)block,從圖2中的存儲(chǔ)區(qū)域上查找到三個(gè)存儲(chǔ)塊組,第一個(gè)存儲(chǔ)塊組的空block為:第O號(hào)block至第I號(hào)block、空block總數(shù)為2,第二個(gè)存儲(chǔ)塊組的空block為:第3號(hào)block至第6號(hào)block、空block總數(shù)為4,第三個(gè)存儲(chǔ)塊組的空block為:第8號(hào)block至第10號(hào)block、空block總數(shù)為3 ;上述三個(gè)存儲(chǔ)塊組的空block都不能夠存儲(chǔ)需要6個(gè)block的數(shù)據(jù);將該三個(gè)存儲(chǔ)塊組按照空block總數(shù)從大到小進(jìn)行排序,排序順序?yàn)?第二個(gè)存儲(chǔ)塊組、第三個(gè)存儲(chǔ)塊組、第一個(gè)存儲(chǔ)塊組;將第二個(gè)存儲(chǔ)塊組和第三個(gè)存儲(chǔ)塊組用于存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù),但是由于此時(shí)需要寫(xiě)入鏡像文件的數(shù)據(jù)總共需要6個(gè)block,而第二個(gè)存儲(chǔ)塊組和第三個(gè)存儲(chǔ)塊組的總空block數(shù)為7,因而不再使用第三個(gè)存儲(chǔ)塊組進(jìn)行存儲(chǔ)數(shù)據(jù),使用第一個(gè)存儲(chǔ)塊組和第二個(gè)存儲(chǔ)塊組進(jìn)行存儲(chǔ)數(shù)據(jù),此時(shí)第一個(gè)存儲(chǔ)塊組和第二個(gè)存儲(chǔ)塊組的總空block數(shù)為6。
      [0122]如圖3所示,本發(fā)明實(shí)施例提供的一種在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找至少一段連續(xù)的空存儲(chǔ)塊的方法包括:
      [0123]步驟300、根據(jù)需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度確定需要的空存儲(chǔ)塊總數(shù)N,其中N是大于I的整數(shù)。
      [0124]步驟301、根據(jù)鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中空存儲(chǔ)塊的存儲(chǔ)位置查找到兩個(gè)連續(xù)的空存儲(chǔ)塊,將其作為存儲(chǔ)塊組。
      [0125]步驟302、判斷總數(shù)N是否等于存儲(chǔ)塊組的空存儲(chǔ)塊總數(shù),若是,則執(zhí)行步驟306;若否,則執(zhí)行步驟303。
      [0126]步驟303、判斷與存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,若是,則執(zhí)行步驟304 ;若否,則執(zhí)行步驟305。
      [0127]步驟304、將與存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊加入存儲(chǔ)塊組中,執(zhí)行步驟302。
      [0128]步驟305、判斷找到的存儲(chǔ)塊組的數(shù)量是否已達(dá)到設(shè)定閾值,若是,則執(zhí)行步驟308 ;若否,則執(zhí)行步驟307。
      [0129]步驟306、將該存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊,執(zhí)行步驟313。
      [0130]步驟307、根據(jù)鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中空存儲(chǔ)塊的存儲(chǔ)位置查找到另外兩個(gè)連續(xù)的空存儲(chǔ)塊,將其作為存儲(chǔ)塊組,執(zhí)行步驟302。
      [0131]步驟308、確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù)。
      [0132]步驟309、根據(jù)每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找至少兩個(gè)存儲(chǔ)塊組。
      [0133]步驟310、判斷總數(shù)N是否等于至少兩個(gè)存儲(chǔ)塊組的總塊數(shù),若是,則執(zhí)行步驟311 ;若否,則執(zhí)行步驟312。
      [0134]在步驟310中,當(dāng)已查找的所有存儲(chǔ)塊組的空存儲(chǔ)塊加起來(lái)都不能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)時(shí),增大設(shè)定閾值,在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中查找更多的存儲(chǔ)塊組。
      [0135]步驟311、將上述至少兩個(gè)存儲(chǔ)塊組中的空存儲(chǔ)塊作為至少兩段連續(xù)的空存儲(chǔ)塊,執(zhí)行步驟313。
      [0136]步驟312、判斷鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的空存儲(chǔ)塊是否都加入過(guò)存儲(chǔ)塊組,若是,執(zhí)行步驟315 ;若否,則執(zhí)行步驟314。
      [0137]步驟313、查找成功,執(zhí)行步驟316。
      [0138]步驟314、增加設(shè)定閾值,執(zhí)行步驟307。
      [0139]步驟315、查找失敗,執(zhí)行步驟316。
      [0140]步驟316、結(jié)束本流程。
      [0141]本發(fā)明實(shí)施例在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找到至少一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)需要寫(xiě)入鏡像文件的數(shù)據(jù)后,將該數(shù)據(jù)存儲(chǔ)到查找到的至少一段連續(xù)的空存儲(chǔ)塊中。具體的存儲(chǔ)方式可以采用如圖4所示的本發(fā)明實(shí)施例提供的ext2/ext3的間接塊映射存儲(chǔ)方式,也可以采用如圖5所示的本發(fā)明實(shí)施例提供的ext4的extent tree映射存儲(chǔ)方式。其中,圖4和圖5分別表示ext2/ext3的inode (索引)表的i_block結(jié)構(gòu)、ext4的inode表的i_block結(jié)構(gòu),兩種存儲(chǔ)方式存在明顯的差異,采用extent tree (區(qū)段樹(shù))映射存儲(chǔ)方式比采用間接塊映射方式,對(duì)文件的讀寫(xiě)效率高,原因在于:采用間接塊映射方式時(shí),只能一個(gè)block—個(gè)block的讀數(shù)據(jù)或?qū)憯?shù)據(jù),讀寫(xiě)次數(shù)較多;而采用extent tree映射存儲(chǔ)方式,每次可以一個(gè)區(qū)段(一個(gè)區(qū)段包含多個(gè)block) —個(gè)區(qū)段的讀數(shù)據(jù)或?qū)憯?shù)據(jù),讀寫(xiě)次數(shù)較少。雖然兩種存儲(chǔ)方式存在較大的差異,但是ext2/eXt3和ext4的磁盤(pán)布局是相同的,具體的ext2/ext3/ext4的磁盤(pán)布局可以參見(jiàn)圖6 (本發(fā)明實(shí)施例提供的ext2/ext3/ext4的磁盤(pán)布局示意圖),ext4能兼容ext2/ext3,需要特別說(shuō)明的是ext4的超級(jí)塊、塊組描述符、inode表等結(jié)構(gòu)的細(xì)節(jié)與ext2/ext3不同,尤其是inode表引入了 extenttree存儲(chǔ)方式。
      [0142]從圖5中可知,inode下存儲(chǔ)了一個(gè)Extent-Header (區(qū)段頭)和一個(gè)Extent-1ndex (區(qū)段索引),Extent-Header里至少存在如下信息:樹(shù)的層數(shù)信息(三層)、與 Extent-Header 緊鄰的是 Extent-1ndex 的信息、一共有一個(gè) Extent-1ndex 與Extent-Header緊鄰的信息;inode里的Extent-1ndex里面存放了一個(gè)指向block的地址,該地址對(duì)應(yīng)的block為樹(shù)的第一層,并且該block里面存儲(chǔ)了一個(gè)Extent-Header和兩個(gè)Extent-1ndexJt^f Extent-Header中樹(shù)的層數(shù)信息為兩層;樹(shù)的第一層中的第一個(gè)Extent-1ndex里面仍然存放了一個(gè)指向block的地址,該地址對(duì)應(yīng)的block為樹(shù)的第二層,并且該block里面存儲(chǔ)了一個(gè)Extent-Header和兩個(gè)Extent (區(qū)段),此時(shí)Extent-Header中樹(shù)的層數(shù)信息為一層;樹(shù)的第二層中的第一個(gè)Extent里面存儲(chǔ)了一個(gè)指向block的地址(地址為2)和block總數(shù)(總數(shù)為四),該地址對(duì)應(yīng)的block為樹(shù)的第三層,并且該block里面存儲(chǔ)的是數(shù)據(jù),根據(jù)block的地址和block總數(shù)能知道該段數(shù)據(jù)的起始地址和結(jié)束地址,圖5中構(gòu)成樹(shù)的其它block與上述block的存儲(chǔ)內(nèi)容和作用類(lèi)似,不再贅述。
      [0143]較佳地,若所述鏡像文件為ext4鏡像文件,則所述查找至少一段連續(xù)的空存儲(chǔ)塊之后,還包括:
      [0144]根據(jù)查找到的至少一段連續(xù)的空存儲(chǔ)塊,生成一個(gè)用于索引所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的extent tree信息,并將所述extent tree信息置于所述ext4鏡像文件中的所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的索引表中。
      [0145]例如:需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)總共需要6個(gè)block,從圖2中查找到三段連續(xù)的空block,每一段稱(chēng)為一個(gè)Extent ;將第一段連續(xù)的空block和第二段連續(xù)的空block用于存儲(chǔ)需要寫(xiě)入ext4鏡像文件的數(shù)據(jù),此時(shí)一共需要兩個(gè)Extent,在構(gòu)造extent tree時(shí),將一個(gè)Extent-Header和兩個(gè)Extent存儲(chǔ)在inode中,其中,Extent-Header中樹(shù)的層數(shù)信息為一層,與Extent-Header緊鄰的是Extent、一共有兩個(gè)Extent與Extent-Header緊鄰,inode中的第一個(gè)Extent里面存儲(chǔ)了一個(gè)指向block的地址(地址為3)和block總數(shù)(總數(shù)為四),inode中的第二個(gè)Extent里面存儲(chǔ)了一個(gè)指向block的地址(地址為O)和block總數(shù)(總數(shù)為二 );將需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)存儲(chǔ)到extent tree的第一層中的block中,具體的數(shù)據(jù)存儲(chǔ)方式可以參見(jiàn)圖7 (本發(fā)明實(shí)施例提供的將需要6個(gè)block的數(shù)據(jù)以extent tree的形式進(jìn)行存儲(chǔ)的示意圖)。
      [0146]如圖8所示,本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入ext4鏡像文件的方法包括:
      [0147]步驟800、打開(kāi)ext4鏡像文件。
      [0148]步驟801、獲取ext4鏡像文件的文件系統(tǒng)信息。
      [0149]步驟802、遍歷所有文件的目錄項(xiàng),判斷是否存在與需要寫(xiě)入的文件相同的文件名,若是,則執(zhí)行步驟803 ;若否,則執(zhí)行步驟804。
      [0150]步驟803、刪除該文件。
      [0151]本發(fā)明實(shí)施例刪除文件時(shí),會(huì)將該文件的目錄項(xiàng)、索引表、文件數(shù)據(jù)等全部刪除,并且會(huì)更新整個(gè)ext4鏡像文件的文件系統(tǒng)信息,包括:塊位圖、索引位圖以及超級(jí)塊等。
      [0152]步驟804、判斷ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的剩余存儲(chǔ)空間是否足夠?qū)懭胄枰獙?xiě)入的文件,若是,則執(zhí)行步驟805 ;若否,則執(zhí)行步驟817。
      [0153]步驟805、創(chuàng)建需要寫(xiě)入的文件的基本信息,如目錄項(xiàng)、索引表等。
      [0154]步驟806、讀取需要寫(xiě)入的文件,判斷該文件的大小是否超過(guò)設(shè)定門(mén)限值,若是,則執(zhí)行步驟807 ;若否,則執(zhí)行步驟813。
      [0155]步驟807、將需要寫(xiě)入的文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入的數(shù)據(jù)段。
      [0156]步驟808、針對(duì)一個(gè)需要寫(xiě)入的數(shù)據(jù)段,在ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊。
      [0157]步驟809、將查找到的至少一段連續(xù)的空存儲(chǔ)塊生成extent tree。
      [0158]步驟810、將extent tree寫(xiě)入需要寫(xiě)入的文件的索引表中。
      [0159]步驟811、將需要寫(xiě)入的數(shù)據(jù)段寫(xiě)入到ext4鏡像文件中。
      [0160]步驟812、判斷是否還有下一個(gè)需要寫(xiě)入的數(shù)據(jù)段,若是,則執(zhí)行步驟808;若否,則執(zhí)行步驟817。
      [0161]步驟813、在ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊。
      [0162]步驟814、將查找到的至少一段連續(xù)的空存儲(chǔ)塊生成extent tree。
      [0163]步驟815、將extent tree寫(xiě)入需要寫(xiě)入的文件的索引表中。
      [0164]步驟816、將需要寫(xiě)入的文件寫(xiě)入到ext4鏡像文件中。
      [0165]步驟817、關(guān)閉ext4鏡像文件。
      [0166]在步驟817中,若ext4鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的剩余存儲(chǔ)空間不足以寫(xiě)入該文件,本發(fā)明實(shí)施例一種較佳地關(guān)閉ext4鏡像文件的方式為:在關(guān)閉ext4鏡像文件之前,將步驟803中刪除的文件恢復(fù)到ext4鏡像文件中,然后關(guān)閉ext4鏡像文件。
      [0167]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種將數(shù)據(jù)寫(xiě)入鏡像文件的設(shè)備,由于圖9的將數(shù)據(jù)寫(xiě)入鏡像文件的設(shè)備對(duì)應(yīng)的方法為本發(fā)明實(shí)施例一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法,因此本發(fā)明實(shí)施例設(shè)備的實(shí)施可以參見(jiàn)系統(tǒng)的實(shí)施,重復(fù)之處不再贅述。
      [0168]如圖9所示,本發(fā)明實(shí)施例提供的一種將數(shù)據(jù)寫(xiě)入鏡像文件的設(shè)備包括:
      [0169]長(zhǎng)度確定模塊900,用于確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;
      [0170]查找模塊901,用于若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;
      [0171]存儲(chǔ)模塊902,用于將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。
      [0172]較佳地,所述長(zhǎng)度確定模塊900具體用于:
      [0173]若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將每一段的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。
      [0174]較佳地,所述查找模塊901具體用于:
      [0175]根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù);
      [0176]如果有,則將所述一段連續(xù)的空存儲(chǔ)塊作為查找到的一段連續(xù)的空存儲(chǔ)塊;
      [0177]否則,查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩段連續(xù)的空存儲(chǔ)塊。
      [0178]較佳地,所述查找模塊901具體用于:
      [0179]將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,判斷存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),如果存儲(chǔ)塊組能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則將所述存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊;
      [0180]如果存儲(chǔ)塊組不能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),判斷與所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是空存儲(chǔ)塊,則將所述下一個(gè)存儲(chǔ)塊加入到所述存儲(chǔ)塊組中,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟;
      [0181]如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊不是空存儲(chǔ)塊,則將后續(xù)的兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟,直到找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值;
      [0182]如果找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值,且未查找到能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的一個(gè)存儲(chǔ)塊組,則查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組;
      [0183]如果找到的所有存儲(chǔ)塊組組合在一起無(wú)法存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則增加所述閾值,并返回將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組的步驟。
      [0184]較佳地,所述查找模塊901具體用于:
      [0185]確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù);
      [0186]根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組。
      [0187]較佳地,所述查找模塊901具體用于:
      [0188]從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組;
      [0189]其中,查找到的前N個(gè)存儲(chǔ)塊組不小于所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,N為大于I的正整數(shù)。
      [0190]較佳地,若所述鏡像文件為ext4鏡像文件,則所述查找模塊901還用于:
      [0191]根據(jù)查找到的至少一段連續(xù)的空存儲(chǔ)塊,生成一個(gè)用于索引所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的extent tree信息,并將所述extent tree信息置于所述ext4鏡像文件中的所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的索引表中。
      [0192]從上述內(nèi)容可以看出:本發(fā)明實(shí)施例確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度;若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊;將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。由于本發(fā)明實(shí)施例將需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)在鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中的至少一段連續(xù)的空存儲(chǔ)塊中,以便于數(shù)據(jù)的寫(xiě)入與讀出操作,提高了對(duì)存儲(chǔ)容量大的鏡像文件的讀寫(xiě)效率。
      [0193]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
      [0194]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
      [0195]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
      [0196]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
      [0197]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
      [0198]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
      【主權(quán)項(xiàng)】
      1.一種將數(shù)據(jù)寫(xiě)入鏡像文件的方法,其特征在于,該方法包括: 確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度; 若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊; 將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。2.如權(quán)利要求1所述的方法,其特征在于,所述確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,包括: 若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將每一段的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。3.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊,包括: 根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù); 如果有,則將所述一段連續(xù)的空存儲(chǔ)塊作為查找到的一段連續(xù)的空存儲(chǔ)塊; 否則,查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩段連續(xù)的空存儲(chǔ)塊。4.如權(quán)利要求3所述的方法,其特征在于,所述根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),包括: 將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,判斷存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),如果存儲(chǔ)塊組能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則將所述存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊; 如果存儲(chǔ)塊組不能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),判斷與所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是空存儲(chǔ)塊,則將所述下一個(gè)存儲(chǔ)塊加入到所述存儲(chǔ)塊組中,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟; 如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊不是空存儲(chǔ)塊,則將后續(xù)的兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟,直到找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值; 如果找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值,且未查找到能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的一個(gè)存儲(chǔ)塊組,則查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組; 如果找到的所有存儲(chǔ)塊組組合在一起無(wú)法存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則增加所述閾值,并返回將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組的步驟。5.如權(quán)利要求4所述的方法,其特征在于,所述查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組,包括: 確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù); 根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組。6.如權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組,包括: 從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組; 其中,查找到的前N個(gè)存儲(chǔ)塊組不小于所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,N為大于I的正整數(shù)。7.如權(quán)利要求1所述的方法,其特征在于,若所述鏡像文件為第四代擴(kuò)展文件系統(tǒng)ext4鏡像文件,則所述查找至少一段連續(xù)的空存儲(chǔ)塊之后,還包括: 根據(jù)查找到的至少一段連續(xù)的空存儲(chǔ)塊,生成一個(gè)用于索引所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的區(qū)段樹(shù)extent tree信息,并將所述extent tree信息置于所述ext4鏡像文件中的所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的索引表中。8.一種將數(shù)據(jù)寫(xiě)入鏡像文件的設(shè)備,其特征在于,該設(shè)備包括: 長(zhǎng)度確定模塊,用于確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度; 查找模塊,用于若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于一個(gè)存儲(chǔ)塊,根據(jù)確定的所述長(zhǎng)度,在所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中,查找至少一段連續(xù)的空存儲(chǔ)塊; 存儲(chǔ)模塊,用于將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)存儲(chǔ)到查找的所述至少一段連續(xù)的空存儲(chǔ)塊中。9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述長(zhǎng)度確定模塊具體用于: 若所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度大于預(yù)定門(mén)限值,將所述需要寫(xiě)入鏡像文件的數(shù)據(jù)按照設(shè)定長(zhǎng)度進(jìn)行分段,將每一段分別作為需要寫(xiě)入鏡像文件的數(shù)據(jù),以及將每一段的長(zhǎng)度作為確定需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度。10.如權(quán)利要求8所述的設(shè)備,其特征在于,所述查找模塊具體用于: 根據(jù)確定的所述長(zhǎng)度,判斷所述鏡像文件對(duì)應(yīng)的存儲(chǔ)區(qū)域中是否有一段連續(xù)的空存儲(chǔ)塊能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù); 如果有,則將所述一段連續(xù)的空存儲(chǔ)塊作為查找到的一段連續(xù)的空存儲(chǔ)塊; 否則,查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩段連續(xù)的空存儲(chǔ)塊。11.如權(quán)利要求10所述的設(shè)備,其特征在于,所述查找模塊具體用于: 將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,判斷存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),如果存儲(chǔ)塊組能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則將所述存儲(chǔ)塊組中的空存儲(chǔ)塊作為一段連續(xù)的空存儲(chǔ)塊; 如果存儲(chǔ)塊組不能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),判斷與所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是否是空存儲(chǔ)塊,如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊是空存儲(chǔ)塊,則將所述下一個(gè)存儲(chǔ)塊加入到所述存儲(chǔ)塊組中,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟; 如果所述存儲(chǔ)塊組中的空存儲(chǔ)塊相鄰的下一個(gè)存儲(chǔ)塊不是空存儲(chǔ)塊,則將后續(xù)的兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組,并返回判斷所述存儲(chǔ)塊組是否能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的步驟,直到找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值; 如果找到的存儲(chǔ)塊組的組數(shù)達(dá)到設(shè)定閾值,且未查找到能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的一個(gè)存儲(chǔ)塊組,則查找能夠存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的至少兩個(gè)存儲(chǔ)塊組; 如果找到的所有存儲(chǔ)塊組組合在一起無(wú)法存儲(chǔ)所述需要寫(xiě)入鏡像文件的數(shù)據(jù),則增加所述閾值,并返回將兩個(gè)連續(xù)的空存儲(chǔ)塊作為存儲(chǔ)塊組的步驟。12.如權(quán)利要求11所述的設(shè)備,其特征在于,所述查找模塊具體用于: 確定已查找到的所有存儲(chǔ)塊組中每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù); 根據(jù)所述每個(gè)存儲(chǔ)塊組中空存儲(chǔ)塊的塊數(shù),從已查找到的所有存儲(chǔ)塊組中查找與所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度匹配的至少兩個(gè)存儲(chǔ)塊組。13.如權(quán)利要求12所述的設(shè)備,其特征在于,所述查找模塊具體用于: 從已查找到的所有存儲(chǔ)塊組中查找塊數(shù)最大的前N個(gè)存儲(chǔ)塊組; 其中,查找到的前N個(gè)存儲(chǔ)塊組不小于所述需要寫(xiě)入鏡像文件的數(shù)據(jù)的長(zhǎng)度,N為大于I的正整數(shù)。14.如權(quán)利要求8所述的設(shè)備,其特征在于,若所述鏡像文件為第四代擴(kuò)展文件系統(tǒng)ext4鏡像文件,則所述查找模塊還用于: 根據(jù)查找到的至少一段連續(xù)的空存儲(chǔ)塊,生成一個(gè)用于索引所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的區(qū)段樹(shù)extent tree信息,并將所述extent tree信息置于所述ext4鏡像文件中的所述需要寫(xiě)入ext4鏡像文件的數(shù)據(jù)對(duì)應(yīng)的索引表中。
      【文檔編號(hào)】G06F17/30GK105989008SQ201510042313
      【公開(kāi)日】2016年10月5日
      【申請(qǐng)日】2015年1月27日
      【發(fā)明人】楊敏, 李國(guó)斌
      【申請(qǐng)人】炬芯(珠海)科技有限公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1