以下内容源于网络资源的学习与整理,如有侵权请告知删除。
参考博客
简单理解磁盘结构_Guanngxu的博客-CSDN博客_磁盘的结构
目录
(1)硬盘是计算机的主要外部存储设备,如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Solid State Disk, SSD)。
(2)机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。
(1)机械硬盘的内部主要由盘片、磁头、主轴与传动轴等组成,每个盘片包含上下两个盘面,每个盘面都对应着一个读/写磁头。
(2)盘片是承载数据存储的介质,它上面附着有磁粉,磁粉的S/N极分别代表着二进制中的0和1,利用磁头的磁力控制一些磁粉的方向,就存储了特定的信息。
(3)受到硬盘体积和成本的限制,盘片数量一般控制在5片以内。盘面的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片编号为2面和3面。
(4)机械硬盘工作时,盘片的旋转速度很快(常见转速是 7200 r/min),因此在读取或写入数据时非常害怕晃动和磕碰;另外如果硬盘内部有灰尘则会造成磁头或盘片的损坏,所以机械硬盘内部是封闭的,如果不是在无尘环境下,则禁止拆开机械硬盘。
机械硬盘的逻辑结构主要分为磁道、扇区和柱面。
(1)磁道(track)
1、每个盘片在逻辑上有很多同心圆,我们将每个同心圆称作磁道。
2、盘面的磁道密度非常高,通常一个盘面就有上千个磁道。
3、相邻的磁道之间并不是紧挨着的,因为磁化单元相隔太近会相互影响。
4、最外面的同心圆就是0磁道。
(2)扇区(sector)
1、从圆心向外画直线,将每个磁道等分为若干弧段,每条磁道上的一个弧段就是一个扇区。
2、扇区是磁盘的最小存储单元。
3、扇区的大小一般是 512Byte,但部分厂商设定每个扇区的大小是4096字节。
4、外侧磁道的扇区面积大,内侧磁道的扇区面积小。
5、以前的磁盘,每条磁道的扇区数目是一样的,每条磁道可以存储的数据量是一样的,因此外侧的磁道数据密度小,内侧磁道数据密度大。现在的磁盘,每条磁道的数据密度都是一样的,因此越外侧的磁道,其扇区数目就越多,能够存储的数据量就越大。
(3)柱面(cylinder)
1、硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”向内进行磁道编号,具有相同编号的磁道会形成一个圆柱,称之为磁盘的柱面。
2、从柱面含义中得知,磁盘的柱面数与一个盘面上的磁道数是相等的。
(1)磁盘容量计算公式如下,其中磁头数(heads)表示磁盘一共有多少个盘面(因为一个盘面对应一个磁头);柱面数(cylinders)表示一个盘面有几条磁道。
磁盘容量= 磁头数(盘面数) x 柱面数(磁道数) x 每条磁道的扇区数 x 每个扇区的字节数
(2)比如下面是使用“fdisk -l”列出的磁盘分区情形,从中可以看出,磁盘共有255个盘面,每个盘面有2610条磁道,每条磁道有63个扇区(setcors/track表示每磁道多少扇区),每个扇区大小是512字节,按理有255*63*2610=419299650个扇区,但为何与显示的不一致?
root@ubuntu:/# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors Units = 扇区 of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000bf9a1 设备 启动 起点 终点 块数 Id 系统 /dev/sda1 * 2048 37750783 18874368 83 Linux /dev/sda2 37752830 41940991 2094081 5 扩展 /dev/sda5 37752832 41940991 2094080 82 Linux 交换 / Solaris root@ubuntu:/#
(1)读写的方式
磁盘读写数据时,是按柱面进行的。首先从盘面0(磁头0)开始进行操作,依次往上在同一柱面的不同盘面(磁头上)进行操作,同一柱面的所有磁头全部读写完毕后,全部磁头才转移到下一个柱面。这是因为全部的磁头都连接在同一个磁臂上,因此只能“共进退”。
(2)读写的时间
1、读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。
2、寻道时间,表示磁头移动到数据所在磁道所需要的时间。目前磁盘的平均寻道时间一般在3至15ms,一般都在10ms左右。
3、延迟时间,表示盘片将数据所在的扇区旋转到读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,普通硬盘一般都是7200rpm,慢的5400rpm。
4、传输时间,表示完成数据传输所需要的时间。
5、为提高磁盘传输效率,软件应着重考虑减少寻道时间和延迟时间。
机械硬盘通过接口与计算机主板进行连接。硬盘的读取和写入速度与接口有很大关系。大家都见过大礼堂吧,大礼堂中可以容纳很多人,但是如果只有一扇很小的门,那么人是很难进入或出来的,这样会造成拥堵,甚至会出现事故。机械硬盘的读取和写入也是一样的,如果接口的性能很差,则同样会影响机械硬盘的性能。
目前,常见的机械硬盘接口有以下几种:(1)IDE 硬盘接口
Integrated Drive Eectronics,并口,即电子集成驱动器,也称作 "ATA硬盘" 或 "PATA硬盘",是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s(此速度为理论平均值),IDE 硬盘接口如图所示。
(2)SATA 接口
Serial ATA,是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值),如图所示。
(3)SCSI 接口
Small Computer System Interface,小型计算机系统接口,广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及热插拔等优点,理论传输速度达到 320MB/s,如图所示。
(1)与机械硬盘采用盘片存储数据不同,固态硬盘采用存储芯片进行数据存储。
(2)固态硬盘的存储芯片主要分为两种,即闪存与DRAM。
(3)目前市场主要采用闪存作为存储介质的固态硬盘,如图所示。固态硬盘内主体其实就是一块PCB板,PCB板上最基本的配件就是控制芯片,缓存芯片(低端硬盘无缓存芯片)和用于存储数据的闪存芯片。
固态硬盘和机械硬盘对比如下所示。
由此可以看出,固态硬盘因为丟弃了机械硬盘的物理结构,所以相比机械硬盘具有了低能耗、无噪声、抗震动、低散热、体积小和速度快的优势;不过价格相比机械硬盘更高,而且使用寿命有限。
(1)关于块的概述
1、磁盘块,简称“块”,是虚拟出来的概念。它是操作系统中最小的逻辑存储单位,或者说操作系统与磁盘打交道的最小单位是磁盘块,或者说块是操作系统针对硬盘读写的最小单元。
2、块与簇其实是同一个概念,只是不同文件系统下的叫法不同。在Windows下如NTFS等文件系统中就叫做簇(cluster),在Linux下如Ext4等文件系统中就叫做块(block)。
3、既然磁盘块是一个虚拟概念,是操作系统规定的软件的概念,不是真实的,那么其大小可以由操作系统决定与配置。每个块包括2的n次方个扇区,这个的n是可以修改的。下图是每个块包括2个扇区的示意图。
4、在window的命令行中输入“fsutil fsinfo ntfsinfo F:”显示如下, 可知这里的一个簇是4KB,扇区大小是512B,因此这里的一个簇是由8个扇区组成的。
(2)磁盘块的意义
主要是为了读取方便。由于扇区的数量众多,在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。或者通俗地理解,操作系统(其实是文件系统,但文件系统是操作系统的一部分,所以这里说操作系统)不是一个扇区一个扇区地去读数据的,因为这样速度太慢了,它是一个块一个块地去读取数据的,块才是文件存取的最小单位。
(3)扇区与磁盘块的映射
1、磁盘控制器除了读取数据、控制磁头等作用外,还负责映射扇区和磁盘块的关系。
2、磁盘控制器以扇区为单位读取磁盘数据,操作系统以块为单位读取磁盘数据。
为了方便操作系统和硬盘之间的交流,虚拟出了“块”这个基本单位,它是操作系统与硬盘交流的最小单位。类似的,为了方便操作系统和内存之间的交流,虚拟出了“页”这个基本单位,它是操作系统与内存交流的最小单位。
操作系统是以块为单位进行数据读取的,而磁盘控制器是以扇区为单位读取磁盘数据。一个块的大小是扇区大小的整数倍,有利于磁盘的IO,不然(比如2.5个扇区为一个块)会对扇区进行分割。
(1)一块全新的硬盘,必须进行初始分区。初始分区分为MBR分区、GPT分区这两种方法,对应着MBR分区表和GPT分区表。
(2)这里的初始分区是指只进行分区,还没有进行格式化。格式化是指定这块硬盘的某个分区采用什么文件系统。分区广义的概念是包括初始分区与格式化。
暂略。