磁盘基础结构(理论)
参考URL:
http://my.ece.msstate.edu/faculty/reese/EE3724/lectures/fixdisk/
http://superuser.com/questions/974581/chs-to-lba-mapping-disk-storage
http://lnx.cx/docs/vdg/output/Virtual-Disk-Operations.html
http://www.c-jump.com/CIS24/Slides/DiskDrives/DiskDrives.html 重点参考
磁盘基本单位
整体概念 Paste_Image.png Paste_Image.png- Disc:每个硬盘一般会包含多个磁片Disc,每个Disc可以是单面读写数据、也可以是多面读写数据。
- Head:读写磁盘的磁头,整个硬盘的所有磁头位置是固定在一起的,移动的动作是基于所有磁头的。针对双面Disc,会有正反两个磁头对应。
- Track:每个磁盘上的多个同心圆。
- Cylinder:多个磁盘上(正反两面)相同同心圆组成的柱状,用于描述多个磁盘上相同Track位置的数据集。
- Sector:每个Track可以进一步划分为多个小的区域,定义磁头一次读写的数据量,一般为512 byte或4K byte。
- 针对不同年代的硬盘,Sector的划分方式不同。
- 旧时的小容量硬盘每个Disc上每个Track都划分为等量的Sector,便于数据读取。
-
每个Track等量的Sector分配对位于Disc外部的Track非常浪费,所以近代大容量磁盘采用了一种新的划分Sector的方法,即ZBR。ZBR将磁盘不同的Track划分为多个Zone,同一Zone的Track具有等量的Sector。位于Disc外侧Zone的Track划分的Sector数量要比内侧的Zone的Track多。
Variable Sectors per Track
CYLINDER – HEAD – SECTOR (CHS)
CHS用于表述存放到物理磁盘上数据的位置。
磁盘可以被通过low level formatted为不同的容量(不同的存储方式)。
磁盘Controller通过用户提供的CHS数据,计算数据在磁盘上的物理位置,并将数据返回。
Number of cylinders (tracks), heads (sides), and sectors (aka CHS) uniquely identify thephysical geometry of the storage units on a disk
CHS also yields disk capacity:
Capacity = Cylinders × Heads × Sectors × sector_size
Designed for early IDE/ATA HDDs
C <= 1,024
H <= 16
S <= 63
This mode works for drives up to 504 MB in capacity
ECHS
CHS方式最多能描述504M的磁盘大小,所以ECHS(Extended CHS)方式出现了。
ECHS is used for drives between 504 MB and 8 GB
CHS addressing is limited to
10 bits for cylinder (<=1024)
8 bits for head (<=256), and
6 bits for sector (<=63 since first sector is 1.)
In ECHS, the actual C value is divided by 2 and the H value multiplied by 2 until:
C < 1024 or H >= 255
Reported CHS geometry = 18,383/16/63
Capacity = 9,487,392,768 B (9 GB)
In fact, this drive might very well have two platters (i.e., 4 heads)
True geometry is CHS = 73,532/4/63
The translation is handled by the disk drive controller
Zone Bit Recording
一个小容量的磁盘(<=8GB),每个track包含的Sector数量是相同的,位于磁盘外部的Track bits密度低,内部的Track bits密度高。
两个Sector
每个Track分配相同数量的Sector,对磁盘容量是一个较大的浪费,外部Track本应该容纳更多的数据。ZBR提供了一种可变的Sector/Track对应关系,使内、外Track承载不同数量的Sector,更有效的提升了磁盘容量,使更大容量的磁盘成为可能。
ZBR环境下,Cylinder、Header、Sector的位置发生了巨大的变化(见下图),所以传统的CHS寻址方式已经不能满足要求,需要寻求一种新的寻址模式。
Variable Sectors per Track Paste_Image.png Paste_Image.pngLogical Block Addressing
ZBR环境下不能使用CHS方式寻址数据了,所以引入了一种新的寻址模式,也就是LBA,LBA是基于CHS寻址方式转换而来的(Translation Method)。
其使用linear sheme表述地址,使用Sector作为基本单位(其概念中第一个Sector是Sector 0)。
LBA作为一种新的寻址方式,并不被广大操作系统和BIOS所熟知,他们依旧使用传统的CHS寻址方式,磁盘Controller会负责将LBA (physical geometry) 翻译为 CHS addressing (logical geometry) 供操作系统和BIOS使用。
Sectors and Clusters
Sector是磁盘上最小的I/O单元。
通常一个数据文件至少要占用连续的几个Sector,如果每次读写操作都需要定位到最小的Sector单位,那速度将会非常慢。所以就引入了Cluster的概念,Cluster是操作系统用于优化I/O读写速度创建的,它是逻辑上的一组Sector,每个Cluster一般会覆盖4-64个Sector(2-32KB)。