UC网络

 找回密码
 立即注册
查看: 106|回复: 20

硬盘基础知识科普

[复制链接]

1

主题

5

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-7-23 16:20:42 | 显示全部楼层 |阅读模式
My name is Gavin, my email is gavinnicholas0921@gmail.com

本文的许多内容已经有一定的历史,比如IDE接口,目前早已退出很久,见不到了,但依然有很多基础性的知识不受影响,所以大家可以慢慢阅读,获取一些对自己有用的知识,感谢您的阅读。

视频传送门:电脑小白科普计划--硬盘基础知识科普_趣味科普人文_科技_bilibili_哔哩哔哩
本文地址:https://gavin_nicholas.coding.me/2017/06/28/Hard-Disk-Drive/
引语

众所周知,硬盘分为很多种,有SSD,HDD,HHD。 今天我们在这里介绍的就是HDD。




物理结构

总体来说,硬盘结构包括:盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部份。


所有的盘片(一般硬盘里有多个盘片,盘片之间平行)都固定在一个主轴上。在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离很小(所以剧烈震动容易损坏),磁头连在一个磁头控制器上,统一控制各个磁头的运动。磁头沿盘片的半径方向动作,而盘片则按照指定方向高速旋转,这样磁头就可以到达盘片上的任意位置了。
磁盘术语

磁头(head)、 磁道(track)、 柱面(cylinder)、扇区(sector)、 圆盘(platter)。那么这些都代表着什么呢?




如图5所示,我们把一个圆盘沿着半径切成几个扇形,这就叫做一个扇面,然后我们再沿着磁头的运动把这个原盘画成几个同心圆,每个原形的轨道就叫做一个磁道,然后被扇形和同心圆分离出来的小区域就叫做扇区。
再看图4,一般都有几个圆盘,每个盘片有上下两面,分别对应一个磁头。每个圆盘上下对应相同位置的扇区组成一个柱面。
注意,每个扇区的大小为512bytes,这个值是不会改变的。扇区也是我们在分割硬盘时最小单位了。
SCSI接口

一种常见于工作站等级以上的硬盘传输接口,这里IDE、SATA、PCIE等等就不再赘述,SCSI这种接口的硬盘在控制器上含有一块处理器,所以除了运转速度快之外,也比较不会耗费CPU资源。在个人计算机上面这种接口的硬盘不常见。
缓冲存储器

硬盘上面含有一个缓冲存储器,这个内存主要可以将硬盘内重使用的数据缓存起来,以加速系统的读取性能。通常这个缓冲存储器越大越好,因为缓冲存储器的速度要比数据从硬盘中被找出来快得多。


看右上角有一个64MB Cache,说明这个硬盘有64MB的缓存,目前主流产品可达64MB左右的缓存大小。
运转须知

由于硬盘内部机械手臂上的磁头与盘片的接触时很细微的空间,如果有抖动或者是脏污在磁头与硬盘之间,就会造成数据的损毁或者使硬盘 整个损毁。因此,正确使用计算机的方式,应该是在计算机通电之后,就绝对不要移动主机,避免硬盘抖动,而导致整个硬盘数据发生问题。另外,也不要随便将插头拔掉就以为是顺利关机。因为机械手臂必须要归回原位,所以使用操作系统的正常关机方式才能够有比较好的硬盘保养,因为它会让硬盘的机械手臂归回原位。
有时候因为环境问题,计算机内部的风扇常常会卡灰尘而造成一些声响。很多朋友只要听到这种声响都是二话不说,用力拍几下机箱,大力出奇迹,然后就没有声音了。现在你知道了,这样做的后果常常就是你的硬盘容易坏掉。
存储机制

硬盘的两个单位,扇区(Sector)和柱面(Cylinder),其中每个扇区大小为512bytes。
那么是不是每个扇区都一样重要呢?其实整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要的信息,分别是:

  • 主引导分区(Master Boot Record, MBR):可以安装引导加载程序的地方,有446bytes。
  • 分区表(Partition Table):记录整块硬盘分区的状态,有64bytes。
MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常重要了!


那么分区表又是什么呢?其实你刚刚拿到的整块硬盘就像一根原木,你必须要在这跟原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具。如果没有进行切割,那么原木就不能被有效地使用。同样的道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用。
磁盘分区表(Partition Table)

怎么分区呢?首先你要有一个锯子,然后扔了,别想不开。上面的那个图中有柱面有开始柱面和结束柱面。那是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考柱面号码的方式来处理。在分区表所在的64bytes容量中,总共分为四组记录去,每组记录区记录了该区段的启始与结束的柱面号码。若将硬盘以长条形来看,然后将柱面以柱形图来看,那么那64bytes的记录区段如图所示。


假设上面的硬盘设备文件名为/dev/hda时,那么这四个分区在Linux系统中的设备文件名如下所示,重点在于文件名后面会再接一个数字,这个数字与该分区所在的位置有关。
P1:/dev/hda1
P2:/dev/hda2
P3:/dev/hda3
P4:/dev/hda4
上图我们假设硬盘只有400个柱面,共分区成为四个分区,第四个分区所在为第301到400号柱面的范围。当你的操作系统是Windows时,那么第一到第四个分区的代号应该就是C,D,E,F。当你有数据要写入F盘时,你的数据会被写入到这块磁盘的301~400号柱面之间。
由于分区表就只有64bytes而已,最多只能容纳四个分区,这四个分区被称为主(Primary)或扩展(Extended)分区。
来整理一下

  • 其实所谓的“分区”只是针对那个64bytes的分区表机型设置而已。
  • 硬盘默认的分区表仅能写入四组分区信息。
  • 这四组分区信息我们称为主(Primary)或扩展(Extended)分区。
  • 分区的最小单位为柱面(Cylinder)。
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。
分区详情

既然分区表只有记录四组数据的空间,那么是否代表我一块硬盘最多只能分区出四个分区?
"Of course not."
对电脑稍微有一点了解的人都知道,你可以将一块硬盘分区成十个以上的分区。那么这又是怎么样实现的呢?在Windows/Linux系统中,我们是通过刚才谈到的扩展分区的方式来处理的。扩展分区的想法是:既然第一个扇区所在的分区表只能记录四条数据,那我可否利用额外的扇区来记录更多的分区信息?如图所示。


在图中,我们硬盘四个分区记录仅仅使用了两个,P1为主分区,而P2则为扩展分区。注意,扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。然后我们可以通过扩展分区所指向的那个区块继续作分区的记录。
图中右下方那个区块有继续分区出五个分区,这五个由扩展分区分配继续切出来的分区,就被称为逻辑分区(logical partition)。注意:由于逻辑分割槽是由扩展分配继续分割出来的,所以他可以使用的磁柱范围就是扩展分配所配置的范围。也就是图中的101~400。 但是图中分区在Linux系统中的设备文件名分别如下:
P1:/dev/hda1
P2:/dev/hda2
L1:/dev/hda5
L2:/dev/hda6
L3:/dev/hda7
L4:/dev/hda8
L5:/dev/hda9
为什么设备文件名没有/dev/hda3和/dev/hda4呢?
因为前面四个号码都是保留给Primary和Extended用的。所以逻辑分区的设备名称号码就从5号开始了。
部分小结


  • 主分区与扩展分区最多可以有四个(硬盘的限制)。
  • 扩展分区最多只能有一个(操作系统的限制)。
  • 逻辑分区是由扩展分区继续切割出来的分区。
  • 能够被格式化后作为数据存取的分区为主分区与逻辑分区。扩展分区无法格式化。
  • 逻辑分区的数量随着操作系统不同而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号), SATA硬盘则有11个逻辑分区(5号到15号)。
事实上,分区是个很麻烦的东西,因为他是以磁柱为单位的"连续"磁盘空间,且扩展分区又是个类似独立的磁盘空间,所以在分区的时候得要特别注意。
如下面的两个例子。


Q:在Windows操作系统当中,如果你想要将D与E盘整合成为一个新的分区,而如果有两种分区的情况如下图所示, 图中的特殊颜色区块为D与E盘的示意,请问这两种方式是否均可将D与E整合成为一个新的分区?A:第一个图中两个有色的分区是可以合并的,因为上图的D与E同属于扩展分区内的逻辑分区,因此只要将两个分区删除,然后再重新创建一个新的分区, 就能够在不影响其他分区的情况下,将两个分区的容量整合成为一个。
而第二图中的就不可以,因为D与E分属主分区与逻辑分区,两者不能够整合在一起。除非将扩展分区破坏掉后再重新分区。但如此一来会影响到所有的逻辑分区,要注意的是:如果扩展分区被破坏,所有逻辑分区将会被删除。 因为逻辑分区的信息都记录在扩展分区里面。
由于第一个磁区所记录的分区表与MBR是这么的重要,几乎只要读取硬盘都会先由这个扇区先读起。 因此,如果整颗硬盘的第一个磁区(就是MBR与Partition Table所在的磁区)物理实体坏掉了,那这个硬盘大概就没有用了!因为系统如果找不到分区表,怎么知道如何读取柱面区间呢?
更多的例子
1.
Q:如果我想将一颗大硬盘"暂时"分区成为四个Partitions,同时还有其他的剩余容量可以让我在未来的时候进行规划, 我能不能分割出四个Primary?若不行,那么你建议该如何分区?A:由于Primary+Extended最多只能有四个,其中Extended最多只能有一个,这个例题想要分割出四个分区且还要预留剩余容量, 因此P+P+P+P的分区方式是不适合的。因为如果使用到四个P,则即使硬盘还有剩余容量, 因为无法再继续分区,所以剩余容量就被浪费掉了。
假设你想要将所有的四个记录都花光,那么P+P+P+E是比较适合的。所以可以用的四个Partitions,有3个主分区和一个逻辑分区, 剩余的容量在扩展分区中。 如果你要分区超过4个以上时,一定要有Extended分区,而且必须将所有剩下的空间都分配给Extended, 然后再以Logical的分区来规划Extended的空间。 另外,考虑到磁盘的连续性,一般建议将Extended的柱面号码分配在最后面的柱面内。
2.
Q:我能不能仅分割出一个Primary与一个Extended?A:当然可以,这也是早期Windows操作系统惯用的手法!此外,逻辑分区的号码在IDE可达63号,SATA则可达15号, 因此仅一个主分区与一个扩展分区即可,因为扩展分区可继续被分割出逻辑分区。
开机流程与主引导分区(MBR)

大致流程:

  • BIOS:启动主动运行的韧体,会认识第一个可启动的装置。
  • MBR:第一个可开机设备的第一个扇区内的住引导分区块,内含引导加载装置。
  • 引导加载程序(boot loader):一支可读取核心文件来运行的软件。
  • 核心文件:开始操作系统的功能。
了解主板的人知道有BIOS(Basic Input Output System)和CMOS(Complementary Metal Oxide Semiconductor)两个东西,这里简单提一下,CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个韧体(再次说明,韧体就是写入到硬件上的一个软件程序)。这个BIOS就是在启动的时候,计算机系统会主动运行的第一个程序了!
接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据用户的设置去取得能够启动的硬盘, 并且到该硬盘里面去读取第一个扇区的MBR位置。MBR这个仅有446bytes的硬盘容量里面会放置最基本的引导加载程序,此时BIOS就功成圆满,而接下来就是MBR内的引导加载程序的工作了。
这个引导加载程序的目的是在加载(load)核心文件,由于引导加载程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件,然后接下来就是核心文件的工作,引导加载程序也功成圆满,之后就是大家所知道的操作系统的任务啦!
由上面的说明我们会知道,BIOS与MBR都是硬件本身支持的功能,至于Boot loader则是操作系统安装在MBR上面的一套软件了。由于MBR仅有446bytes而已,因此这个引导加载程序是非常小而美的。 这个boot loader的主要任务有底下这些项目:

  • 提供菜单:使用者可以选择不同的启动项目,这也是多重启动的重要功能。
  • 加载核心文件:直接指向可启动的程序区段来开始操作系统。
  • 转交其他loader:将引导加载功能转交给其他loader负责。
上面前两点还容易理解,但是第三点就有深意了。那表示你的计算机系统里面可以具有两个以上的引导加载程序。虽然我们的硬盘只有一个MBR,但是引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区(boot sector)。分区还有各自的引导扇区。这个特色才能造就"多重启动"的功能。
举个例子,假设电脑只有一个硬盘,里面分成四个分区,其中第一、二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的引导加载程序, 那么整个流程可以图示如下:


在上图中我们可以发现,MBR的引导加载程序提供两个菜单,菜单一(M1)可以直接加载Windows的核心文件来开机;菜单二(M2)则是将引导加载工作交给第二个分区的引导扇区(boot sector)。当使用者在启动的时候选择菜单二时,那么整个引导加载工作就会交给第二分区的引导加载程序了。 当第二个引导加载程序启动后,该引导加载程序内(上图中)仅有一个开机菜单,因此就能够使用Linux的核心文件来启动罗。这就是多重启动的工作情况。我们将上图作个总结:

  • 每个分区都拥有自己的引导扇区(boot sector)。
  • 图中的系统分区为第一及第二分区。
  • 实际可开机的核心文件是放置到各分区内的。
  • loader只会认识自己的系统分区内的可开机核心文件,以及其他loader而已。
  • loader可直接指向或者是间接将管理权转交给另一个管理程序。
Q:为什么安装多系统最好要先安装Windows再安装Linux呢?A:Linux在安装的时候,你可以选择将启动管理程序安装在MBR或各别分割槽的启动磁区,而且Linux的loader可以手动配置菜单(就是上图的M1, M2...),所以你可以在Linux的boot loader里面加入Windows启动的选项;
Windows在安装的时候,他的安装程序会主动的覆盖掉MBR以及自己所在分割槽的启动磁区,你没有选择的机会,而且他没有让我们自己选择菜单的功能。
因此,如果先安装Linux再安装Windows的话,那MBR的启动管理程序就只会有Windows的项目,而不会有Linux的项目 (因为原本在MBR内的Linux的启动管理程序就会被覆盖掉)。
引用

本文参考了《鸟哥的Linux私房菜》和另一个大神的博客,具体忘记叫什么了,实在不好意思。
本人高三狗,做个视频不容易,还请大家多多支持一下下。
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-23 16:21:13 | 显示全部楼层
回复

使用道具 举报

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-23 16:22:04 | 显示全部楼层
可以了,只是现在都默认GPT分区了!答主有空更新一下答案吧,估计会累趴下,辛苦了!
回复

使用道具 举报

1

主题

4

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-7-23 16:22:26 | 显示全部楼层
老。。。
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-23 16:22:51 | 显示全部楼层
早就过时了吧……
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-23 16:23:36 | 显示全部楼层
SSD都已经用很久了⊙▽⊙
回复

使用道具 举报

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-7-23 16:24:32 | 显示全部楼层
多谢科普
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-23 16:24:43 | 显示全部楼层
这些炒冷饭技术有什么好处?怎么不介绍下机械硬盘如何量产的?
回复

使用道具 举报

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-7-23 16:25:41 | 显示全部楼层
感谢!
回复

使用道具 举报

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-7-23 16:26:35 | 显示全部楼层
最前面那句“you can ask me for help”用的不是太合适吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|UC网络

GMT+8, 2025-3-17 20:46 , Processed in 0.189346 second(s), 62 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表