存储结构主要内容:css
磁道
linux
柱面
app
分区
ide
扇区
spa
引导扇区
操作系统
主引导扇区
orm
主引导记录
xml
硬盘分区表blog
课程快结束了,开始整理之前作的冗杂的笔记,发现这部分细节方面仍是不太清楚,就查资料总体再总结一下;若是有不详细或错误之处,望共同探讨; ip
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存储一个分区信息,硬盘中分区有多少以及每一分区的大小都记在其中(目前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://sonyericssonss.blog.163.com/blog/static/109683969200911233723670/
http://zh.wikipedia.org/zh/%E4%B8%BB%E5%BC%95%E5%AF%BC%E8%AE%B0%E5%BD%95