乱世枭雄评书下载视频传送门:电脑小白科普计划--硬盘基础知识科普_趣味科普人文_科技_bilibili_哔哩哔哩
众所周知,硬盘分为很多种,有SSD,HDD,HHD。 今天我们在这里介绍的就是HDD。
总体来说,硬盘结构包括:盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部份。
所有的盘片(一般硬盘里有多个盘片,盘片之间平行)都固定在一个主轴上。在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离很小(所以剧烈震动容易损坏),磁头连在一个磁头控制器上,统一控制各个磁头的运动。磁头沿盘片的半径方向动作,而盘片则按照指定方向高速旋转,这样磁头就可以到达盘片上的任意位置了。
磁头(head)、 磁道(track)、 柱面(cylinder)、扇区(sector)、 圆盘(platter)。那么这些都代表着什么呢?
如图5所示,我们把一个圆盘沿着半径切成几个扇形,这就叫做一个扇面,然后我们再沿着磁头的运动把这个原盘画成几个同心圆,每个原形的轨道就叫做一个磁道,然后被扇形和同心圆分离出来的小区域就叫做扇区。
再看图4,一般都有几个圆盘,每个盘片有上下两面,分别对应一个磁头。每个圆盘上下对应相同位置的扇区组成一个柱面。注意,每个扇区的大小为512bytes,这个值是不会改变的。扇区也是我们在分割硬盘时最小单位了。
一种常见于工作站等级以上的硬盘传输接口,这里IDE、SATA、PCIE等等就不再赘述,SCSI这种接口的硬盘在控制器上含有一块处理器,所以除了运转速度快之外,也比较不会耗费CPU资源。在个人计算机上面这种接口的硬盘不常见。
硬盘上面含有一个缓冲存储器,这个内存主要可以将硬盘内重使用的数据缓存起来,以加速系统的读取性能。通常这个缓冲存储器越大越好,因为缓冲存储器的速度要比数据从硬盘中被找出来快得多。
看右上角有一个64MB Cache,说明这个硬盘有64MB的缓存,目前主流产品可达64MB左右的缓存大小。
由于硬盘内部机械手臂上的磁头与盘片的接触时很细微的空间,如果有抖动或者是脏污在磁头与硬盘之间,就会造成数据的损毁或者使硬盘 整个损毁。因此,正确使用计算机的方式,应该是在计算机通电之后,就绝对不要移动主机,避免硬盘抖动,而导致整个硬盘数据发生问题。另外,也不要随便将插头拔掉就以为是顺利关机。因为机械手臂必须要归回原位,所以使用操作系统的正常关机方式才能够有比较好的硬盘保养,因为它会让硬盘的机械手臂归回原位。
硬盘的两个单位,扇区(Sector)和柱面(Cylinder),其中每个扇区大小为512bytes。
那么是不是每个扇区都一样重要呢?其实整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要的信息,分别是:
MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常重要了!
那么分区表又是什么呢?其实你刚刚拿到的整块硬盘就像一根原木,你必须要在这跟原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具。如果没有进行切割,那么原木就不能被有效地使用。同样的道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用。
怎么分区呢?首先你要有一个锯子,然后扔了,别想不开。上面的那个图中有柱面有开始柱面和结束柱面。那是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考柱面号码的方式来处理。在分区表所在的64bytes容量中,总共分为四组记录去,每组记录区记录了该区段的启始与结束的柱面号码。若将硬盘以长条形来看,然后将柱面以柱形图来看,那么那64bytes的记录区段如图所示。
假设上面的硬盘设备文件名为/dev/hda时,那么这四个分区在Linux系统中的设备文件名如下所示,重点在于文件名后面会再接一个数字,这个数字与该分区所在的位置有关。
上图我们假设硬盘只有400个柱面,共分区成为四个分区,第四个分区所在为第301到400号柱面的范围。当你的操作系统是Windows时,那么第一到第四个分区的代号应该就是C,D,E,F。当你有数据要写入F盘时,你的数据会被写入到这块磁盘的301~400号柱面之间。
由于分区表就只有64bytes而已,最多只能容纳四个分区,这四个分区被称为主(Primary)或扩展(Extended)分区。
既然分区表只有记录四组数据的空间,那么是否代表我一块硬盘最多只能分区出四个分区?Of course not.
对电脑稍微有一点了解的人都知道,你可以将一块硬盘分区成十个以上的分区。那么这又是怎么样实现的呢?在Windows/Linux系统中,我们是通过刚才谈到的扩展分区的方式来处理的。扩展分区的想法是:既然第一个扇区所在的分区表只能记录四条数据,那我可否利用额外的扇区来记录更多的分区信息?如图所示。
在图中,我们硬盘四个分区记录仅仅使用了两个,P1为主分区,而P2则为扩展分区。注意,扩展分区的目的是使用额外的扇区来记录分区信息,扩展分区本身并不能被拿来格式化。然后我们可以通过扩展分区所指向的那个区块继续作分区的记录。
图中右下方那个区块有继续分区出五个分区,这五个由扩展分区分配继续切出来的分区,就被称为逻辑分区(logical partition)。注意:由于逻辑分割槽是由扩展分配继续分割出来的,所以他可以使用的磁柱范围就是扩展分配所配置的范围。也就是图中的101~400。 但是图中分区在Linux系统中的设备文件名分别如下:
为什么设备文件名没有/dev/hda3和/dev/hda4呢?因为前面四个号码都是保留给Primary和Extended用的。所以逻辑分区的设备名称号码就从5号开始了。
事实上,分区是个很麻烦的东西,因为他是以磁柱为单位的连续磁盘空间,且扩展分区又是个类似独立的磁盘空间,所以在分区的时候得要特别注意。
Q:在Windows操作系统当中,如果你想要将D与E盘整合成为一个新的分区,而如果有两种分区的情况如下图所示, 图中的特殊颜色区块为D与E盘的示意,请问这两种方式是否均可将D与E整合成为一个新的分区?A:第一个图中两个有色的分区是可以合并的,因为上图的D与E同属于扩展分区内的逻辑分区,因此只要将两个分区删除,然后再重新创建一个新的分区, 就能够在不影响其他分区的情况下,将两个分区的容量整合成为一个。
而第二图中的就不可以,因为D与E分属主分区与逻辑分区,两者不能够整合在一起。除非将扩展分区破坏掉后再重新分区。但如此一来会影响到所有的逻辑分区,要注意的是:如果扩展分区被破坏,所有逻辑分区将会被删除。 因为逻辑分区的信息都记录在扩展分区里面。
由于第一个磁区所记录的分区表与MBR是这么的重要,几乎只要读取硬盘都会先由这个扇区先读起。 因此,如果整颗硬盘的第一个磁区(就是MBR与Partition Table所在的磁区)物理实体坏掉了,那这个硬盘大概就没有用了!因为系统如果找不到分区表,怎么知道如何读取柱面区间呢?
Q:如果我想将一颗大硬盘暂时分区成为四个Partitions,同时还有其他的剩余容量可以让我在未来的时候进行规划, 我能不能分割出四个Primary?若不行,那么你建议该如何分区?A:由于Primary+Extended最多只能有四个,其中Extended最多只能有一个,这个例题想要分割出四个分区且还要预留剩余容量, 因此P+P+P+P的分区方式是不适合的。因为如果使用到四个P,则即使硬盘还有剩余容量, 因为无法再继续分区,所以剩余容量就被浪费掉了。
假设你想要将所有的四个记录都花光,那么P+P+P+E是比较适合的。所以可以用的四个Partitions,有3个主分区和一个逻辑分区, 剩余的容量在扩展分区中。 如果你要分区超过4个以上时,一定要有Extended分区,而且必须将所有剩下的空间都分配给Extended, 然后再以Logical的分区来规划Extended的空间。 另外,考虑到磁盘的连续性,一般建议将Extended的柱面号码分配在最后面的柱面内。
了解主板的人知道有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的主要任务有底下这些项目:
上面前两点还容易理解,但是第三点就有深意了。那表示你的计算机系统里面可以具有两个以上的引导加载程序。虽然我们的硬盘只有一个MBR,但是引导加载程序除了可以安装在MBR之外,还可以安装在每个分区的引导扇区(boot sector)。分区还有各自的引导扇区。这个特色才能造就多重启动的功能。
举个例子,假设电脑只有一个硬盘,里面分成四个分区,其中第一、二分区分别安装了Windows及Linux,你要如何在开机的时候选择用Windows还是Linux开机呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的引导加载程序, 那么整个流程可以图示如下:
在上图中我们可以发现,MBR的引导加载程序提供两个菜单,菜单一(M1)可以直接加载Windows的核心文件来开机;菜单二(M2)则是将引导加载工作交给第二个分区的引导扇区(boot sector)。当使用者在启动的时候选择菜单二时,那么整个引导加载工作就会交给第二分区的引导加载程序了。 当第二个引导加载程序启动后,该引导加载程序内(上图中)仅有一个开机菜单,因此就能够使用Linux的核心文件来启动罗。这就是多重启动的工作情况。我们将上图作个总结:
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私房菜》和另一个大神的博客,具体忘记叫什么了,实在不好意思。
|