深入了解磁盘结构

一、     linux中常见的磁盘:

  无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能。在linux中“一切皆文件”的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCSI口的硬盘在linux中是以/dev/sd[a-p]开头的文件,早期的IDE硬盘现在已经很少见了,这种硬盘在linux中是以/dev/hd[a-d],CDROM是以/dev/cdrom开头的文件,磁带机/dev/st0(SCSI口的),/dev/ht0(IDE口)。每一种设备都有特定的主设备号和次设备号,主设备号用来标识设备类型,次设备号标识同一类型设备的不同设备。

  不同类型的接口的设备速度也是有很大差别的,像是并口的IDE的接口理论值为133MB/s,SCSI硬盘速度为640MB/s 。串口的SATA和SAS口的硬盘速度都是6Gbps,在转化为同一单位的情况下后者的速度还是远远优于前者。串口的USB速度也能达到480MB/s

二、     磁盘结构与术语:

  硬盘的物理结构一般由磁头与盘片、电动机、主控芯片与排线等部件组成;当主电动机带动盘片旋转时,副电动机带动一组( 磁头)到相对应的盘片上并确定读取正面还是反面的碟面,磁头悬浮在碟面上画出一个与盘片同心的圆形轨道( 磁轨或称 柱面),这时由磁头的磁感线圈感应碟面上的磁性与使用硬盘厂商指定的读取时间或数据间隔定位 扇区,从而得到该扇区的数据内容; 深入了解磁盘结构深入了解磁盘结构

磁头(head):对磁盘的数据进行读写

磁道(track):当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。 磁盘上的磁道是一组记录密度不同的同心圆

扇区(sector):磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区。硬盘的第一个扇区,叫做引导扇区。 一个扇区的大小为512个字节。

柱面(cylinder):在有多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面。

三、     分区类型:

1.      磁盘分区的优点:

    (1) 优化I/O性能

    (2)实现磁盘的空间配额限制

    (3)提高修复速度

    (4)隔离系统和程序

    (5)分区可以安装多个OS

2.      两种分区方式:MBR和GPT

MBR:(master  boot recorder )传统的分区都是以MBA的方式分区的使用32位作为扇区数,分区大小不差过2T,分区是按照柱面来分区(CHS:cylinder,head,sector),在MBR中有LBA地址用来和CHS转换,LBA地址是统一的逻辑区块地址作为寻址方式,这种寻址模式取代了原先 操作系统必须面对存储设备硬件构造的方式。在硬盘上的0磁道0扇区共512个字节存放MBR硬盘分区分区表和主引导程序,其中前446个字节存放引导程序,64个字节存放4个大小为16个字节的分区表,最后还有两个字节(0x55AA)是分区结束标志。

3.bmp

(可以通过十六进制查看器查看,先通过dd命令将硬盘的前512个字节备份成一个二进制文件,在通过hexdump 查看)

[root@centos7 ~]# dd if=/dev/sdc  of=sdc  count=512  bs=1
512+0 records in
512+0 records out
512 bytes (512 B) copied, 0.00509351 s, 101 kB/s
[root@centos7 ~]# hexdump -C sdc
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  91 83 ce 77 00 00 00 20  |...........w... |
000001c0  21 00 83 9d 11 4c 00 08  00 00 00 c0 12 00 00 9d  |!....L..........|
000001d0  12 4c 83 db 29 72 00 c8  12 00 00 60 09 00 00 00  |.L..)r.....`....|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200
[root@centos7 ~]# dd if=sdc_head  of=/dev/sdc bs=1 count=64 skip=446 seek=446    //skip表示源文件跳过多少开始复制,seek表示目标跳过多少开始
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.0170671 s, 3.7 kB/s

    注释:其中4个分区最多可以建立4个主分区,或者3个主分区加一个扩展分区,主分区结构如上,第一个字节表示此分区是否处于活动分区状态,80表示活动,00表
示非活动,活动分区可以用来存放操作系统。第二个字节表示磁头号,第3和4字节存放扇区号第5个字节表示分区类型,0表示分区未使用。5,6,7字节表示
分区结束的磁头号,扇区和柱面号。后面的八个字节用来存放LBA地址,用来做CHS和LBA地址转化用的。

  扩展分区中存放着逻辑分区的地址,在逻辑分区的第一个扇区也是存放着EBR表,结构与MBR类似,只不过前面的446字节都空着,存放64字节的表中第一个表项的16个字节指向本个逻辑分区,下一个16个字节的表项中存放指向下一个扩展分区的EBR,接下来便是两个空白的表项和类似于MBR的结束标志0x55AA。

3.      GPT分区:

  GPT分区是新一代的分区方式,可支持多分区(最多128个分区)和大分区(磁盘块大小为512字节时可支持8Z,4096字节的块大小时可以达到64Z。注Z的数量级为270­)。GPT使用128位的UUID作为磁盘和分区的同一唯一标识符,并且在GPT分区表自动备份在头尾两部分,并伴有CRC校验位,在GPT分区的首部有一个伪MBR,用于向下兼容MBR,因为MBR是不能理解GPT分区的,在GPT分区首部放置一个伪MBR首部可以防止MBR认为当前磁盘没有分区,而将GPT分区覆盖。

4.bmp

原创文章,作者:jack_cui,如若转载,请注明出处:http://www.178linux.com/41275

(4)
jack_cuijack_cui
上一篇 2016-08-29 08:45
下一篇 2016-08-29 08:45

相关推荐

  • VIM编辑器入门

    VIM简介 VIM是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。VIM是纯粹的自由软件。 VIM的使用 在介绍基本使用前,先了解下VIM的基本模式 基本模式可分为三种:命令模式、输入模式、末行模式 命令模式:Vim启动后的默认模式,通过输入指令完成对应的编辑操作。输入模式和末行模式从命令模式进入&nb…

    Linux干货 2016-04-05
  • MySQL基础入门详解

    MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 想要使用MySQL来存储并操作数…

    2017-09-16
  • 学习linux命令和帮助

    一、初级命令: 命令的语法通用格式:  #COMMAND OPTIONS ARGUMRNTS OPTIONS:制定命令的运行特性 选项有两种表现形式:    段选项: -c    短选项:–word 例如 –help –human-readable ARGUM…

    Linux干货 2016-10-30
  • 22期第七周课堂练习

    1、创建一个10G分区,并格式为ext4文件系统;        (1) 要求其block大小为2048, 预留空间百分比为2,   卷标为MYDATA, 默认挂载属性包含acl;        (2)   挂载至/data/mydata目录,要求挂载时禁止程…

    Linux干货 2016-10-09
  • 重构-改善既有代码的设计:重构原则(二)

    1.什么是重构 重构(Refactoring):在不改变软件的功能和外部可见性的情况下,为了改善软件的结构,提高清晰性、可扩展性和可重用性而对软件进行的改造,对代码内部的结构进行优化。 2.为何重构   1)改进软件设计(整理代码) 重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解…

    Linux干货 2015-04-07
  • 第五周

    显示/boot/grub/grub.conf中以至少一个空白字符开头的行 egrep "^[[:space:]]+" /boot/grub/grub.conf 显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 egrep "^#[[:…

    Linux干货 2016-09-19