- 磁盘结构
- head:磁头,磁头数量等于盘面数量
- track:磁道,磁盘的一圈为一条磁道
- cylinder:柱面,柱面由磁盘的所有同一磁道组成,0磁道组成0柱面,1磁道组成1柱面….
- secotr:扇区,512bytes
- 磁盘与扇区的进化
- 不同磁道的扇区数是否相同(磁盘的记录方式有两种)
- 旧式——非分区记录方式(不同磁道扇区数相同)这图是旧的记录方式,越往外面,扇区的面积越大,每个磁道所拥有的扇区数量都是一样的,而且每个扇区所能容纳的数据量是相同的,都是512字节,而数据量需要平均分配在扇区面积的每个角落,所以外面扇区的数据密度低,里面扇区的速度密度高,可以这样理解,同样512个人,全站在篮球场上人口密度变高,但站在足球场上人口密度会变低,这样结果是浪费了外围扇区的大面积,也就是能容纳上千人的足球场只站了512个人,所以有了另外一种解决方案,分区记录方式(ZBR)
-
- 旧式磁盘的容量公式为: 存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
- 新式——分区记录方式(不同磁道扇区数不同),现在的硬盘都使用ZBR(ZonedBitRecording分区域记录)技术;新的解决方式认为,既然磁盘越往外面积越大,那就应该划分出更多的扇区,每个扇区的面积都是一样的,容纳的数据量也是一样的
- 例:如果有一块空硬盘,写入一个文件,是不是先写满同一个磁道的所有扇区,然后再换一个磁道写入?
- 是的,而且写入的方式是从外到内,先写满最外的磁道,接着再写里面的磁道,为什么硬盘用久了读写速度会变慢?因为外面的磁道使用完了,开始用里面的磁道,越是里面的磁道读写速度越慢,同样的时间,读写头在外面磁道可以扫过10个扇区的面积,读写10个扇区的数据,但在里面的磁道只能扫过1个扇区的面积,读写1个扇区的数据,所以这时该做磁盘整理或者格式化,这会使外面的磁道得到使用
- 不同磁道的扇区数是否相同(磁盘的记录方式有两种)
- 磁盘分区
- 在磁盘上以扇区为单位划分,是在磁盘上建立的逻辑边界,可以在每个分区中创建不同的文件系统,以前划分分区是按照柱面来划分分区,现在从centos6后就以扇区为单位来划分分区
- 磁盘分区的划分方式:MBR式,GPT式
- MBR:82年时候古老的分区方式,用2^32表示扇区数,分区不超过2T
- GPT:
- MBR方式划分法:主引导记录(512bytes)在磁盘的0盘面0磁道0扇区(MBR不属于磁盘分区),如果一个操作系统的bootloader已经占据了MBR,要再装入另外的操作系统B,则B的bootloader和分区表可以在前一个操作系统所占据分区的bootblock(bootblock的位置在任何一个分区的第0个块,多系统互存时使用,这个块不能被使用,是引导块)中,但是如果MBR中没有数据,即便是bootblock中有操作系统的bootloader,这个bootblock中的操作系统也启动不起来
- MBR的三个部分:
- bootloader引导加载器(446bytes):是grub第一阶段引导程序代码所在位置,可以引导操作系统启动如果有多块硬盘,bootloader只放在第一块磁盘的第一个分区的0号扇区,其他磁盘的第一个分区的0号扇区不存放bootloader,只放分区表,前面446字节不会使用
- 分区表(64bytes),只存放主分区和扩展分区的信息,不放逻辑分区:
- 每16bytes标识一个分区的起始位置,结束位置(一共只能标识四个分区,所以硬盘上只能划分四个主分区),主分区 + 扩展分区 <= 4
- 为什么需要扩展分区:如果磁盘200G,四个主分区都是20G,则剩下的空间就无法使用
- 怎么来实现扩展分区:将其中的16bytes用来存储一个指针,而不存放分区信息,指针指向磁盘的更大的空间,这个更大的空间用来放的额外的分区信息,这样的分区就变成了扩展分区(扩展分区在一个系统上只能有一个)
- 55AA :Magic number(2bytes),标记MBR是否有效
- 查看磁盘的MBR:hexdump -C -n 512 /dev/sda
- 备份MBR:dd if=/dev/sda of=/backup/mbr bs=1 count=512
- 克隆sda的分区表到另外的磁盘:dd if=/dev/sda of=/dev/sdb bs=1 count=66 skip=446 seek=446
- 只是将分区表复制到了别的磁盘,系统能够识别被复制磁盘的分区,但没有真正的分区
- MBR分区方式的结构图:
- MBR的三个部分:
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/101735