磁道(Track)

https://blog.csdn.net/badbad_boy/article/details/4313645

以前见到的很多磁道的示意图都是这样的:注意标线的位置,“指向一条线”,我当时的理解好像是这条线就是磁道。还有的解释是说磁道就是一个"同心圆"的集合

那么,我的疑问就是,既然那条线是同心圆,那么两条线之间的那快空白是什么呀? 什么也不是? 空着的? 就是为了分开磁道?晕倒。那这浪费的部分也太多了吧。毕竟两条线中间部分的宽度看起来比磁道可实在是宽太多了。

后来,查了下别的图片,才发现磁道原来应该是这样子的:不是"同心圆”,应该是"同心圆环”

到此,我关于磁道的疑问才终于有了答案。 汗自己一个!!!

后来又联想到了其他的问题:

每个磁道上的扇区数目是一样的么?

早期的磁盘每个磁道上的扇区数目是一样,限制了磁盘的容量;后来为了增大磁盘容量采用了新技术,也就是说越往外每磁道扇区数目越多

早期的硬盘是每个磁道有相同的扇区,但是现在的硬盘采用线性寻址,所以每个磁道上扇区数不一样,外面的多,里面的少.光盘跟硬盘差不多.但是用螺线的.不像硬盘采用同心圆

不过,还是可以用CHS(柱面,磁道(磁头),扇区)的方式来定位, 因为IDE磁盘做了内部转换,让你看起来好像每条磁道上面的簇数量都是一样的

0磁道是在磁盘的外圈还是内圈

由于历史原因 , 磁盘的0磁道在最外圈(过去的老式硬盘,每条磁道上的簇的数量都是一样多的。也就是说最里面和最外面的磁道的簇的数目是一样的。显然,磁密度越低,数据的安全越有保障。而MBR放在0柱面的,第0个磁道的,第1个簇上面,为了这个关键数据的安全,所以磁道要从最外开始安排。)

但是,光盘的0磁道和磁盘,软盘刚好相反,光盘的0磁道是在最内圈的

尽管扇区是能独立寻址的最小单位,但资源分配的最小单位是簇

所以文件的大小和文件所占用的磁盘空间是不同的。所占用的磁盘空间往往多余文件的大小

硬盘簇的大小设为多少才合适

默认的情况下,在格式化的时侯如果没有指定簇的大小,那么系统会根据分区的大小选择默认的簇值

其实在NTFS文件系统中格式化的时候,可以在"Format"命令后面添加”/a:UnitSize"参数来指定簇的大小,UnitSize表示簇大小的值,NTFS支持512/1024/2048/4096/8192/16K/32K/64KB

在NTFS文件系统中,簇的大小会影响到磁盘文件的排列,设置适当的簇大小可以减少磁盘空间丢失和分区上碎片的数量。如果簇设置过大,会影响到磁盘存储效率;反之如果设置过小,虽然会提高利用效率,但是会产生大量磁盘碎片.

IOPS

IOPS(Input/Output Per Second)即每秒的输入输出量(或读写次数),即指每秒内系统能处理的I/O请求数量。随机读写频繁的应用,如小文件存储等,关注随机读写性能,IOPS是关键衡量指标。可以推算出磁盘的IOPS = 1000ms / (Tseek + Trotation + Transfer),如果忽略数据传输时间,理论上可以计算出随机读写最大的IOPS。常见磁盘的随机读写最大IOPS为: - 7200rpm的磁盘 IOPS = 76 IOPS - 10000rpm的磁盘IOPS = 111 IOPS - 15000rpm的磁盘IOPS = 166 IOPS

吞吐量

吞吐量(Throughput),指单位时间内可以成功传输的数据数量。顺序读写频繁的应用,如视频点播,关注连续读写性能、数据吞吐量是关键衡量指标。它主要取决于磁盘阵列的架构,通道的大小以及磁盘的个数。不同的磁盘阵列存在不同的架构,但他们都有自己的内部带宽,一般情况下,内部带宽都设计足够充足,不会存在瓶颈。磁盘阵列与服务器之间的数据通道对吞吐量影响很大,比如一个2Gbps的光纤通道,其所能支撑的最大流量仅为250MB/s。最后,当前面的瓶颈都不再存在时,硬盘越多的情况下吞吐量越大。

虽然15000rpm的磁盘计算出的理论最大IOPS仅为166,但在实际运行环境中,实际磁盘的IOPS往往能够突破200甚至更高。这其实就是在系统调用过程中,操作系统进行了一系列的优化。

那么操作系统是如何操作硬盘的呢?类似于网络的分层结构,下图显示了Linux系统中对于磁盘的一次读请求在核心空间中所要经历的层次模型。从图中看出:对于磁盘的一次读请求,首先经过虚拟文件系统层(VFS Layer),其次是具体的文件系统层(例如Ext2),接下来是Cache层(Page Cache Layer)、通用块层(Generic Block Layer)、I/O调度层(I/O Scheduler Layer)、块设备驱动层(Block Device Driver Layer),最后是物理块设备层(Block Device Layer)。