总有人间一两风,填我十万八千梦

硬盘存储结构小结

其他 Zero、J 3683℃ 0评论

存储结构主要内容:
磁道、柱面、 分区、扇区、引导扇区、主引导扇区、主引导记录、 硬盘分区表

课程快结束了,开始整理以前做的冗杂的笔记,发现这部分细节方面还是不太清楚,就查资料整体再总结一下;如果有不详细或错误之处,望共同探讨;

磁盘结构
1.  磁盘一般有多个盘片,每个片面双面存储;
2.  磁道(Track)是盘面上由磁头磁化出来的,以盘片为中心的不同半径的同心圆区域。
3.  柱面(Cylinder)是有多个盘片的相同磁道组成的柱体;柱面是从外向内编号的,依次为0柱面,1柱面…并且根据机械特性,柱面越靠外,吞吐量越大
4.  扇区是磁道上的圆弧状区域,每段圆弧叫做一个扇区,扇区从“1”开始编号,每个扇区中的数据作为一个单元同时读出或写入。
5.  硬盘的0柱面、0磁头、1扇区是系统启动时首先读取的扇区。它由三个部分组成,主引导记录(MBR)、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,这部分标示那个分区有系统引导信息,它执行到最后的是一条JMP指令跳到操作系统的引导程序去。第二部分是disk Partition table(DPT)区(分区表),占64个字节,每16KB(原文写成了16KB,这里应该是16B)存储一个分区信息,硬盘中分区有多少以及每一分区的大小都记在其中(目前linux内核支持最多16个逻辑分区)。第三部分是magic number,占2个字节,固定为55AA。

注 1.) MBR、分区表,一般都是存在硬盘的0号扇区上。应该说0号扇区包含MBR和分区表,而不应该是MBR包含分区表。
2.)  最后的两个标志“55 AA”是分区表的结束标志,是检验主引导记录是否有效的标志;如果这两个标志被修改(有些病毒就会修改这两个标志),则系统引导时将报告找不到有效的分区表
6.  存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
7.  分区是按照柱面划分的,划分某几个相邻的柱面为一个分区,用户分区是按照大小的,但是系统会找最邻近的柱面来建立该分区,因此实际的大小会跟用户指定有小幅的出去;
8.  低格是划分磁道;高格是建立文件系统;
9.  数据是按照柱面来存储的;数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据 的读/写按柱面进行,而不按盘面进行。也就是说,一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开始写数据。读数 据也按照这种方式进行,这样就提高了硬盘的读/写效率。
10. 分区并格式化后的硬盘以扇区为基本单位;系统读取数据时每次读取一个扇区;读出数据时通过告诉磁盘控制器要读出扇区所在的柱面号、磁头号和扇区号(物理地址的三个组成部分)进行。

在Linux里有一种方法可以恢复MBR是用如下的命令:
# dd if=/boot/boot.bak of=/dev/hda bs=446 count=1

其中bs(buffer size)是指重写的字节数。为什么不是512呢?主引导扇区是一个扇区(512字节呀)?
A:答案是因为我们用上面的命令是为了修复可能被病毒修改了的主引导记录MBR,或者想把LILO卸载掉,而不是恢复整个主引导扇区。所以我们只把主引导扇区的备份文件boot.bak的前446个字节重写入主引导扇区。boot.bak是我们在安装Linux之前整个主引导分区的备份。如果我们把512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬盘DPT表也破坏掉。那就坏事了。 :-)

当然如果是最新备份过的MBR,并且由于误操作分区表被破坏还原时就要使用bs=512了
这也就是为什么进行MBR备份的时候要指定bs=512 或者 bs=1k, count=1的原因. 然后恢复时经常看到HOWTO里面是bs=446 count=1. 这个446就是指令部分的恢复, 不是DPT的恢复.

本文出自:http://molinux.blog.51cto.com/2536040/505223

转载请注明:悠然品鉴 » 硬盘存储结构小结

喜欢 (3)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址