Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1197933
  • 博文数量: 116
  • 博客积分: 2889
  • 博客等级: 少校
  • 技术积分: 1337
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-29 09:35
个人简介

IT运维工程师、律师 IT相关技术支持、法律咨询

文章分类

全部博文(116)

文章存档

2015年(1)

2014年(2)

2013年(5)

2012年(12)

2011年(4)

2010年(12)

2009年(21)

2008年(37)

2007年(22)

分类: LINUX

2012-04-27 14:58:10

硬盘种类、物理几何结构及硬盘容量、分区大小计算
 
1、硬盘种类、物理几何结构

硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级;比如 SCSI标准已经经历了SCSI-1 、SCSI-2、SCSI-3;其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的;IDE 遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本;IDE是并口设备,而SATA是串口,SATA的发展目的是替换IDE;

硬盘的物理几何结构是由盘、磁盘表面、柱面、扇区组成,一个张硬盘内部是由几张碟片叠加在一起,这样形成一个柱体面;每个碟片都有上下表面;磁头和磁盘表面接触从而能读取数据;

2、硬盘容量及分区大小的算法;

我们通过fdsik -l 可以发现如下的信息:

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 6144831 7 HPFS/NTFS
/dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
/dev/hda3 2806 9729 55617030 5 Extended
/dev/hda5 2806 3825 8193118+ 83 Linux
/dev/hda6 3826 5100 10241406 83 Linux
/dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
/dev/hda8 5199 6657 11719386 83 Linux
/dev/hda9 6658 7751 8787523+ 83 Linux
/dev/hda10 7752 9729 15888253+ 83 Linux

其中 heads 是磁盘面;sectors 是扇区;cylinders 是柱面;每个扇区大小是 512byte,也就是0.5M;
  磁头数(Heads)表示硬盘总共有几个磁头,也就是有几面盘片, 最大为 255 ( 8 个二进制位存储);
  柱面数(Cylinders) 表示硬盘每一面盘片上有几条磁道,最大为 1023( 10 个二进制位存储);
  扇区数(Sectors) 表示每一条磁道上有几个扇区, 最大为 63( 6个二进制位存储).
  每个扇区一般是 512个字节, 理论上讲这不是必须的,但好象没有取别的值的.
通过上面的例子,我们发现此硬盘有 255个磁盘面,有63个扇区,有9729个柱面;所以整个硬盘体积换算公式应该是:

磁面个数 x 扇区个数 x 每个扇区的大小512 x 柱面个数 = 硬盘体积 (单位bytes)

所以在本例中磁盘的大小应该计算如下:

255 x 63 x 512 x 9729 = 80023749120 bytes

提示:由于硬盘生产商和操作系统换算不太一样,硬盘厂家以10进位的办法来换算,而操作系统是以2进位制来换算,所以在换算成M或者G 时,不同的算法结果却不一样;所以我们的硬盘有时标出的是80G,在操作系统下看却少几M;

上面例子中,硬盘厂家算法 和 操作系统算数比较:

硬盘厂家: 80023749120 bytes = 80023749.120 K = 80023.749120 M (向大单位换算,每次除以1000)
操作系统: 80023749120 bytes = 78148192.5 K = 76316.594238281 M (向大单位换算,每次除以1024)

我们在查看分区大小的时候,可以用生产厂家提供的算法来简单推算分区的大小;把小数点向前移动六位就是以G表示的大小;比如 hda1 的大小约为 6.144831G ;

2. 分区表结构简介

  分区表由四个分区项构成, 每一项的结构如下:
  BYTE State   : 分区状态, 0 =未激活, 0x80 = 激活 (注意此项)
  BYTE StartHead : 分区起始磁头号
  WORD StartSC  : 分区起始扇区和柱面号,底字节的低6位为扇区号,
           2位为柱面号的第 9,10 , 高字节为柱面号的低 8
  BYTE Type    : 分区类型, 0x0B = FAT32, 0x83 = Linux ,
           00 表示此项未用,07 = NTFS
  BYTE EndHead  : 分区结束磁头号
  WORD EndSC   :分区结束扇区和柱面号, 定义同前
  DWORD Relative :在线性寻址方式下的分区相对扇区地址
           (对于基本分区即为绝对地址)
  DWORD Sectors  : 分区大小 (总扇区数)

  注意: DOS / Windows 系统下,基本分区必须以柱面为单位划分( Sectors * Heads 个扇区), 如对于 CHS 764/255/63 的硬盘,分区的最小尺寸为 255 * 63 * 512 / 1048576 = 7.844 MB.

阅读(3179) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~