硬件设备——磁盘相关
2017-08-02 00:00
253 查看
摘要: 本文简单介绍了磁盘组成、分区表、磁盘访问时间组成以及磁盘读写方式,作为对计算机基础知识的一个简单了解。
磁盘的组成:主要由盘片、机械手臂、磁头、与主轴马达所组成。而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与柱面(Cylinder)两种单位,其中扇区每个为512bytes那么大。假设磁盘只有一个盘片,那么盘片如图所示:
那么是否每个扇区都一样重要呢?其实整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要的信息,分别是:
MBR(Master Boot Record )主引导分区:可以安装引导加载程序的地方,有446bytes。
分区表(partition table):记录整块硬盘分区的状态,有64bytes。
MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常重要了!
那么分区表又是什么?其实你刚才拿到的整块硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具。如果没有进行切割,那么原木就不能被有效地使用。同样道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用。
但是硬盘总不能真的拿锯子来切割吧?那硬盘还真的是会坏掉去。那怎么办?在前一小节的图示中,我们有看到"开始与结束柱面"吧?那是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考柱面号码的方式来处理。在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。若将硬盘以长条形来看,然后将柱面以柱形图来看,那么那64bytes的记录区段如图:
假设上面的硬盘设备文件名为/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)。
当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。
旋转延迟时间:是指定扇区移动到磁头下面所经历的时间t2
传输时间:指把数据从磁盘读出或向磁盘写入数据所经历的时间若每次读/写的字节数为b,磁盘每秒钟的转速为r,一条磁道上的字节数为N 。t3=b/(rN)
顺序读写=读取一个大文件
随机读写=读取多个小文件
顺序读写比随机读写快,原因:
顺序读写,主要时间花费在了传输时间,而这个时间两种读写可以认为是一样的;随机读写,需要多次寻道和旋转延迟。而这个时间可能是传输时间的许多倍。
顺序读写,磁盘会预读,预读即在读取的起始地址连续读取多个页面(现在不需要的页面也读取了,这样以后用时就不用再读取,当一个页面用到时,大多数情况下,它周围的页面也会被用到);而随机读写,因为数据没有在一起,将预读浪费掉了。
文件系统的overhead:读写一个文件之前,得一层层目录找到这个文件,以及做一堆属性、权限之类的检查,写新文件时还要加上寻找磁盘可用空间的耗时,对于小文件,这些时间消耗的占比就非常大了。
磁盘
磁盘的组成
本节摘自《鸟哥Linux私房菜》磁盘的组成:主要由盘片、机械手臂、磁头、与主轴马达所组成。而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与柱面(Cylinder)两种单位,其中扇区每个为512bytes那么大。假设磁盘只有一个盘片,那么盘片如图所示:
那么是否每个扇区都一样重要呢?其实整块磁盘的第一个扇区特别重要,因为它记录了整块磁盘的重要信息。磁盘的第一个扇区主要记录了两个重要的信息,分别是:
MBR(Master Boot Record )主引导分区:可以安装引导加载程序的地方,有446bytes。
分区表(partition table):记录整块硬盘分区的状态,有64bytes。
MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常重要了!
那么分区表又是什么?其实你刚才拿到的整块硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具。如果没有进行切割,那么原木就不能被有效地使用。同样道理,你必须要针对你的硬盘进行分区,这样硬盘才可以被你使用。
磁盘分区表
本节摘自《鸟哥Linux私房菜》但是硬盘总不能真的拿锯子来切割吧?那硬盘还真的是会坏掉去。那怎么办?在前一小节的图示中,我们有看到"开始与结束柱面"吧?那是文件系统的最小单位,也就是分区的最小单位。我们就是利用参考柱面号码的方式来处理。在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的柱面号码。若将硬盘以长条形来看,然后将柱面以柱形图来看,那么那64bytes的记录区段如图:
假设上面的硬盘设备文件名为/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)。
当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分区进行数据的处理。
磁盘访问时间组成
寻道时间:启动磁臂的时间s与磁头移动n条磁道所花费的时间之和 t1=m*n+s(一般磁盘,m=0.2,高速磁盘,m<=0.1)旋转延迟时间:是指定扇区移动到磁头下面所经历的时间t2
传输时间:指把数据从磁盘读出或向磁盘写入数据所经历的时间若每次读/写的字节数为b,磁盘每秒钟的转速为r,一条磁道上的字节数为N 。t3=b/(rN)
磁盘读写方式
磁盘读写方式:顺序读写、随机读写。顺序读写=读取一个大文件
随机读写=读取多个小文件
顺序读写比随机读写快,原因:
顺序读写,主要时间花费在了传输时间,而这个时间两种读写可以认为是一样的;随机读写,需要多次寻道和旋转延迟。而这个时间可能是传输时间的许多倍。
顺序读写,磁盘会预读,预读即在读取的起始地址连续读取多个页面(现在不需要的页面也读取了,这样以后用时就不用再读取,当一个页面用到时,大多数情况下,它周围的页面也会被用到);而随机读写,因为数据没有在一起,将预读浪费掉了。
文件系统的overhead:读写一个文件之前,得一层层目录找到这个文件,以及做一堆属性、权限之类的检查,写新文件时还要加上寻找磁盘可用空间的耗时,对于小文件,这些时间消耗的占比就非常大了。
相关文章推荐
- C# 收集机器硬件信息的相关代码片断(cpu频率、磁盘可用空间、内存容量……)
- asp.net收集机器硬件信息的相关代码片断(cpu频率、磁盘可用空间、内存容量……)
- linux查看硬件信息及驱动设备相关整理
- Linux查看硬件信息及驱动设备相关整理
- C# 收集机器硬件信息的相关代码片断(cpu频率、磁盘可用空间、内存容量……)
- linux查看硬件信息及驱动设备相关整理
- linux查看硬件信息及驱动设备相关整理(留存验证)
- PPC相关硬件设备的概念【转贴】
- linux查看硬件信息及驱动设备相关整理
- 邮寄App相关硬件设备到苹果商店审核
- VMware虚拟设备之虚拟磁盘配置与虚拟磁盘置备类型相关介绍
- 学习笔记4——Linux磁盘设备相关知识
- 各种硬件设备在linux的文件名及磁盘组成分区
- 磁盘设备硬件出现致命错误,导致请求失败的数据寻回方案
- C# 收集机器硬件信息的相关代码片断(cpu频率、磁盘可用空间、内存容量……)
- linux查看硬件信息及驱动设备相关整理
- 硬件信息、键盘模拟及钩子、鼠标模拟及钩子等设备相关
- 鸟哥私房菜笔记二(硬件设备名及磁盘的分区)
- linux查看硬件信息及驱动设备相关整理
- 邮寄App相关硬件设备到苹果商店审核