我的主要问题是:与分区或文件系统相比,字节级别的卷到底是什么?它在二进制中是什么样子的?我可以打开 HDD(原始)并找到卷数据结构,就像我可以找到分区表或文件系统一样吗?或者它是 OS 内核 RAM 中的结构?“驱动器卷”的概念是特定于 OS 的吗?
编辑
也许重新表述更具体的问题会有所帮助,请随时纠正我:
分区表是几个特定位置的值的集合。它们具有某些含义。分区是可以作为单独实体处理的存储片段,它们列在设备内部的块 0 或块 1(有时更远)中。它们物理上存在那里。从这个意义上讲,卷是什么?它是操作系统内核中的某种结构,还是保存在驱动器上的某个位置,如果我读取原始驱动器数据,我就可以看到它?
原始帖子继续。
我用各种语言在互联网上搜索了好几天,但得到的只是模糊抽象的文字和图片。非常漂亮,但对于我感兴趣的数据恢复相关的任何内容都没什么用。我对原始数据感兴趣。我想以一系列位/字节的形式打开驱动器(或在十六进制编辑器中),用手指指向并说“这是卷”。
分区都很好,而且(相对)简单。我有一个存储设备,它有内存块。分区表只是驱动器连续部分的列表。块 10-200 是一个分区,块 201-400 是另一个分区。相当简单。但卷是抽象的。当我寻找具体信息时,我找不到(能让我满意的)。
相反,我得到的只是类似这张图片的东西,它出现在有关此事的每篇文章中(来源):
这是“漂亮但无用”的完美例子。它显示了事物之间的逻辑关系,但只会引发更多问题。例如,卷外的白色块是什么?为什么它在卷外而不是卷内?这是否意味着文件系统只管理卷内的内容,而其余部分则未使用?
据我所知,卷是单个文件系统管理的分区的一部分。至少在基本情况下是这样。(我们鼓励您纠正此说法)。同时,我看到一些文件系统中提到卷跨越多个分区。如果文件系统与卷的概念如此紧密相关,那为什么要使用卷的概念呢?在图中,一个分区被分成两个卷,我怀疑将其称为文件系统集合而不是卷集合是(接近?)等价的。
“卷”有物理表示吗?它存在于操作系统内核中吗?还是在驱动器上?为什么这种抽象级别是必要的?卷是否像分区内的分区一样工作?
答案1
简单的说 ..
- 分区是驱动器上的一个区域,仅此而已。分区在分区表中定义,分区表定义了起始位置和 LBA 扇区数。此外,分区表往往包含有关其所含卷的文件系统的提示(exFAT、EXT4、NTFS 等)。
定义单个 EE 类型分区的经典 MBR 样式分区表:
00 00
02 00 EE FE BF 66 01 00 00 00 FF FF FF FF 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
包含多个分区条目的 GPT 分区表块:
LBA:2 block: 2
0000000400: 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B (s*Á.øÒ.ºK. É>É;
0000000410: A9 8B 18 D2 C9 BA E1 48 8D EA 00 2E 1F 27 CA F7 ©‹.ÒɺáHê...'Ê÷
0000000420: 00 08 00 00 00 00 00 00 FF 27 08 00 00 00 00 00 ........ÿ'......
0000000430: 01 00 00 00 00 00 00 80 45 00 46 00 49 00 20 00 .......€E.F.I. .
0000000440: 73 00 79 00 73 00 74 00 65 00 6D 00 20 00 70 00 s.y.s.t.e.m. .p.
0000000450: 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 a.r.t.i.t.i.o.n.
0000000460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000480: 16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE .ãÉã\.¸M}ù-ð..®
0000000490: 32 DC 33 19 00 95 23 4B 9B 42 25 26 6E 56 A3 E9 2Ü3..•#K›B%&nV£é
00000004a0: 00 28 08 00 00 00 00 00 FF A7 08 00 00 00 00 00 .(......ÿ§......
00000004b0: 00 00 00 00 00 00 00 80 4D 00 69 00 63 00 72 00 .......€M.i.c.r.
00000004c0: 6F 00 73 00 6F 00 66 00 74 00 20 00 72 00 65 00 o.s.o.f.t. .r.e.
00000004d0: 73 00 65 00 72 00 76 00 65 00 64 00 20 00 70 00 s.e.r.v.e.d. .p.
00000004e0: 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 a.r.t.i.t.i.o.n.
00000004f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000500: A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7 ¢ Ðëå¹3D‡Àh¶·&™Ç
0000000510: 09 49 98 C1 20 84 07 48 A8 48 6B 45 30 2C 92 ED .I˜Á „.H¨HkE0,’í
0000000520: 00 A8 08 00 00 00 00 00 FF 8F 1C 77 00 00 00 00 .¨......ÿ.w....
0000000530: 00 00 00 00 00 00 00 00 42 00 61 00 73 00 69 00 ........B.a.s.i.
0000000540: 63 00 20 00 64 00 61 00 74 00 61 00 20 00 70 00 c. .d.a.t.a. .p.
0000000550: 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 a.r.t.i.t.i.o.n.
0000000560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000000580: A4 BB 94 DE D1 06 40 4D A1 6A BF D5 01 79 D6 AC ¤»”ÞÑ.@M¡j¿Õ.yÖ¬
0000000590: B4 B7 C6 B9 5A 0B 14 47 97 23 EF E3 B3 A1 67 16 ´·Æ¹Z..G—#ï㳡g.
00000005a0: 00 90 1C 77 00 00 00 00 FF CF 3B 77 00 00 00 00 ..w....ÿÏ;w....
00000005b0: 01 00 00 00 00 00 00 80 42 00 61 00 73 00 69 00 .......€B.a.s.i.
00000005c0: 63 00 20 00 64 00 61 00 74 00 61 00 20 00 70 00 c. .d.a.t.a. .p.
00000005d0: 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 a.r.t.i.t.i.o.n.
00000005e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000005f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
同一个块解释:
Partition Entry
Type GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B
Uniq. GUID D2188BA9-BAC9-48E1-8DEA-002E1F27CAF7
First LBA > 2048
Last LBA > 534527
Attributes 1000000000000000000000000000000000000000000000000000000000000001
Label EFI system partition............
Partition Entry
Type GUID E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Uniq. GUID 1933DC32-9500-4B23-9B42-25266E56A3E9
First LBA > 534528
Last LBA > 567295
Attributes 1000000000000000000000000000000000000000000000000000000000000000
Label Microsoft reserved partition....
Partition Entry
Type GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Uniq. GUID C1984909-8420-4807-A848-6B45302C92ED
First LBA > 567296
Last LBA > 1998360575
Attributes 0000000000000000000000000000000000000000000000000000000000000000
Label Basic data partition............
Partition Entry
Type GUID DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
Uniq. GUID B9C6B7B4-0B5A-4714-9723-EFE3B3A16716
First LBA > 1998360576
Last LBA > 2000408575
Attributes 1000000000000000000000000000000000000000000000000000000000000001
Label Basic data partition............
- 卷是一种文件系统。它的边界通常与其所在分区的边界相对应。根据特定的文件系统规范,卷的第一个扇区通常包含一个引导块,该引导块定义基本参数,例如块或簇大小以及指向文件系统元结构的指针。
NTFS 启动块:
0011500000: EB 52 90 4E 54 46 53 20 20 20 20 00 02 08 00 00 ëRNTFS .....
0011500010: 00 00 00 00 00 F8 00 00 3F 00 FF 00 00 A8 08 00 .....ø..?.ÿ..¨..
0011500020: 00 00 00 00 80 00 80 00 FF E7 13 77 00 00 00 00 ....€.€.ÿç.w....
0011500030: 00 00 0C 00 00 00 00 00 02 00 00 00 00 00 00 00 ................
0011500040: F6 00 00 00 01 00 00 00 5A 09 EC 78 2E EC 78 DC ö.......Z.ìx.ìxÜ
0011500050: 00 00 00 00 FA 33 C0 8E D0 BC 00 7C FB 68 C0 07 ....ú3ÀŽÐ¼.|ûhÀ.
0011500060: 1F 1E 68 66 00 CB 88 16 0E 00 66 81 3E 03 00 4E ..hf.ˈ...f>..N
0011500070: 54 46 53 75 15 B4 41 BB AA 55 CD 13 72 0C 81 FB TFSu.´A»ªUÍ.r.û
0011500080: 55 AA 75 06 F7 C1 01 00 75 03 E9 DD 00 1E 83 EC Uªu.÷Á..u.éÝ..ƒì
0011500090: 18 68 1A 00 B4 48 8A 16 0E 00 8B F4 16 1F CD 13 .h..´HŠ...‹ô..Í.
00115000a0: 9F 83 C4 18 9E 58 1F 72 E1 3B 06 0B 00 75 DB A3 ŸƒÄ.žX.rá;...uÛ£
00115000b0: 0F 00 C1 2E 0F 00 04 1E 5A 33 DB B9 00 20 2B C8 ..Á.....Z3Û¹. +È
00115000c0: 66 FF 06 11 00 03 16 0F 00 8E C2 FF 06 16 00 E8 fÿ.......ŽÂÿ...è
00115000d0: 4B 00 2B C8 77 EF B8 00 BB CD 1A 66 23 C0 75 2D K.+Èwï¸.»Í.f#Àu-
00115000e0: 66 81 FB 54 43 50 41 75 24 81 F9 02 01 72 1E 16 fûTCPAu$ù..r..
00115000f0: 68 07 BB 16 68 52 11 16 68 09 00 66 53 66 53 66 h.».hR..h..fSfSf
0011500100: 55 16 16 16 68 B8 01 66 61 0E 07 CD 1A 33 C0 BF U...h¸.fa..Í.3À¿
0011500110: 0A 13 B9 F6 0C FC F3 AA E9 FE 01 90 90 66 60 1E ..¹ö.üóªéþ.f`.
0011500120: 06 66 A1 11 00 66 03 06 1C 00 1E 66 68 00 00 00 .f¡..f.....fh...
0011500130: 00 66 50 06 53 68 01 00 68 10 00 B4 42 8A 16 0E .fP.Sh..h..´BŠ..
0011500140: 00 16 1F 8B F4 CD 13 66 59 5B 5A 66 59 66 59 1F ...‹ôÍ.fY[ZfYfY.
0011500150: 0F 82 16 00 66 FF 06 11 00 03 16 0F 00 8E C2 FF .‚..fÿ.......ŽÂÿ
0011500160: 0E 16 00 75 BC 07 1F 66 61 C3 A1 F6 01 E8 09 00 ...u¼..faáö.è..
0011500170: A1 FA 01 E8 03 00 F4 EB FD 8B F0 AC 3C 00 74 09 ¡ú.è..ôëý‹ð¬<.t.
0011500180: B4 0E BB 07 00 CD 10 EB F2 C3 0D 0A 41 20 64 69 ´.»..Í.ëòÃ..A di
0011500190: 73 6B 20 72 65 61 64 20 65 72 72 6F 72 20 6F 63 sk read error oc
00115001a0: 63 75 72 72 65 64 00 0D 0A 42 4F 4F 54 4D 47 52 curred...BOOTMGR
00115001b0: 20 69 73 20 63 6F 6D 70 72 65 73 73 65 64 00 0D is compressed..
00115001c0: 0A 50 72 65 73 73 20 43 74 72 6C 2B 41 6C 74 2B .Press Ctrl+Alt+
00115001d0: 44 65 6C 20 74 6F 20 72 65 73 74 61 72 74 0D 0A Del to restart..
00115001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00115001f0: 00 00 00 00 00 00 8A 01 A7 01 BF 01 00 00 55 AA ......Š.§.¿...Uª
相同的引导块解释:
OEM identifier "NTFS "
Bytes per Sector 512
Sectors per Clust 8
Reserved Sectors 0
Number of FATs 0
Root Dir Entries 0
Total Sectors 0
Media Descriptor h8
Sectors per FAT 0
Sectors per Track 63
Number of Heads 255
Hidden Sectors 567296
Total Sectors 0
(0x00800080) 00800080h
Tot. NTFS Sectors 1997793279
MFT Cluster 786432
MFT Mirr Cluster 2
Clusters per FILE 246 (1024 bytes)
Clusters per INDX 1 (4096 bytes)
Serial Num (hex) 78EC095A-DC78EC2Eh
Checksum 00000000h
Boot Sign (0xAA55)AA55h
利用该信息我们(或操作系统)可以确定 $MFT @ cluster 786432 的位置并进一步解析文件系统。
因此:分区表指向起始 LBA 并定义 LBA 扇区的数量。然后,该区域的第一个 LBA 扇区包含文件系统的起始位置。在没有文件系统的情况下,我们倾向于将该区域称为 RAW 分区,而不是卷。
卷通常是一个分区的大小或几个分区的组合(在某种形式的软件 RAID 或跨区的情况下)。
答案2
我的主要问题是:与分区或文件系统相比,字节级别的卷到底是什么?
卷由两个部分组成:目录和存储空间。卷的存储空间集合可以位于各种硬盘上。最简单的卷是分区,它指的是磁盘上的一个连续空间。操作系统中的卷管理使存储管理中的更高级别能够使用从 0 到 n-1 的数字来寻址卷的所有 n 个扇区,而不管不同物理位置(硬盘)上的绝对扇区地址。要为所谓的“存储管理中的更高级别”提供这种服务,运行大于磁盘上一个分区的卷需要某种目录来存储存储空间的位置。
示例(简化)
目录:有卷v1,其总长度为9个扇区。
磁盘一:位置扇区77,2个扇区,代表扇区3和4
磁盘二:位置扇区342,3个扇区,代表扇区0至2
磁盘三:位置扇区25,5个扇区,代表扇区5至8
如果操作系统的较高层想要读取卷 v1 的第 6 扇区,则较低层必须检查目录以找到位置。在此示例中,第 6 扇区存储在磁盘 3 的第 26 扇区上。然后,较低层将返回磁盘 3 上第 26 扇区的内容。较高层不必关心组成卷的单个存储区域的物理位置。
从逻辑角度来看,分区只是由一个存储空间组成的卷的一个特例。旧 MBR 分区表结构和新 GPT 分区表结构都提供了处理分区内容所需的所有信息。无需其他目录。
从历史角度来看,卷是旧式分区的扩展,能够将分区组合成更大的分区,称为卷。
普通用户仅处理分区,或者换句话说,仅包含一个存储空间(分区的内容)的卷。
在实际处理卷时,卷的空间通过格式化被文件系统完全占用。此外,在 Microsoft 环境中,卷通常被分配一个卷标。在 Linux 中,格式化的卷空间通常安装在目录树中的某个位置。
它在二进制中是什么样子的?
卷概念的二进制表示法因操作系统而异。在 Microsoft 环境中,人们会遇到旧的“动态磁盘”概念或现代的“存储空间”。
在 Linux 世界中,有一种 Microsoft 动态磁盘仿真可用,称为 LDM(“逻辑设备管理器”)。Linux 有自己的卷概念,由 LVM(“逻辑卷管理器”)实现。
我可以打开 HDD(原始)并找到卷数据结构,就像找到分区表或文件系统一样吗?
通常不会,但如果卷仅限于使用一个分区,您可以解释分区表以了解卷。否则,您必须收集目录信息才能了解整个结构。通过评估分区表,您有时可能会了解到列出的分区是更大卷的一部分。
通过线性方式扫描硬盘来找到文件系统的开头可能不一定会告诉您您只找到了更大实体的一部分。
或者它是操作系统内核 RAM 中的结构?
由于其结构必须永久保存,有时它可能会被缓冲在 RAM 中,但最有可能在配置文件中找到,在 Microsoft 环境中,它可能位于注册表中。
“驱动器卷”的概念是操作系统特有的吗?
是的。
答案3
据我所知,卷是单个文件系统管理的分区的一部分。至少在基本情况下是这样。(我们鼓励您纠正此说法)。同时,我看到一些文件系统中提到卷跨越多个分区。如果文件系统与卷的概念如此紧密相关,那为什么要使用卷的概念呢?在图中,一个分区被分成两个卷,我怀疑将其称为文件系统集合而不是卷集合是(接近?)等价的。
“卷”有物理表示吗?它存在于操作系统内核中吗?还是在驱动器上?为什么这种抽象级别是必要的?卷是否像分区内的分区一样工作?
好的,因此我将通过坚持“体积”的定义,将其作为其他答案的一个简单替代方案。
您所学到的和正在学习的一切都是有价值,但您把它变得太复杂了。这正是这个术语的重点。
“卷”是操作系统可以寻址的二级数据存储单元。确实如此。定义结束。
我指出这一点的原因是,“卷”这个术语用于抽象出底层数据存储和访问机制的所有细节,并强调它们在呈现给用户时是如何相同的。
该术语不关心它采用什么物理介质形式(HDD、SSD、USB、SDC、CD/DVD 等)。它也不关心它具有什么内部数据结构(分区、RAID、RAW、ISO-9660 等),也不关心它使用什么协议(IDE/SCSI/SATA/SAS、NVMe、光纤 HBA + LUN、iSCSI、SMB/NFS/SSHFS 等)。
之所以使用“体积”这个术语,正是因为它没有明确暗示这些技术中的任何一个。
您花费了大量精力担心如何使用您熟悉的特定设备+协议+软件堆栈来实现卷,但这与该术语的实际用途/实用性背道而驰。
希望有帮助