文档章节

硬件设备——磁盘相关

阿dai学长
 阿dai学长
发布于 2017/08/02 13:30
字数 1431
阅读 67
收藏 1

磁盘

磁盘的组成

本节摘自《鸟哥Linux私房菜》

磁盘的组成:主要由盘片、机械手臂、磁头、与主轴马达所组成。而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与柱面(Cylinder)两种单位,其中扇区每个为512bytes那么大。假设磁盘只有一个盘片,那么盘片如图所示:

mark

那么是否每个扇区都一样重要呢?其实整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要的信息,分别是:

  • MBR(Master Boot Record )主引导分区:可以安装引导加载程序的地方,有446bytes。
  • 分区表(partition table):记录整块硬盘分区的状态,有64bytes。
    MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常重要了! 那么分区表又是什么?其实你刚才拿到的整块硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具。如果没有进行切割,那么原木就不能被有效地使用。同样道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用。

磁盘分区表

本节摘自《鸟哥Linux私房菜》

但是硬盘总不能真的拿锯子来切割吧?那硬盘还真的是会坏掉去。那怎么办?在前一小节的图示中,我们有看到"开始与结束柱面"吧?那是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考柱面号码的方式来处理。在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。若将硬盘以长条形来看,然后将柱面以柱形图来看,那么那64bytes的记录区段如图:
mark

假设上面的硬盘设备文件名为/dev/hda时,那么这四个分区在Linux系统中的设备文件名如下所示,重点在于文件名后面会再接一个数字,这个数字与该分区所在的位置有关。 P1:/dev/hda1

P2:/dev/hda2

P3:/dev/hda3

P4:/dev/hda4

上图中我们假设硬盘只有400个柱面,共分区成为四个分区,第四个分区所在为第301到400号柱面的范围。当你的操作系统为Windows时,那么第一到第四个分区的代号应该就是C, D, E, F。当你有数据要写入F盘时,你的数据会被写入这块磁盘的301~400号柱面之间。
由于分区表就只有64bytes而已,最多只能容纳四个分区,这四个分区被称为主(Primary)或扩展(Extended)分区。根据上面的图示与说明,我们可以得到几个重点信息:
其实所谓的"分区"只是针对那个64bytes的分区表进行设置而已。

硬盘默认的分区表仅能写入四组分区信息。

这四组分区信息我们称为主(Primary)或扩展(Extended)分区。

分区的最小单位为柱面(cylinder)。

当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。

磁盘访问时间组成

  1. 寻道时间:启动磁臂的时间s与磁头移动n条磁道所花费的时间之和 t1=m*n+s(一般磁盘,m=0.2,高速磁盘,m<=0.1)
  2. 旋转延迟时间:是指定扇区移动到磁头下面所经历的时间t2
  3. 传输时间:指把数据从磁盘读出或向磁盘写入数据所经历的时间若每次读/写的字节数为b,磁盘每秒钟的转速为r,一条磁道上的字节数为N 。t3=b/(rN)

磁盘读写方式

磁盘读写方式:顺序读写、随机读写。

顺序读写=读取一个大文件
随机读写=读取多个小文件

顺序读写比随机读写快,原因:

  1. 顺序读写,主要时间花费在了传输时间,而这个时间两种读写可以认为是一样的;随机读写,需要多次寻道和旋转延迟。而这个时间可能是传输时间的许多倍。
  2. 顺序读写,磁盘会预读,预读即在读取的起始地址连续读取多个页面(现在不需要的页面也读取了,这样以后用时就不用再读取,当一个页面用到时,大多数情况下,它周围的页面也会被用到);而随机读写,因为数据没有在一起,将预读浪费掉了。
  3. 文件系统的overhead:读写一个文件之前,得一层层目录找到这个文件,以及做一堆属性、权限之类的检查,写新文件时还要加上寻找磁盘可用空间的耗时,对于小文件,这些时间消耗的占比就非常大了。

© 著作权归作者所有

阿dai学长
粉丝 75
博文 262
码字总数 336161
作品 0
朝阳
运维
私信 提问
Linux小知识-5:内核结构

Linux内核主要由五个部分组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。 稍微加以理解:CPU资源——内存资源——外存资源——外部资源——通信。 进程调度(SCHED):控制进...

lp_king
2013/09/28
242
0
【转】Linux 概念架构的理解

转:http://mp.weixin.qq.com/s?biz=MzA3NDcyMTQyNQ==&mid=400583492&idx=1&sn=3b18c463dcc45103b76a3419ceabe84c&scene=2&srcid=1213Z5CBO8W4jCmTSFI74uIb&from=timeline&isappinstalled=0#......

张玉涛
2015/12/19
0
0
[转载]MD3200磁盘阵列及存储知识点笔记

目录: ============================================================= MD3200存储知识分享 ============================================================= ——————————————......

xingyun2010
2011/03/10
0
0
linux中的块设备和字符设备

系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块...

dclink
2014/03/21
152
0
linux主机规划与磁盘分区

各硬件设备在linux中的文件名 在Linux系统中,每个设备都被当成一个文件来对待。 举例来说,IDE接口的硬盘的文件名即为/dev/hd[a-d],其中,括号内的字母a-d当中的任意一个,也既有/dev/had/...

枫晚
2017/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部