文件首簇号多少个字节|ntfs文件系统中多个 datarun的起始逻辑簇号是如何计算的

❶ 簇是存储文件的最小单位

簇是存储文件的最小单位,一个文件有多少个簇取决于文件大小和簇的大小,比如:簇的大小为4K,文件大小为6K,那么这个文件就占用2个簇,一个簇只能存一个文件或是一个文件的部分,这也就是小文件越多,磁盘占用空间越大的原因。

❷ 软盘是什么格式的

FAT12////////////////////FAT12文件系统简介 本文主要介绍以3.5英寸的1.44M标准格式化的FAT12文件系统的软盘为介绍对象。这里强调那么多是因为:1.44M的软盘格式化可以不是1.44M,可以大于也可以小于;格式化的文件系统也可以不是FAT12。 为什么会出现正常的1.44M软盘格式化后可大可小的情况呢?从软盘及软盘驱动器原理出发,软盘的寻址方式(可以认为是读取数据的方式)是:CHS,C = Cylinder(柱面),H = Header(磁头),S = Sector(扇区)。标准地格式化后,磁盘将被格式化为 每面80磁道(80个同心圆,柱面),每个磁道有18个扇区,每个扇区是 512字节,那么高密3.5英寸软盘的容量为:2×80×18×512 = 1474560 Byte = 1440 KB = 1.44 MB。然而,软盘可以不格式为80磁道,每个磁道也可以不是18扇区,这是题外话,如果您有兴趣,可以用古老的HDCopy试试。 文件存储到磁盘上时至少要占用1个扇区,即使这个文件只有1个字节,如果文件有513字节,那就得占用2个扇区,下一个文件就不能用这只使用了一个字节的扇区。即软盘以扇区为单位存储文件。现在用下面的假设来说明本文的目的: 假设只有18个扇区的磁盘,以 0 – 17 编址,如果一个文件保存在 1 – 6扇区,另一文件保存在 7 – 16扇区,如果我们对第一个文件增加了内容,又需要一个扇区来保存它,但由于文件连续存储, 7号扇区是第二个文件的,我们当然不能用它,只有最后留有一个扇区可用,我们会不会把第二个文件先挪到8-17扇区以腾出一个扇区来给第一个文件使用呢?当只有少数两个文件的时候可以,但有很多文件的时候会变得麻烦起来。如果我们用一个表来表示有一个文件占用了 1-6扇区 和 17扇区,那事情就简单了——我们不必为文件不连续而烦恼。这个表就叫它:文件分配表(File Allocation Table)。那怎样才能知道这个文件存储的文件名和文件存放的起始扇区?再建一个表,用于存放文件名、起始扇区、文件创建时间、文件实际大小等等资料,这个表叫:文件目录表(File Directory Table)。将这两个表放在磁盘指定的位置,以便操作系统使用,磁盘的其它扇区全都用来存放文件的实际内容,这就构成了有文件系统的磁盘。 磁盘上,0面0磁道第1扇区用于存放引导程序,如果这512字节最后两个字节分别是0x55,0xAA(一个字是0xAA55),称为可引导标志,BIOS会将这512字节读取出来执行,操作系统便是利用这里来实现引导的。标识软盘是不是FAT12并不是没有根据的,在这512字节中,还有一个设备头用于标识这个软盘(设备),例子如下:;===========================================================================; 程序执行的第一条指令必须是跳转(如果你想使用FAT12这类文件系统的磁盘); 必须占用3字节;===========================================================================jmp SHORT main ; 2 bits,跳转到主程序执行nop ; 1 bit;===========================================================================; FAT12 文件系统头,从NYAOS 借过来的,可以参考相关的文档以获得更多细节; 这个块会让 Winimage 认出编译后的二进制文件为有效的引导文件; 如果不使用这个块,Winimage将不会将其作为引导程序处理; 但我们可以借助其它方法和工具处理,比如DEBUG;===========================================================================bsOEM db "ExOS0.02" ; OEM String,任意你喜欢的8字节ASCII码bsSectSize dw 512 ; Bytes per sectorbsClustSize db 1 ; Sectors per clusterbsRessect dw 1 ; # of reserved sectorsbsFatCnt db 2 ; # of fat copiesbsRootSize dw 224 ; size of root directorybsTotalSect dw 2880 ; total # of sectors if < 32 megbsMedia db 0xF0 ; Media DescriptorbsFatSize dw 9 ; Size of each FATbsTrackSect dw 18 ; Sectors per trackbsHeadCnt dw 2 ; number of read-write headsbsHidenSect dd 0 ; number of hidden sectorsbsHugeSect dd 0 ; if bsTotalSect is 0 this value is ; the number of sectorsbsBootDrv db 0 ; holds drive that the bs came frombsReserv db 0 ; not used for anythingbsBootSign db 29h ; boot signature 29hbsVolID dd 0 ; Disk volume ID also used for temp ; sector # / # sectors to loadbsVoLabel db "NO NAME " ; Volume LabelbsFSType db "FAT12 " ; File System type <- FAT 12文件系统;===========================================================================; Main start here;===========================================================================main:#至于如何引导计算机,可以参考我Blog里的more.asp?name=xemean&id=2 0面0道第2扇区到第10扇区的9个扇区是FAT表的存放位置,为了预防,0面0道的第11扇区到1面0道第1扇区的9个扇区是第2个FAT表的存放位置,这第2个FAT是备用的,当第一个FAT出了问题里,可以用第2个FAT。1面0道的第2扇区起到1面0道的第15扇区(共14个扇区)用于存放 FDT。FDT没有备份,所以没有第二个FDT。这里要注意的是,磁盘为了读写的速度,0面0道的18个扇区接下来的是 1面0道的扇区,而不是0面1道,因为0面0道跟1面0道同在一个柱面上(同心圆),只是用的磁头不同。 FAT12 中,每个文件分配表项只占12位(bit),即1.5字节(byte),每个表项代表一个扇区,在这里,磁盘只有扇区的概念,磁盘里所有扇区都被类似于上一段提到的磁盘读写方式线性地编址(LBA),不再有CHS。这里还要提一提簇的概念:DOS会把2个扇区作为一簇,那么文件就要以簇为单位读写。簇的大小通常根据磁盘的大小设定,以尽可能少浪费磁盘空间为本。 FAT12每个表项的值指出文件存放的下一个扇区号,同时也是表项入口。比如如果文件的存放的第一个扇区是002,那系统首先找FAT的002,在002处得到一个值003,表示文件下一个扇区是003号,再接着003表项找,得到006…,表项的值含义如下:000 – 此簇未用;FF8 – FFF 该簇为文件的最后一簇;FF0 – FF7,此簇为坏,不可用;其它值表示文件下一簇的簇号。 下面的图来说明FAT的基本原理:表项编号 值(16位) 备注 000 | FF0 | <- 000 项 001项为表头,1字节 0xF0表示存储介质001 | FFF | <- 2、3字节为 0xFFFF ,固定值,FAT标志002 | 003 | <- 文件下一簇为003003 | 005 | <- 下一簇:005004 | FF7 | <- 坏簇,不可用005 | 011 | <- 下一簇:011………………………………….011 | FF8 | <- 该文件结束012 | 000 | <- 可用簇…………………………………根据上表,我们可以知道,一个文件占用了 002,003,005,011 这4个簇。 簇号 + 31 = 逻辑扇区号 //// 31 = 保留扇区数 + 隐藏扇区数 + FAT数×每个FAT所占扇区数 + FDT所占扇区数 – 2 = 1 + 0 + 2*18 + 14 -2 LBA = 逻辑扇区号 – 1 扇区 = (LBA MOD 每道扇区数) + 1 磁道 = (LBA / 每道扇区数) / 磁头数 磁头 = (LBA / 每道扇区数) MOD 磁头数根据上面的公式,得到以下计算值:002: S = ( 32 MOD 18 ) + 1 = 15002: C = ( 32 / 18 ) / 2 = 0002: H = ( 32 / 18 ) MOD 2 = 1—————–011: S = ( ( 11+31-1) MOD 18) + 1 = 6011: C = ( ( 11+31-1) / 18) / 2 = 1011: H = ( ( 11+31-1) / 18) MOD 2 = 0 就此,我们已经可心根据簇号得到物理CHS了,那怎样才能得到一个文件的关系首簇号呢?前面我们提到了FDT。下面说说FDT的结构: 每个FDT项占32字节,分配如下:=======================0 – 7 : 8字节,文件名8 – 10: 3字节,文件扩展名11 :1字节,文件的属性12 – 15:4字节,保留16 – 21:6字节,保留22 – 23:2字节,文件最后修改时间(时分秒,5:6:5)24 – 25:2字节,文件最后修改日期(年月日,7:4:5,年取0-119对应 1980 – 2099)26 – 27:2字节,文件首簇号,我们可以根据这个值在FAT中找到文件的存储位置28 – 31:4字节,文件的长度,以字节为单位===========================0 – 7 文件名含义:0 – 目录项为空,可用;E5 – 此文件已经被删除7 – 10 :文件名和扩展名为8.3格式,如果不够,必需用空格填充,即文件名如果只有6个字节,那剩下的2个字节必须以空格填充。文件名和扩展名都是大写。11属性字节含义:00 – 普通文件;01 – 只读;02 – 隐藏;04 – 系统文件;10(1x) – 该文件是目录。

❸ 硬盘中的一簇等于多少字节

硬盘中的每个簇可以包括2、4、8、16、32或64个扇区。硬盘的存储容量=磁头数×磁道(柱面)数×每道扇区数×每道扇区字节数。所以硬盘中的一簇等于多少字节与以上硬盘的参数有关。

文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。

微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”,一个文件通常存放在一个或多个簇里,但至少要单独占据一个“簇”。 也就是说两个文件不能存放在同一个簇中。簇(CLUST)的本意就是“一群”、“一组”,即一组扇区(一个磁道可以分割成若干个大小相等的圆弧,叫扇区)的意思。因为扇区的单位太小,因此把它捆在一起,组成一个更大的单位更方便进行灵活管理。簇的大小通常是可以变化的,是由操作系统在所谓“(高级)格式化”时规定的,因此管理也更加灵活。

通俗地讲文件就好比是一个家庭,数据就是人,即家庭成员;所谓簇就是一些单元套房;扇区是组成这些单元套房的一个个大小相等的房间。一个家庭可能住在一套或多套单元房子里,但一套房子不能同时住进两个家庭的成员。

❹ ntfs文件系统中多个 datarun的起始逻辑簇号是如何计算的

文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……。通常在Windows平台下使用的3种文件系统是FAT(文件分区表),FAT32(32位文件分区表)和NTFS(NT文件系统)。在FAT文件系统下,每一个磁盘被分成固定大小的簇。簇最少为512个字节,其大小可以成倍增长,最大为32K。每个簇都是由唯一的索引号——一个16位二进制数来标识。因为16位二进制数最大为65536,所以FAT分区所拥有的簇的数量不可能超过65536个。簇的数量和大小的限制,就是FAT分区为什么不能超过2GB的原因。FAT中的入口连接着组成一个文件的各个簇,文件的目录入口包含其第一个簇的索引号,而该簇在FAT中的入口又包含着下一个簇的索引号,依此类推。一个文件的最后一簇对应的FAT入口则包含着一个特殊的文件终止符,未使用的簇和损坏的簇也会用特殊代码标识出来。FAT32文件的原理几乎与此相同,但它的簇更小,而且由于FAT32入口是32位,所以其容量理论上可以超过40亿个字节。NTFS是一个相当高级的文件系统。它的主文件表(MFT)是一个非常完整的数据库,它负责对磁盘上的每个文件进行索引。每个MFT的入口通常为1K大小,其中记录了大量的文件信息。NTFS可以在文件的MFT入口中存储非常小的文件的全部内容;对于大一些的文件,这些入口会标识出包含文件数据的簇。硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数。要点:(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头。(2)盘片被划分为多个扇形区域即扇区。(3)同一盘片不同半径的同心圆为磁道。(4)不同盘片相同半径构成的圆柱面即柱面。(5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数。(6)信息记录可表示为:××磁道(柱面),××磁头,××扇区。

❺ 文件簇是什么

文件簇其实确切点说应该叫扇区簇 。都知道一般一个扇区是512字节,文件系统会把连续回的N(具体几个就答要看文件系统的参数设定,一般为4K即8个扇区)个扇区视为一个簇,这样做是为了优化磁盘访问效率。一个文件则由文件分配表中标识的N(视文件大小而定)个扇区簇组成,各个扇区簇之间可以为不连续的(这也就是为什么要有磁盘整理软件了)。其实就是一个链表结构,如: 文件分配表->首簇->下一个簇->下一个簇->最后一个簇。


赞 (0)