欧美午夜精品免费观看_中文字幕人妻无码视频1页_免费精品不卡在线播放_在线女同免费观看网站_“内射”的搜索结果_日韩欧美亚洲每日更新在线观看_森川安娜无码视频播放_无码av毛片一区二区

  • WAP手機(jī)版 加入收藏  設(shè)為首頁(yè)
硬盤恢復(fù)

虛擬硬盤:VHDX解析

時(shí)間:2017/12/26 15:57:58   作者:成都數(shù)據(jù)恢復(fù)中心   來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載   閱讀:5516   評(píng)論:0
內(nèi)容摘要:虛擬硬盤是虛擬化的關(guān)鍵。當(dāng)一個(gè)服務(wù)器通電時(shí),每個(gè)虛擬機(jī)加載到服務(wù)器內(nèi)存并從其相應(yīng)的VHDX文件啟動(dòng)。隨著虛擬機(jī)的運(yùn)行,VHDX文件可通過更新來(lái)反映數(shù)據(jù)或狀態(tài)改變。本質(zhì)上來(lái)說,虛擬磁盤就是放在物理硬盤上的一個(gè)單獨(dú)的文件。虛擬磁盤文件的目的是捕獲駐留在服務(wù)器內(nèi)存的虛擬機(jī)的完整狀態(tài),并...

虛擬硬盤是虛擬化的關(guān)鍵。當(dāng)一個(gè)服務(wù)器通電時(shí),每個(gè)虛擬機(jī)加載到服務(wù)器內(nèi)存并從其相應(yīng)的VHDX文件啟動(dòng)。隨著虛擬機(jī)的運(yùn)行,VHDX文件可通過更新來(lái)反映數(shù)據(jù)或狀態(tài)改變。本質(zhì)上來(lái)說,虛擬磁盤就是放在物理硬盤上的一個(gè)單獨(dú)的文件。虛擬磁盤文件的目的是捕獲駐留在服務(wù)器內(nèi)存的虛擬機(jī)的完整狀態(tài),并將信息以一個(gè)已明確的磁盤文件格式顯示出來(lái)。下面我們來(lái)說說虛擬硬盤VHDX的技術(shù)實(shí)現(xiàn)。

在前面的文章中曾經(jīng)描述了VHD虛擬硬盤的文件格式以及尋址等技術(shù),在本文下面部分將描述VHD虛擬硬盤的升級(jí)版本VHDX的文件格式以及尋址等技術(shù)。在VHDX虛擬硬盤中,也存在著和VHD虛擬硬盤同樣的是三種類型:固定、動(dòng)態(tài)以及差異。但是與VHD虛擬硬盤所不同的是,VHDX虛擬硬盤針對(duì)這三種類型的格式都是統(tǒng)一的格式架構(gòu)。

首先我們介紹下VHDX的一些基本的信息:VHDX格式功能在操作系統(tǒng)的硬盤系統(tǒng)層以及操作系統(tǒng)的文件系統(tǒng)層提供,并經(jīng)過優(yōu)化,可與現(xiàn)代存儲(chǔ)硬件配置配合使用。在操作系統(tǒng)的硬盤系統(tǒng)層,VHDX能夠支持虛擬磁盤的大小高達(dá)64TB,以前的VHD只支持到2TB;支持的邏輯扇區(qū)大小高達(dá)4 KB,有助于將4 KB物理磁盤扇區(qū)轉(zhuǎn)換為虛擬磁盤,并支持高達(dá)256 MB的虛擬磁盤的大數(shù)據(jù)塊,使得我們可以調(diào)整數(shù)據(jù)塊大小并與應(yīng)用程序或系統(tǒng)的IO模式相匹配,也就是說,相比VHD,VHDX 提供更大的塊容量和扇區(qū)容量,可以提供更高的性能。在操作系統(tǒng)的文件系統(tǒng)層,VHDX使用日志記錄VHDX元數(shù)據(jù)結(jié)構(gòu)的更新,可避免因電源故障等損壞數(shù)據(jù),提供內(nèi)置的保護(hù)能力;元數(shù)據(jù)區(qū)設(shè)立用戶元數(shù)據(jù)區(qū),能夠存儲(chǔ)有關(guān)用戶的自定義元數(shù)據(jù)。同時(shí),VHDX 還改進(jìn)了虛擬硬盤的對(duì)齊方式,不但以此可以適應(yīng)新型物理磁盤,還可以改進(jìn)和優(yōu)化VHDX文件的大小。而且VHDX格式的設(shè)計(jì)還為今后做了考慮,微軟將來(lái)可以在此基礎(chǔ)上方便的引入其他功能,也允許其他第三方的解析器實(shí)現(xiàn)對(duì)VHDX文件的擴(kuò)展等等。

下面我們來(lái)看一下VHDX文件的架構(gòu):

與舊的VHD 格式相比,VHDX 的結(jié)構(gòu)有了較大的改變。下圖描述了VHDX 的邏輯布局架構(gòu)。

技術(shù)分享

從上圖我們可以看到,VHDX文件和VHD文件的結(jié)構(gòu)有很大的區(qū)別:

1)、VHDX 沒有VHD中的頁(yè)腳區(qū)域;

2)、增加了VHD所沒有的日志區(qū)域;

3)、增加了元數(shù)據(jù)區(qū)域,其內(nèi)設(shè)置了系統(tǒng)元數(shù)據(jù)區(qū)域和用戶元數(shù)據(jù)區(qū)域;

如果看這個(gè)比較抽象,那么我們看看VHDX文件的文件布局圖:

技術(shù)分享

如上圖所示,一個(gè)VHDX文件總體上可以由三個(gè)部分組成:

1、固定大小的頭部區(qū)域(1MB

2、非重疊的對(duì)象

3、自由空間

VHDX文件以固定1MB大小的頭部區(qū)域開頭。此后,非重疊對(duì)象和自由空間以任何特定順序自由組合唯一的限制是所有對(duì)象在文件中需要按照1 MB大小對(duì)齊。非重疊對(duì)象的意思就是當(dāng)前定義的這些對(duì)象:塊分配表(也稱為BAT),元數(shù)據(jù)區(qū)域,日志,有效載荷塊(數(shù)據(jù)塊)和扇區(qū)位圖塊。這些對(duì)象不能相互重疊,比如元數(shù)據(jù)區(qū)域和元數(shù)據(jù)區(qū)域之間不能連著在一起,只要對(duì)象不重疊并且保持MB對(duì)齊,就可以在文件中自由移動(dòng)對(duì)象。

技術(shù)分享

例如,其中一個(gè)VHDX文件:

技術(shù)分享

由上圖所示:VHDX文件的結(jié)構(gòu)由頭部、日志、塊分配表(也稱為BAT)、扇區(qū)位圖、數(shù)據(jù)塊(有效載荷塊)、自由空間、元數(shù)據(jù)區(qū)等這樣的結(jié)構(gòu)組成。在后面的部分,自由空間和這些對(duì)象進(jìn)行了自由組合。

下面將詳細(xì)講解這些組成對(duì)象:

1、首部區(qū)域



VHDX文件的頭部區(qū)域是虛擬硬盤上的第一個(gè)對(duì)象,是打開VHDX文件時(shí)首先檢查的結(jié)構(gòu)。頭部大小為1 MB,包含五個(gè)大小為64 KB的項(xiàng)目:文件類型標(biāo)識(shí)符,兩個(gè)標(biāo)頭和兩個(gè)區(qū)域表。

技術(shù)分享

其文件布局如下圖所示:

技術(shù)分享

1.1、文件類型標(biāo)識(shí)符



文件類型標(biāo)識(shí)符占64KB大小。包含一個(gè)簡(jiǎn)短的固定文件簽名和一個(gè)文件創(chuàng)建者字段,文件簽名字段必須為0x656C696678646876(“vhdxfile”為ASCII),用以將文件標(biāo)識(shí)為VHDX;文件創(chuàng)建者字段用于標(biāo)識(shí)VHDX文件的創(chuàng)建者。其結(jié)構(gòu)體如下圖所示:

技術(shù)分享

文件類型標(biāo)識(shí)符存儲(chǔ)在從VHDX文件偏移量為0開始的前64KB中。該區(qū)域不會(huì)被覆蓋,確保即使因?yàn)閷懭胧∑茐牧宋募纳葏^(qū),該文件仍然可以被識(shí)別為VHDX

文件簽名字段包含了描述文件類型是VHDX的一個(gè)UINT64結(jié)構(gòu)體。文件創(chuàng)建者字段包含描述創(chuàng)建VHDX文件的解析器的UTF-16字符串。此字段不能為空并且是可選的,如果沒有填入的情況下,默認(rèn)置零值。該字段是解析器在創(chuàng)建VHDX文件的時(shí)候,填充的一個(gè)唯一可以標(biāo)識(shí)VHDX文件創(chuàng)建者的字符。這個(gè)字段在目的是用于解析器在出現(xiàn)錯(cuò)誤的時(shí)候讀取該字段來(lái)進(jìn)行診斷問故障問題的,不會(huì)使用此字段影響解析器的行為。

解析器必須在創(chuàng)建文件時(shí)寫入文件類型標(biāo)識(shí)符結(jié)構(gòu),并且在加載VHDX文件時(shí)必須驗(yàn)證簽名字段。在創(chuàng)建文件后,解析器不能覆蓋文件的前64 KB中的任何數(shù)據(jù)。


1.2、標(biāo)頭(Headers)



每個(gè)標(biāo)頭占64KB大小,兩個(gè)頭部區(qū)域中的每一個(gè)標(biāo)頭都是相同的。一個(gè)標(biāo)頭存儲(chǔ)在偏移量為64 KB處開始的地方,另一個(gè)標(biāo)頭存儲(chǔ)在128 KB處開始的地方。標(biāo)頭的作用是用來(lái)定位日志的,因此無(wú)法通過日志對(duì)標(biāo)頭進(jìn)行更新。為了提供電源故障一致性保證,每個(gè)VHDX文件中都有兩個(gè)標(biāo)頭。

標(biāo)頭作為VHDX根數(shù)據(jù)結(jié)構(gòu)樹,提供版本信息,日志的位置和大小以及一些基本的文件元數(shù)據(jù)。其結(jié)構(gòu)體如下圖所示:

技術(shù)分享

如上圖,標(biāo)頭本身包含了簽名、校驗(yàn)和、序列號(hào)、文件寫入全局唯一標(biāo)識(shí)符、數(shù)據(jù)寫入全局唯一標(biāo)識(shí)符、日志全局唯一標(biāo)識(shí)符、日志版本、版本、日志長(zhǎng)度、日志偏移以及保留部分組成。除了標(biāo)識(shí)標(biāo)頭本身以及日志的信息外,標(biāo)頭本身還包含了基于本身HA機(jī)制的序列號(hào)和校驗(yàn)和等元數(shù)據(jù),這些數(shù)據(jù)只用于標(biāo)頭本身的高可用。上述我們說明了,頭部區(qū)域包含了兩個(gè)標(biāo)頭,因此在這里,頭部區(qū)域中每次只有一個(gè)標(biāo)頭處于活動(dòng)狀態(tài),另外一個(gè)標(biāo)頭處于待命狀態(tài)。這樣的機(jī)制可以使得VHDX的標(biāo)頭增加安全性,當(dāng)當(dāng)前使用的標(biāo)頭遭到破壞的時(shí)候,可以安全地使用或覆蓋另一個(gè)標(biāo)頭,從而保證VHDX文件不被破壞。因此在標(biāo)頭中,每個(gè)標(biāo)頭都額外包含了序列號(hào)和校驗(yàn)和來(lái)確保這種機(jī)制。

下面我們?cè)敿?xì)說明每個(gè)字段:

1)、簽名字段:簽名字段必須為0x64616568(“headASCII表示)。該字段標(biāo)識(shí)其為一個(gè)標(biāo)頭。

2)、校驗(yàn)和字段:校驗(yàn)和字段是一個(gè)CRC-32C哈希結(jié)構(gòu),是對(duì)4 KB為單位結(jié)構(gòu)利用CRC-32C哈希出來(lái)的值。該字段不為空,在計(jì)算校驗(yàn)和值期間取值為零。

3)、序列號(hào)字段:是一個(gè)64位無(wú)符號(hào)整數(shù)。如果簽名和校驗(yàn)和都正確驗(yàn)證,則表示標(biāo)頭是有效的。如果標(biāo)頭是有效的標(biāo)頭并且其序列號(hào)字段大于另一個(gè)標(biāo)頭的序列號(hào)字段,則該標(biāo)頭是處于活動(dòng)狀態(tài)的標(biāo)頭。解析器通過讀取序列號(hào)的值來(lái)確定使用當(dāng)前那個(gè)標(biāo)頭的數(shù)據(jù)。如果序列號(hào)值相同或者沒有值,則無(wú)法確定當(dāng)前的活動(dòng)標(biāo)頭,則解析器會(huì)認(rèn)為VHDX文件已損壞。

4)、文件寫入全局唯一標(biāo)識(shí)符字段:該字段指定一個(gè)128位全局唯一標(biāo)識(shí)符來(lái)標(biāo)識(shí)文件寫入的內(nèi)容。在每次打開VHDX文件時(shí),解析器必須在對(duì)文件進(jìn)行第一次修改之前將此全局唯一標(biāo)識(shí)符更改為新的全局唯一標(biāo)識(shí)符,包括系統(tǒng)和用戶元數(shù)據(jù)以及日志回收。如果存儲(chǔ)文件的存儲(chǔ)介質(zhì)為只讀,或者該文件在只讀模式下打開,解析器則會(huì)跳過此字段。

5)、數(shù)據(jù)寫入全局唯一標(biāo)識(shí)符字段:該字段指定一個(gè)128位的全局惟一標(biāo)識(shí)符來(lái)標(biāo)識(shí)用戶可見數(shù)據(jù)的內(nèi)容。在每次打開VHDX文件時(shí),解析器必須對(duì)用戶可見數(shù)據(jù)進(jìn)行第一次修改之前將此字段更改為新的全局唯一標(biāo)識(shí)符。如果虛擬磁盤的用戶通過讀取虛擬磁盤來(lái)進(jìn)行數(shù)據(jù)的更改,則解析器必須更新此字段。這包括更改系統(tǒng)和用戶元數(shù)據(jù),原始?jí)K數(shù)據(jù),磁盤大小或數(shù)據(jù)塊轉(zhuǎn)換的狀態(tài)。因?yàn)槿绻桓逻@個(gè)字段,將導(dǎo)致虛擬磁盤扇區(qū)讀取與先前讀取的數(shù)據(jù)不同,因?yàn)閿?shù)據(jù)已經(jīng)發(fā)送更改操作,可能新的數(shù)據(jù)塊已經(jīng)存儲(chǔ)到了別的地方。值得注意的是,這不包括文件中數(shù)據(jù)塊的移動(dòng),因?yàn)閿?shù)據(jù)塊的移動(dòng)僅僅是改變文件的物理布局,而不是虛擬磁盤的布局。數(shù)據(jù)寫入全局唯一標(biāo)識(shí)符字段用于差異VHDX鏈的完整性驗(yàn)證。解析器必須特別注意以確保它們按照所述進(jìn)行更新。

6)、日志全局唯一標(biāo)識(shí)符字段:該字段指定一個(gè)128位的唯一標(biāo)識(shí)符用于確定日志條目的有效性。如果此字段為零,則日志為空或沒有有效條目,不能使用日志進(jìn)行數(shù)據(jù)恢復(fù)。只有在標(biāo)頭中包含此標(biāo)識(shí)符的日志條目時(shí)才是有效的日志條目。打開時(shí),解析器必須在覆蓋日志區(qū)域中的現(xiàn)有空間之前將此字段更新為新的非零值。

7)、日志版本字段:該字段指定VHDX文件中使用的日志格式的版本。 此字段必須設(shè)置為零。 如果不是,解析器不能繼續(xù)解析文件,除非日志全局唯一標(biāo)識(shí)符字段為零,表示沒有要回放的日志。

8)、版本字段:該字段指定VHDX文件中使用的VHDX格式的版本。此字段必須設(shè)置為1。如果不是,解析器就不能使用此格式規(guī)范中的詳細(xì)信息來(lái)解析文件。

9)、日志長(zhǎng)度和偏移量字段:該字段指定文件中的字節(jié)偏移量和日志的長(zhǎng)度。這些值必須是1 MB的倍數(shù),而且日志偏移量必須至少1 MB大小。

10)、保留字段:保留字段定義了剩余的空間的區(qū)域地址信息。

上述就是處于頭部區(qū)域中標(biāo)頭的介紹部分。我們說在頭部區(qū)域中存在著兩個(gè)標(biāo)頭作為HA機(jī)制而存在,而且由于VHDX格式中固定、動(dòng)態(tài)以及差異都是同一種結(jié)構(gòu)。因此隨著數(shù)據(jù)的是變化,比如數(shù)據(jù)的動(dòng)態(tài)增加,其頭部區(qū)域的標(biāo)頭部分所記錄的鍵值也需要進(jìn)行隨時(shí)更新。下面我們來(lái)說說頭部區(qū)域中標(biāo)頭的更新機(jī)制。

在每次打開VHDX文件并允許寫入VHDX文件時(shí),必須在修改文件的之前(文件的任何部分)更新標(biāo)頭。同時(shí),在使用VHDX文件時(shí),當(dāng)虛擬硬盤或VHDX文件上的操作影響標(biāo)頭中包含的字段時(shí),也需要更新標(biāo)頭。

第一次在打開VHDX文件后更新標(biāo)頭,解析器必須為文件寫入全局唯一標(biāo)識(shí)符字段生成新的隨機(jī)值。在用戶請(qǐng)求可能影響虛擬磁盤內(nèi)容或用戶可見虛擬磁盤元數(shù)據(jù)(如磁盤大小或扇區(qū)大。┑牟僮髦,解析器不應(yīng)更新DataWriteGuid字段。

解析器可以遵循以下過程將非當(dāng)前報(bào)頭改變?yōu)楫?dāng)前報(bào)頭:

1.標(biāo)識(shí)當(dāng)前標(biāo)頭和非當(dāng)前標(biāo)頭。

2.在內(nèi)存中生成一個(gè)新標(biāo)題。將SequenceNumber字段設(shè)置為當(dāng)前標(biāo)頭的SequenceNumber字段加一。

3.根據(jù)需要將其他字段設(shè)置為其當(dāng)前值或更新值。如果這是會(huì)話中的第一個(gè)頭更新,請(qǐng)為FileWriteGuid使用一個(gè)新值。

4.檢查內(nèi)存中的標(biāo)頭。

5.使用內(nèi)存中頭部覆蓋文件中的非當(dāng)前頭部。發(fā)出flush命令以確保主機(jī)磁盤存儲(chǔ)介質(zhì)上的標(biāo)題更新是穩(wěn)定的。

在此過程之后,非當(dāng)前頭成為當(dāng)前頭。解析器應(yīng)該再次執(zhí)行更新過程,以便當(dāng)前和非當(dāng)前頭部都包含最新的信息;這確保如果一個(gè)頭損壞,該文件仍然可以打開。


1.3、區(qū)域表



區(qū)域表列出了文件中的虛擬連續(xù),可變大小,MB對(duì)齊的數(shù)據(jù)片段的區(qū)域。這些對(duì)象當(dāng)前包括BAT和元數(shù)據(jù)區(qū)域,但是可以通過解析器或未來(lái)對(duì)規(guī)范的修訂來(lái)擴(kuò)展,而不破壞不同解析器的實(shí)現(xiàn)和版本的兼容性。解析器必須保持他們不理解的對(duì)象而不破壞它們。解析器必須無(wú)法打開包含標(biāo)記為必需但該解析器不理解的區(qū)域的VHDX文件。

區(qū)域表由一個(gè)標(biāo)題后跟可變數(shù)量的條目組成,這些條目指定文件中區(qū)域的標(biāo)識(shí)和位置。區(qū)域表的兩個(gè)副本存儲(chǔ)在文件偏移量192 KB256 KB。必須通過日志更新區(qū)域表結(jié)構(gòu)。

技術(shù)分享

其中區(qū)域表的頭部包含以下內(nèi)容:

技術(shù)分享

簽名字段必須為0x69676572。

校驗(yàn)和字段是整個(gè)64 KB表上的CRC-32C哈希值,該字段在計(jì)算校驗(yàn)和值期間,默認(rèn)取值為零,直到算出校驗(yàn)和為止。

條目數(shù)字段指定要遵循的有效條目的數(shù)量。這個(gè)值必須小于或等于2047。

而區(qū)域表的后半段區(qū)域表?xiàng)l目部分,其組成結(jié)構(gòu)如下所示:

技術(shù)分享

Guid字段指定對(duì)象的128位標(biāo)識(shí)符,并且必須是唯一值。

文件偏移量字段和長(zhǎng)度字段指定文件中對(duì)象的64位字節(jié)偏移量和32位字節(jié)長(zhǎng)度。這些值必須是1 MB的倍數(shù),其中文件偏移量字段必須至少為1 MB

在該表中的所有對(duì)象不能夠重疊,不僅相對(duì)于區(qū)域表?xiàng)l目?jī)?nèi)部彼此之間,也相對(duì)于日志(在頭部中定義)和數(shù)據(jù)塊和扇區(qū)位圖塊(在BAT中定義)。

必需字段指定該區(qū)域是否必須由解析器識(shí)別才能加載VHDX文件。 如果此字段的值為1,并且解析器無(wú)法識(shí)別此區(qū)域,則解析器必須拒絕加載VHDX文件。

保留區(qū)域表記錄的是保留的空間地址段。

下表總結(jié)了VHDX規(guī)范中定義的區(qū)域的屬性。


技術(shù)分享


標(biāo)簽:虛擬 硬盤 解析 
相關(guān)評(píng)論
不良信息舉報(bào)中心成都網(wǎng)警網(wǎng)警110報(bào)警服務(wù)AAA級(jí)互聯(lián)網(wǎng)行業(yè)信用360網(wǎng)站安全檢測(cè)

數(shù)據(jù)恢復(fù)QQ交流群:378664983    站長(zhǎng)QQ:958754010


蜀ICP備14015947號(hào)-2