日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

硬盘存储结构及分区简介

發(fā)布時間:2024/3/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 硬盘存储结构及分区简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

硬盤結(jié)構(gòu)簡介:

很久以前, 硬盤的容量還非常小的時候,人們采用與軟盤類似的結(jié)構(gòu)生產(chǎn)硬盤. 也就是硬盤盤片的每一條磁道都具有相同的扇區(qū)數(shù). 由此人們定義硬盤參數(shù)為(CHS)參數(shù),即磁頭數(shù)(Heads),柱面數(shù)(Cylinders),扇區(qū)數(shù)(Sectors),以及相應(yīng)的尋址方式。

其中:

磁頭數(shù)表示硬盤總共有幾個磁頭,也就是有幾面盤片,最大為255 (用8個二進(jìn)制位存儲);

柱面數(shù)表示硬盤每一面盤片上有幾條磁道, 最大為1023(用10個二進(jìn)制位存儲);

扇區(qū)數(shù)(Sectors) 表示每一條磁道上有幾個扇區(qū), 最大為63 (用6個二進(jìn)制位存儲);

每個扇區(qū)一般是 512個字節(jié), 理論上講這不是必須的, 但好象沒有取別的值的;

所以磁盤最大容量為:255 * 1023 * 63 * 512 / 1048576 = 8024 GB ( 1M = 1048576 Bytes )

或硬盤廠商常用的單位:255 * 1023 * 63 * 512 / 1000000 = 8414 GB ( 1M = 1000000 Bytes )

在 CHS 尋址方式中, 磁頭, 柱面, 扇區(qū)的取值范圍分別為 0 到 Heads – 1,0 到 Cylinders - 1,1 到 Sectors (注意是從 1 開始)

在老式硬盤中,由于每個磁道的扇區(qū)數(shù)相等,所以外道的記錄密度要遠(yuǎn)低于內(nèi)道,因此會浪費(fèi)很多磁盤空間 (與軟盤一樣)。為了解決這一問題,進(jìn)一步提高硬盤容量,人們改用等密度結(jié)構(gòu)生產(chǎn)硬盤。也就是說,外圈磁道的扇區(qū)比內(nèi)圈磁道多。采用這種結(jié)構(gòu)后,硬盤不再具有實(shí)際的3D參數(shù),尋址方式也改為線性尋址,即以扇區(qū)為單位進(jìn)行尋址。為了與使用3D尋址的老軟件兼容在硬盤控制器內(nèi)部安裝了一個地址翻譯器。由它負(fù)責(zé)將老式3D參數(shù)翻譯成新的線性參數(shù)。這也是為什么現(xiàn)在硬盤的3D參數(shù)可以有多種選擇的原因 (不同的工作模式, 對應(yīng)不同的3D參數(shù), 如 LBA, LARGE, NORMAL)。

磁盤分區(qū)簡介:

BOOTSECTOR簡介

Boot Sector 也就是硬盤的第一個扇區(qū), 它由 MBR (Master Boot Record), DPT (Disk Partition Table) 和 Boot Record ID 三部分組成。MBR 又稱作主引導(dǎo)記錄占用 Boot Sector 的前 446 個字節(jié) ( 0 to 0x1BD ), 存放系統(tǒng)主引導(dǎo)程序 (它負(fù)責(zé)從活動分區(qū)中裝載并運(yùn)行系統(tǒng)引導(dǎo)程序).

DPT 即主分區(qū)表占用 64 個字節(jié) (0x1BE to 0x1FD), 記錄了磁盤的基本分區(qū)信息,主分區(qū)表分為四個分區(qū)項,,每項 16 字節(jié),分別記錄了每個主分區(qū)的信息(因此最多可以有四個主分區(qū)).Boot Record ID 即引導(dǎo)區(qū)標(biāo)記占用兩個字節(jié) (0x1FE and 0x1FF), 對于合法引導(dǎo)區(qū),它等于 0xAA55,這是判別引導(dǎo)區(qū)是否合法的標(biāo)志。

BOOTSECTOR的具體結(jié)構(gòu)如下圖所示:

Master Boot Record主引導(dǎo)記錄(446字節(jié))
分區(qū)信息1(16字節(jié))
分區(qū)信息2(16字節(jié))
分區(qū)信息3(16字節(jié))
分區(qū)信息4(16字節(jié))
?55AA

BOOTSECTOR結(jié)構(gòu)圖

分區(qū)表結(jié)構(gòu)簡介

分區(qū)表由四個分區(qū)項構(gòu)成, 每一項長度為16個字節(jié),分區(qū)表結(jié)構(gòu)如下圖所示:

分區(qū)狀態(tài),0=未激活,0x80=激活(注意此項)0
分區(qū)起始磁頭號1
分區(qū)起始扇區(qū)和柱面號,底字節(jié)的低6位為扇區(qū)號,高2位為柱面號的第9,10位,高字節(jié)為柱面號的低8位2
3
分區(qū)類型,如0x0B=FAT32,0x83=Linux等,0表示此項未用4
分區(qū)結(jié)束磁頭號5
分區(qū)結(jié)束扇區(qū)和柱面號,低字節(jié)的低6位為扇區(qū)號,高2位為柱面號的第9,10位,高字節(jié)為柱面號的低8位6
7
在線性尋址方式下的分區(qū)相對扇區(qū)地址(對于基本分區(qū)即為絕對地址)8
9
A
B

分區(qū)大小(總扇區(qū)數(shù))

注意:在DOS/Windows系統(tǒng)下,基本分區(qū)必須以柱面為單位劃分(Sectors*Heads個扇區(qū)),如對于CHS為764/255/63的硬盤,分區(qū)的最小尺寸為255*63*512/1048576=7.844MB

C
D
E
F

分區(qū)表結(jié)構(gòu)圖

擴(kuò)展分區(qū)簡介

由于主分區(qū)表中只能分四個分區(qū), 無法滿足需求, 因此設(shè)計了一種擴(kuò)展分區(qū)格式. 基本上說,擴(kuò)展分區(qū)的信息是以鏈表形式存放的, 但也有一些特別的地方.

首先, 主分區(qū)表中要有一個基本擴(kuò)展分區(qū)項, 所有擴(kuò)展分區(qū)都隸屬于它,也就是說其他所有擴(kuò)展分區(qū)的空間都必須包括在這個基本擴(kuò)展分區(qū)中. 對于DOS / Windows 來說, 擴(kuò)展分區(qū)的類型為 0x05(EXTENDX). 除基本擴(kuò)展分區(qū)以外的其他所有擴(kuò)展分區(qū)則以鏈表的形式級聯(lián)存放,后一個擴(kuò)展分區(qū)的數(shù)據(jù)項記錄在前一個擴(kuò)展分區(qū)的分區(qū)表中, 但兩個擴(kuò)展分區(qū) 的空間并不重疊.擴(kuò)展分區(qū)類似于一個完整的硬盤, 必須進(jìn)一步分區(qū)才能使用. 但每個擴(kuò)展分區(qū)中只能存在一個其他分區(qū). 此分區(qū)在 DOS/Windows 環(huán)境中即為邏輯盤. 因此每一個擴(kuò)展分區(qū)的分區(qū)表 (同樣存儲在擴(kuò)展分區(qū)的第一個扇區(qū)中)中最多只能有兩個分區(qū)數(shù)據(jù)項(包括下一個擴(kuò)展分區(qū)的數(shù)據(jù)項).

擴(kuò)展分區(qū)的分區(qū)表存放在該分區(qū)的第一個扇區(qū)中它的結(jié)構(gòu)與硬盤的BOOTSETOR基本相同,只是沒有主引導(dǎo)紀(jì)錄,即該扇區(qū)的0-0X1BD的數(shù)據(jù)是無效的,另外它的分區(qū)表只有前面兩項是有效的。他的最后兩個字節(jié)也是合法性檢測標(biāo)志即55AA

下面是擴(kuò)展分區(qū)的結(jié)構(gòu)示意圖

擴(kuò)展分區(qū)的結(jié)構(gòu)示意圖

硬盤分區(qū)類型

0 未使用分區(qū)項

1 DOS12一種Fat表為12位的分區(qū)主要用于早期小硬盤和部分軟盤

2 xenix一種linux分區(qū)

4 D0S16早期硬盤分區(qū)方法,分區(qū)表項為16位,最大支持32M分區(qū)大小

5 EXTEND擴(kuò)展分區(qū)的一種該分區(qū)的 起始扇區(qū)為前面的第一個EXTENDX分區(qū)起始扇區(qū)+該分區(qū)的相對偏移

6 BIGDOS即FAT16分區(qū) 分區(qū)表為16位,每簇最大為32K,最大分區(qū)為2G

7 NTFS分區(qū)

B FAT32分區(qū) 分區(qū)表為32位

C FAT32X分區(qū)與FAT32基本相同

E BIGDOSX即FAT16分區(qū)擴(kuò)展 分區(qū)表為16位,每簇最大可以超過32K

F EXTENDX擴(kuò)展分區(qū)的一種,起始扇區(qū)為該分區(qū)的相對偏移或者 前面的前面的第一個EXTENDX分區(qū)起始扇區(qū)+該分區(qū)的相對偏移;

如何找到一個邏輯分區(qū)

前面介紹了硬盤的分區(qū)結(jié)構(gòu),下面主要講解如何找到一個硬盤的邏輯分區(qū)首先讀取硬盤BOOTSECTOR,讀取該硬盤的分區(qū)表例如下面是一個15G硬盤的BOOTSECTOR

一個硬盤的BOOTSECTORS數(shù)據(jù)

其中紅色部分是主引導(dǎo)紀(jì)錄(MBR)藍(lán)色和淺綠色是分區(qū)表數(shù)據(jù)一共是4個分區(qū)項和顯然后兩個分區(qū)表項是未用的。最后兩個字節(jié)是合法性標(biāo)志。

對于第一個分區(qū)表項可以知道該分區(qū)是一個活動分區(qū),分區(qū)類型是0X0C (FAT16)分區(qū)分區(qū)相對扇區(qū)起始地址是0x3f(63) 分區(qū)大小是0x32F8E(208782個扇區(qū)大小大概未100M由于這是柱分區(qū)該分區(qū)的起始扇區(qū)號就為0x3f;

對于第二個分區(qū)表項可以知道該分區(qū)的分區(qū)類型是0x0F(EXTENDX)分區(qū),起始扇區(qū)地址是0X32FCD(208845)分區(qū)大小是0X1BC6CD5(29125845)個扇區(qū)。

讀取扇區(qū)0X32FCD取出擴(kuò)展分區(qū)得的分區(qū)表項

00 01 01 0D 07 FE BF 0A 3F 00 00 00 3F 04 7D 00

00 00 81 0B 05 FE FF 09 7E 04 7D 00 3F 82 3E 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

取出第一個分區(qū)表項知道該分區(qū)是類型是7(NTFS分區(qū))分區(qū)大小是0X7D043F分區(qū)相對扇區(qū)號為0x3f可以算出分區(qū)的起始扇區(qū)是0X32FCD+0X3F=0X3300C

取出第二個分區(qū)表項知道該分區(qū)是類型是5(EXTEND分區(qū))分區(qū)大小是0X3E823F分區(qū)相對扇區(qū)號為0X7D047E可以算出分區(qū)的起始扇區(qū)是0X32FCD+0X7D047E=0X80344B

讀取扇區(qū)0X80344B取出擴(kuò)展分區(qū)得的分區(qū)表項

00 01 81 0b 0b fe ff 08 3f 00 00 00 00 82 3e 00

00 00 c1 0a 05 fe ff ff bd 86 bb 00 57 a7 00 01

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

取出第一個分區(qū)表項知道該分區(qū)是類型是0b(Fat32分區(qū))分區(qū)大小是0X3e8200分區(qū)相對扇區(qū)號為0x3f可以算出分區(qū)的起始扇區(qū)是0X32FCD+0x7d047e +0X3F=0X80348a

取出第二個分區(qū)表項知道該分區(qū)是類型是5(EXTEND分區(qū))分區(qū)大小是0X100a757分區(qū)相對扇區(qū)號為0Xbb86bd可以算出分區(qū)的起始扇區(qū)是0X32FCD+0Xbb86bd=0Xbbe68a

讀取扇區(qū)0Xbbe68a取出擴(kuò)展分區(qū)得的分區(qū)表項

00 01 c1 0a 07 fe ff ff 3f 00 00 00 18 a7 00 01

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

取出第一個分區(qū)表項知道該分區(qū)是類型是7(NTFS分區(qū))分區(qū)大小是0X100a718分區(qū)相對扇區(qū)號為0x3f可以算出分區(qū)的起始扇區(qū)是0X32FCD+0xbbe68a+3f=0Xbeb6c9

邏輯分區(qū)簡介:

FAT16 FAT32 NTFS邏輯分區(qū)BOOTSECTOR

邏輯分區(qū)的BOOTSECTOR的第一個扇區(qū)它由以下部分組成 1.跳轉(zhuǎn)指令 2.硬盤分區(qū)類型的文本字符名 3.分區(qū)參數(shù)塊 4.擴(kuò)展的分區(qū)參數(shù)塊 5.啟動指令塊 6.合法性標(biāo)志55AA

對于不同的分區(qū)類型這些塊的內(nèi)容與意義是不同的下面是FAT FAT32 NTFS各分區(qū)的BOOTSECTORD的內(nèi)容語義的略圖

0H3 Byte跳轉(zhuǎn)指令EB 3C 90
3H8 Byte硬盤分區(qū)類型的文本字符名MSDOS5.0
0BH25 Byte分區(qū)參數(shù)塊0BH2 Byte每扇區(qū)字節(jié)數(shù)
0DH1 Byte每簇扇區(qū)數(shù)
0EH2 Byte保留扇區(qū)數(shù)
10H1 ByteFAT表份數(shù)
11H2 Byte根目錄入口項
13H2 Byte磁盤大小
15H1 Byte介質(zhì)類型
16H2 ByteFAT表占用扇區(qū)
18H2 Byte每道扇區(qū)數(shù)
1AH2 Byte磁頭數(shù)
1CH2 Byte隱藏扇區(qū)數(shù)
24H26 Byte擴(kuò)展的分區(qū)參數(shù)塊24H1 Byte物理磁盤號
25H1 Byte當(dāng)前磁頭號
26H1 Byte0x28或0x29
27H4 Byte磁盤序列號
2BH11 Byte卷表
36H8 Byte系統(tǒng)標(biāo)識符
3EH448啟動指令塊?
1FE2 Byte合法性標(biāo)志55AA

FAT16分區(qū)BOOTSECTOR結(jié)構(gòu)圖

0H3 Byte跳轉(zhuǎn)指令EB 58 90
3H8 Byte硬盤分區(qū)類型的文本MSWIN4.1
0BH25 Byte分區(qū)參數(shù)塊0B2 Byte每扇區(qū)字節(jié)
0D1 Byte每簇扇區(qū)數(shù)
0E2 Byte保留扇區(qū)數(shù)
101 ByteFAT表份數(shù)
112 Byte未用
151 Byte介質(zhì)類型
162 Byte未用
182 Byte每道扇區(qū)數(shù)
1A2 Byte磁頭數(shù)
1C2 Byte隱藏扇區(qū)數(shù)
204 Byte磁盤總扇區(qū)
24H52 Byte擴(kuò)展的分區(qū)參數(shù)塊244 ByteFAT表占用
2C1 Byte根目錄入口
401 Byte物理磁盤號
421 Byte0x29
434 Byte磁盤序列號
478 Byte系統(tǒng)標(biāo)識符
528 Byte系統(tǒng)標(biāo)識符
58422啟動指令塊?
1FE2合法性標(biāo)志55AA

FAT32分區(qū)BOOTSECTOR結(jié)構(gòu)圖

0H3 Byte跳轉(zhuǎn)指令EB 52 90
03H8 Byte硬盤分區(qū)類型的文本字符名NTFS
0BH25 Byte分區(qū)參數(shù)塊0B2 Byte每扇區(qū)字節(jié)數(shù)
0D1 Byte每簇扇區(qū)數(shù)
0E2 Byte保留扇區(qū)數(shù)
101 Byte0
114 Byte0
151 Byte介質(zhì)類型
162 Byte0
182 Byte每道扇區(qū)數(shù)
1A2 Byte磁頭數(shù)
1C2 Byte隱藏扇區(qū)數(shù)
204 Byte0(未用)
24H52 Byte擴(kuò)展的分區(qū)參數(shù)塊244 Byte0(未用)
288 Byte總扇區(qū)數(shù)
308 ByteMFT 表起始簇
388 ByteMFT鏡像起始簇
404 Byte每個記錄段簇
444 Byte每個索引占簇
488 Byte磁盤序列號
504 Byte校驗和
54H426 Byte啟動指令塊?
1FE2 Byte合法性標(biāo)志55AA

NTFS分區(qū)BOOTSECTOR結(jié)構(gòu)圖

FAT16 FAT32邏輯分區(qū)組成結(jié)構(gòu)

FAT16和FAT32的分區(qū)組成結(jié)構(gòu)比較類似其基本如下:

BOOT SETCOR
保留扇區(qū)
FAT表1
FAT表2
根目錄區(qū)
磁盤內(nèi)容

FAT16 FAT32邏輯盤結(jié)構(gòu)圖

其中FAT16的根目錄區(qū)是固定大小的緊跟在FAT表后,而FAT32的根目錄區(qū)可以是不固定大小的在BOOTSECTOR中提供了根目錄區(qū)的第一個簇的簇號。

每一個目錄項占20個字節(jié)這些字節(jié)的定義如下

0xA文件名 第一個字節(jié)為E5表示該目錄項已被刪除,為0表示未用,為2E表示是當(dāng)前目錄或者根目錄。

0xB是文件屬性BIT0文檔 BIT1只讀文件BIT2系統(tǒng)文件BIT3隱藏文件BIT4目錄 BIT5卷標(biāo)

0x10-0X13 文件創(chuàng)建日期

0x14-0X15 文件或目錄起始簇號高16位(對FAT16無效為00 00)。

0x16-0X19 文件更改日期

0X1A-0X1B 文件或目錄起始簇號低16位。

0X1C-0X1F 文件大小(對目錄該項為0)

整個磁盤空間是按簇劃分,在BOOTSECTOR中記錄了每個簇的大小參數(shù)。

FAT表是用來記錄整個磁盤空間的使用與分配情況的它的結(jié)構(gòu)是一種鏈?zhǔn)浇Y(jié)構(gòu)。

他每16個字節(jié)或者32個字節(jié)表示一個簇。例如我們在FAT16分區(qū)找到第121簇的使用情況過程如下:

假設(shè)該分區(qū)大小為2G,起始扇區(qū)為63,FAT表為255個扇區(qū),根目錄有0X100個入口,每簇大小為64個扇區(qū),隱含扇區(qū)為1個。

該簇在FAT表中的位置為:

A=121*2=241;B=A%512;IF(B!=0);B=1;

C=63+1+A/512+B;

讀取扇區(qū)C到緩沖區(qū)取第A%512/2個字即為該扇區(qū)的下一個扇區(qū),如果為0表示該扇區(qū)未用,為FF FF表示該扇區(qū)為最后一個扇區(qū)。其他的表示有下一個扇區(qū)。

該簇的物理磁盤扇區(qū)號是63+1+255*2+0X100*20/512+(121-2)*64

讀于一個FAT32分區(qū),要找到121簇的使用情況

假設(shè)該分區(qū)大小為4G,起始扇區(qū)為200048,FAT表為3997個扇區(qū),每簇大小為8個扇區(qū),根目錄起始簇號為2,隱含扇區(qū)為32個。

該簇在FAT表中的位置為:

A=121*4=241;B=A%512;IF(B!=0);B=1;

C=20048+32+A/512+B;

讀取扇區(qū)C到緩沖區(qū)取第A%512/4個雙字即為該扇區(qū)的下一個扇區(qū),如果為0表示該扇區(qū)未用,為FF FF FF FF表示該扇區(qū)為最后一個扇區(qū)。其他的表示有下一個扇區(qū)。

該簇的物理磁盤扇區(qū)號是20048+32+3997*2+(121-2)*8

經(jīng)過上面的介紹我們就比較親楚整個FAT16 FAT32分區(qū)的尋址方式

例如讀取文件C:\Windows\SYSTEM.INI

首先找到邏輯盤C的起始扇區(qū),然后讀出他的根目錄區(qū),在根目錄區(qū)中找到Windows子目錄項,找到目錄項中該子目錄的起始簇,在FAT表中找到以該簇為起始簇的簇鏈,讀出這些簇的所在的扇區(qū)內(nèi)容然后找到文件名為SYTEM.INI的目錄項,取得它的起始簇號,讀出該簇為起始簇的簇鏈的所有扇區(qū)內(nèi)容即可。

NTFS邏輯分區(qū)組成結(jié)構(gòu)

NTFS分區(qū)的結(jié)構(gòu)比FAT16和FAT32復(fù)雜。整個NTFS分區(qū)也是和FAT分區(qū)一樣以簇為基本的的存儲結(jié)構(gòu),但NTFS分區(qū)把整個分區(qū)的全部扇區(qū)都作為簇來劃分,而FAT分區(qū)的BOOTSECTORFAT表,根目錄(FAT32除外),作為另外的部分它的起始簇是在這些扇區(qū)之后的。

NTFS分區(qū)的結(jié)構(gòu)大概如下

BOOTSECTOR記錄了MFT表的起始簇號,通過BOOTSECTOR找到MFT的起始扇區(qū),(方法是 磁盤起始扇區(qū)+簇號*每簇扇區(qū)數(shù))。

MFT表是由很多個MFT記錄構(gòu)成,每個MFT記錄表示一個文件的信息,MFT表將整個文件系統(tǒng)的內(nèi)容,都當(dāng)成文件來處理包括它自己本身。MFT表記錄將文件的所有信息都當(dāng)成屬性來處理。

下面是MFT記錄的頭結(jié)構(gòu)說明。

起始長度意義
04MFT記錄標(biāo)志FILE
42修復(fù)效驗偏移
62修復(fù)數(shù)據(jù)長度,包含第一個字節(jié)
88LSN
102序列號
122鏈接個數(shù)(有多少個文件名鏈接在這個實(shí)際文件上)
142第一個屬性的起始于該MFT記錄的哪一個字節(jié)
162BIT0表示該記錄中有屬性值存于記錄外,BIT1表示該記錄中存有文件目錄
184該記錄的有效字節(jié)數(shù)(記錄頭+所有屬性長度和)
1C4該記錄的長度
208高2字節(jié)主MFT記錄的記錄號,低2字節(jié)0
282所有屬性加1
2A6修復(fù)數(shù)據(jù)依賴于記錄長度

MFT記錄頭
屬性1
屬性2
屬性3

MFT記錄結(jié)構(gòu)示意圖

MFT的記錄由記錄頭和屬性列表組成,每一個屬性都有一個結(jié)構(gòu)相同的屬性頭,屬性頭分兩種,一種是屬性內(nèi)容在MFT表中,一種是屬性的內(nèi)容在磁盤分配的簇中,屬性頭分兩部分對于所有屬性第一部分結(jié)構(gòu)是相同的第二部分結(jié)構(gòu)不同:

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
04屬性類型
42屬性總長度
81屬性數(shù)據(jù)是否存在MFT表中,0表示是,1表示存在磁盤分配的空間
91屬性名長度
A2屬性內(nèi)容相當(dāng)于屬性頭起始地址的偏移
C2屬性值是否壓縮,0表示沒壓縮,1表示壓縮
E2屬性標(biāo)志(通常為0)

屬性頭的第一部分內(nèi)容(前16字節(jié))

1041屬性數(shù)據(jù)長度
142屬性數(shù)據(jù)起始字節(jié)(相當(dāng)于屬性頭起始地址)
162屬性在MFT屬性中是第幾個屬性(從0開始)

屬性內(nèi)容在MFT表中的屬性頭第二部分內(nèi)容

1010H屬性內(nèi)容所在簇計算的起始簇
202屬性數(shù)據(jù)起始字節(jié)(相當(dāng)于屬性頭起始地址)
222屬性內(nèi)容壓縮方法(不太清楚)
288為屬性數(shù)據(jù)的分配空間大小
308屬性數(shù)據(jù)的實(shí)際大小
388初始化數(shù)據(jù)長度(對于壓縮的數(shù)據(jù))
408壓縮前的長度(對于壓縮數(shù)據(jù))
48?vcn 1cn runlength 數(shù)據(jù)所在簇的位置(具體解釋在后面)

屬性內(nèi)容不在MFT表中的屬性的第二部分內(nèi)容

屬性頭后緊跟的是屬性內(nèi)容NTFS的標(biāo)準(zhǔn)的屬性包括以下幾種。

10H標(biāo)準(zhǔn)信息屬性Standard information
20H屬性列表屬性Attribute list
30H文件名屬性File Name
40H卷表版本屬性Volume Version
50H安全性描述屬性Security descriptor
60H卷表名屬性Volume name
70H卷表信息屬性Volume information
80H數(shù)據(jù)內(nèi)容屬性Data
90H索引根目錄屬性Index Root
A0H索引分配表屬性Index Allocation
B0H鏡像屬性BitMap
C0H鏈接屬性Symlink
D0HHPFS擴(kuò)展屬性信息屬性HPFS extended attributes information
E0HHPFS擴(kuò)展屬性HPFS extended attributes

對于NTFS標(biāo)準(zhǔn)屬性我并不完全了解下面就我所了解的部分進(jìn)行介紹

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
08文件創(chuàng)建時間
88文件內(nèi)容最后一次修改時間
108文件別的屬性最后一次修改時間
188文件最后一次修改時間
204文件存取控制800文件內(nèi)容是壓縮的,400文件是一個連接,20文檔標(biāo)志,4系統(tǒng)文件標(biāo)志,2隱含文件標(biāo)志,1系統(tǒng)文件標(biāo)志
24C未用通常為0

標(biāo)準(zhǔn)信息屬性內(nèi)容定義

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
04屬性名
42屬性長度
61屬性字符名長度
88屬性簇號計算起始簇號
108包含該屬性的MFT記錄號
388文件存取控制38
1A長度為BIT6*2屬性名的Unicode

屬性列表屬性內(nèi)容定義

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
08該文件的根目錄的MFT記錄號
820文件的時間信息(與基本信息中的相同)
288屬性分配空間
308屬性大小
388文件屬性 38 20 文檔標(biāo)志 4 系統(tǒng)文件標(biāo)志,2隱含文件標(biāo)志,1系統(tǒng)文件標(biāo)識,39 08 壓縮 3B10 目錄
401文件名長度
411文件名類型 0 posix 1 unicode 2 dos 3both dos and unicode
42Q長度為BIT40*2文件名的Unicode

文件名屬性內(nèi)容定義

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
04總是30H
44總是1
84索引記錄大小
C4每個簇可以記錄的索引記錄個數(shù)
104總是10
144整個屬性大小+10H
1C21如果有index allocation 屬性存在
1E2標(biāo)志位(不知道意義)

索引根目錄屬性定義

索引分配表屬性 該屬性分配索引空間以存放目錄

如果一個屬性內(nèi)容無法在MFT表中放下,MFT表就會申請磁盤空間,存放在申請的空間中,屬性列表定義中第48字節(jié)開始說明了該屬性所在的磁盤簇號。下面是該字段的意義的英文說明以及簡單的翻譯:

Nonresident attributes are stored in intervals of clusters called runs. Each run is represented by its starting cluster and its length. The starting cluster of a run is coded as an offset to the starting cluster of the previous run. Length and starting cluster are variable size fields. The first byte of a run indicates the size of both. The size of the offset is stored in the high nibble, and the size of the length in the low nibble.

For compressed or sparse runs, the offset is 0, and the size of the offset is also 0. Each compression unit starts at a multiple of 16 clusters. If compression is possible, at the VCN of a unit will be one or more data runs followed by an empty run. If there are data runs for more than 16 clusters, the unit was not compressible.If there is no data run at all (only a large empty run), the unit consists of all zeroes.

Example: 21 20 ED 5 22 48 7 48 22 21 28 C8 DB

First run: 20 clusters starting from 5ED (5ED to 60D)

2nd run: 748 clusters starting from 5ED+2248 (2835 to 2F7D)

3rd run: 28 clusters starting from 2835+DBC8 (3FD to 425)

Note that the offset is interpreted as signed value

不存儲于MFT表中的屬性值被存儲于分散的簇中稱為RUN。每個RUNS由它的起始簇和長度構(gòu)成。起始簇號和長度存儲于變長的域中,一個RUN的第一個字節(jié)表明了起始簇號和簇的個數(shù)分別占用的字節(jié)數(shù),跟著簇的個數(shù)數(shù)據(jù),接著是起始簇號的數(shù)據(jù)。入果沒有RUN存在著RUN的起始字節(jié)為0,RUNS是一個累加和,第二個RUN的起始簇號需要加上第一個RUN的起始簇號,以此類推。

NTFS分區(qū)的目錄結(jié)構(gòu)

NTFS分區(qū)的目錄結(jié)構(gòu)由文件名索引組成,它由 索引根目錄屬性(Index Root)

索引分配表屬性 (Index Allocation) 索引根目錄屬性表明該MFT表記錄是一個目錄,索引分配表屬性給該目錄分配磁盤空間以便存儲索引記錄(Index buffer)。

索引記錄由索引記錄頭和多個索引記錄項主組成,一個索引記錄大小為2k。其結(jié)構(gòu)如下:

索引記錄頭
索引記錄項1
索引記錄項2
索引記錄項N

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
04索引記錄標(biāo)志 總是INDEX
42自修復(fù)數(shù)據(jù)存儲位置 通常是28H
62自修復(fù)數(shù)據(jù)長度
108VCN值
182頭結(jié)構(gòu)長度(第一個索引記錄項入口字節(jié)地址-18)
1C4整個記錄的長度
204整個記錄存儲數(shù)據(jù)的長度
2441表示沒有索引記錄項
28A自修復(fù)數(shù)據(jù)

索引記錄頭結(jié)構(gòu)定義

索引記錄項是在這個目錄下的文件或目錄的索引結(jié)構(gòu)其定義如下

偏移(16進(jìn)制)長度(16進(jìn)制)內(nèi)容的意義
08該文件的MFT記錄號
82記錄項長度
A20x42+0x2*<0x50>可能是一個校驗位
C1本記錄項有沒有子項(1表示有,為了支持DOS文件名)
108父目錄的MFT記錄號
1820文件的時間信息
388文件數(shù)據(jù)屬性分配磁盤空間大小
501文件名長度
511文件名類型(詳見文件名屬性)
52長度為BIT8*2文件名(Unicode)

索引記錄項定義

NFTS分區(qū)重要文件:

MFT表里存儲了所有的文件的基本信息,MFT表的前16個記錄是保留給系統(tǒng)使用的,這些文件是:

MFT 記錄0$MFT文件即MFT表本身的信息
MFT 記錄1$MFTMIRR文件MFT表的第一個記錄內(nèi)容的備份
MFT 記錄2$LogFile文件緩沖區(qū)文件保證系統(tǒng)突然死機(jī)后,重啟時用
MFT 記錄3$Volume文件磁盤卷表文件
MFT 記錄4$Attrdef文件屬性定義文件,包含各種屬性的定義
MFT 記錄5$Root文件根目錄文件,分區(qū)目錄結(jié)構(gòu)的入口
MFT 記錄6

$BitMap文件

磁盤分配鏡像文件,每個位表示一個簇是否被分配
MFT 記錄7$Boot文件指向磁盤boot setor開始的16個扇區(qū)
MFT 記錄8$BadClus文件磁盤壞簇的鏡像文件
MFT 記錄9$Quota文件不太清楚該文件的用處
MFT 記錄10$UpCase文件大寫字母對應(yīng)的Unicode碼
MFT 記錄10$MFT記錄15未用

最后介紹一下NTFS文件系統(tǒng)中一個文件例如:要讀取文件F:\WINNT\SYSTEM32\ANSI .SYS

具體步驟如下:

1讀取分區(qū)表信息,找到磁盤F的起始扇區(qū)。

2讀取F盤的第一個扇區(qū)(分區(qū)的BOOTSETOR)取得分區(qū)的每簇大小,MFT表起始簇號,每簇大小等信息。

3.讀取MFT表的第五個記錄(根目錄)找到目錄索引所在簇號。

4.讀取索引,查找WINNT目錄所在的MFT記錄號

5.讀取WINNT目錄的MFT記錄,找到目錄索引所在簇號。

6.讀取索引,查找SYTEM32目錄所在MFT記錄號

7. 讀取SYTEM32目錄的MFT記錄,找到目錄索引所在簇號。

8. 讀取索引,查找ANSI . SYS所在MFT記錄號

9. 讀取ANSI .SYS文件的MFT記錄,找到它的DATA屬性。

10.根據(jù)DATA屬性中指定的文件數(shù)據(jù)存放位置讀取出ANSI .SYS文件的數(shù)據(jù)

總結(jié)

以上是生活随笔為你收集整理的硬盘存储结构及分区简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 小泽玛利亚一区二区三区在线观看 | 黄色小视频在线免费看 | 日少妇b | 尤物视频在线观看视频 | av在线不卡免费观看 | 亚洲视频天堂 | 中文字幕在线播放视频 | 精品爆乳一区二区三区 | 国产av人人夜夜澡人人爽麻豆 | 欧美14sex性hd摘花 | 亚洲欧洲国产日韩 | 国产成人无码av | 欧美一区二区福利视频 | 在线精品播放 | 中文字幕一区二区三三 | 久久都是精品 | 亚洲影院av | 粉嫩av一区二区夜夜嗨 | 亲嘴扒胸摸屁股激烈网站 | 欧洲黄视频 | 亚洲成人av免费观看 | 男生桶女生肌肌 | 亚洲国产剧情在线观看 | 中文字幕在线观看视频免费 | 欧美成人黄色 | 激情国产在线 | 欧美激情第三页 | 毛片av免费 | 日韩欧美一区二区三区 | 久久91亚洲精品中文字幕奶水 | 在线观看网页视频 | 999一区二区三区 | 成人爱爱视频 | 久久精品视频网站 | 99久久精品无码一区二区毛片 | 亚洲天堂自拍偷拍 | 九九热在线视频 | 国产美女久久久久久 | 69av视频在线观看 | 五级 黄 色 片 | 永久免费av网站 | 午夜精品视频 | 一卡二卡三卡在线视频 | 国产网站免费在线观看 | 久久成年 | 日韩精品在线一区二区 | 日本一区二区三区四区在线观看 | 亚洲人成电影网站 | 女女同性女同一区二区三区九色 | 熟妇人妻无乱码中文字幕真矢织江 | 骚虎视频在线观看 | 99福利视频导航 | 亚洲国产无线乱码在线观看 | 91精品国产99| 日本免费不卡一区二区 | 中文字幕精品亚洲 | 激情文学88 | 国产精品一级二级三级 | 91视频最新入口 | 国产日韩91| 免费看女生裸体视频 | 阿的白色内裤hd中文 | 亚洲人成在线观看 | 久久av免费看 | 日韩三级不卡 | 国产精品高清在线 | 久久国产精品久久国产精品 | 亚洲网站免费 | 99亚洲天堂 | 欧美一级片在线 | 国产αv| 日韩第一页在线观看 | 一起草最新网址 | 懂色av一区二区在线播放 | 亚洲精品国产欧美在线观看 | 在线你懂的 | 成人国产精品久久 | 国产麻豆91| 在线a免费 | 黄色片女人 | 免费看aaaaa级少淫片 | 欧美日韩一区在线 | 天天综合干 | 国产又粗又黄又爽又硬的视频 | 欧美日韩在线免费视频 | 91日本视频 | 天天操夜夜操 | 一区二区日韩精品 | 黄色片hd| 成人av免费在线 | 黑人巨大精品欧美一区二区 | 男阳茎进女阳道视频大全 | 国产一区二区三区在线免费 | 国产伦理一区二区 | 相亲对象是问题学生动漫免费观看 | 99ri在线| 国产免费激情 | 日韩一级免费片 | 色婷婷亚洲 |