彻底搞懂硬盘相关的概念

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

参考博客

硬盘结构(机械硬盘和固态硬盘)详解

简单理解磁盘结构_Guanngxu的博客-CSDN博客_磁盘的结构

硬盘基础知识_Forskamse的博客-CSDN博客

硬盘知识笔记整理_落子摘星的博客-CSDN博客

MBR分区表详解_zt_xcyk的博客-CSDN博客_mbr分区

硬盘分区、寻址和系统启动过程 - 走看看

目录

一、前言

二、机械硬盘

1、物理结构

2、逻辑结构

(1)磁道(track)

(2)扇区(sector)

(3)柱面(cylinder)

3、磁盘容量

4、磁盘的读写

(1)读写的方式

(2)读写的时间

5、机械硬盘的接口

(1)IDE 硬盘接口

(2)SATA 接口

(3)SCSI 接口

三、固态硬盘

1、固态硬盘简介

2、固态硬盘vs机械硬盘

四、概念厘清

1、块(block)、簇(cluster)

2、页(page)

3、磁盘块大小为何是扇区大小的整数倍?

五、 分区表

1、MBR分区表

2、GPT分区表

 

一、前言

(1)硬盘是计算机的主要外部存储设备,如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Solid State Disk, SSD)。

(2)机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。

二、机械硬盘

1、物理结构

(1)机械硬盘的内部主要由盘片、磁头、主轴与传动轴等组成,每个盘片包含上下两个盘面,每个盘面都对应着一个读/写磁头。

(2)盘片是承载数据存储的介质,它上面附着有磁粉,磁粉的S/N极分别代表着二进制中的0和1,利用磁头的磁力控制一些磁粉的方向,就存储了特定的信息。

(3)受到硬盘体积和成本的限制,盘片数量一般控制在5片以内。盘面的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片编号为2面和3面。

(4)机械硬盘工作时,盘片的旋转速度很快(常见转速是 7200 r/min),因此在读取或写入数据时非常害怕晃动和磕碰;另外如果硬盘内部有灰尘则会造成磁头或盘片的损坏,所以机械硬盘内部是封闭的,如果不是在无尘环境下,则禁止拆开机械硬盘。

2、逻辑结构

机械硬盘的逻辑结构主要分为磁道、扇区和柱面。

(1)磁道(track

1、每个盘片在逻辑上有很多同心圆,我们将每个同心圆称作磁道。

2、盘面的磁道密度非常高,通常一个盘面就有上千个磁道。

3、相邻的磁道之间并不是紧挨着的,因为磁化单元相隔太近会相互影响。

4、最外面的同心圆就是0磁道。


(2)扇区(sector

1、从圆心向外画直线,将每个磁道等分为若干弧段,每条磁道上的一个弧段就是一个扇区。

2、扇区是磁盘的最小存储单元。

3、扇区的大小一般是 512Byte,但部分厂商设定每个扇区的大小是4096字节。

4、外侧磁道的扇区面积大,内侧磁道的扇区面积小。

5、以前的磁盘,每条磁道的扇区数目是一样的,每条磁道可以存储的数据量是一样的,因此外侧的磁道数据密度小,内侧磁道数据密度大。现在的磁盘,每条磁道的数据密度都是一样的,因此越外侧的磁道,其扇区数目就越多,能够存储的数据量就越大。


(3)柱面(cylinder

1、硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”向内进行磁道编号,具有相同编号的磁道会形成一个圆柱,称之为磁盘的柱面。

2、从柱面含义中得知,磁盘的柱面数与一个盘面上的磁道数是相等的。

3、磁盘容量

(1)磁盘容量计算公式如下,其中磁头数(heads)表示磁盘一共有多少个盘面(因为一个盘面对应一个磁头);柱面数(cylinders)表示一个盘面有几条磁道。

磁盘容量= 磁头数(盘面数) x 柱面数(磁道数) x 每条磁道的扇区数 x 每个扇区的字节数

(2)比如下面是使用“fdisk -l”列出的磁盘分区情形,从中可以看出,磁盘共有255个盘面,每个盘面有2610条磁道,每条磁道有63个扇区(setcors/track表示每磁道多少扇区),每个扇区大小是512字节,按理有255*63*2610=419299650个扇区,但为何与显示的不一致?

root@ubuntu:/# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bf9a1设备 启动      起点          终点     块数   Id  系统
/dev/sda1   *        2048    37750783    18874368   83  Linux
/dev/sda2        37752830    41940991     2094081    5  扩展
/dev/sda5        37752832    41940991     2094080   82  Linux 交换 / Solaris
root@ubuntu:/# 

4、磁盘的读写

(1)读写的方式

磁盘读写数据时,是按柱面进行的。首先从盘面0(磁头0)开始进行操作,依次往上在同一柱面的不同盘面(磁头上)进行操作,同一柱面的所有磁头全部读写完毕后,全部磁头才转移到下一个柱面。这是因为全部的磁头都连接在同一个磁臂上,因此只能“共进退”。

(2)读写的时间

1、读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。

2、寻道时间,表示磁头移动到数据所在磁道所需要的时间。目前磁盘的平均寻道时间一般在3至15ms,一般都在10ms左右。

3、延迟时间,表示盘片将数据所在的扇区旋转到读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,普通硬盘一般都是7200rpm,慢的5400rpm。

4、传输时间,表示完成数据传输所需要的时间。

5、为提高磁盘传输效率,软件应着重考虑减少寻道时间和延迟时间。

5、机械硬盘的接口

机械硬盘通过接口与计算机主板进行连接。硬盘的读取和写入速度与接口有很大关系。大家都见过大礼堂吧,大礼堂中可以容纳很多人,但是如果只有一扇很小的门,那么人是很难进入或出来的,这样会造成拥堵,甚至会出现事故。机械硬盘的读取和写入也是一样的,如果接口的性能很差,则同样会影响机械硬盘的性能。

目前,常见的机械硬盘接口有以下几种:

(1)IDE 硬盘接口

Integrated Drive Eectronics,并口,即电子集成驱动器,也称作 "ATA硬盘" 或 "PATA硬盘",是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s(此速度为理论平均值),IDE 硬盘接口如图所示。


(2)SATA 接口

Serial ATA,是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值),如图所示。


(3)SCSI 接口

Small Computer System Interface,小型计算机系统接口,广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及热插拔等优点,理论传输速度达到 320MB/s,如图所示。

三、固态硬盘

1、固态硬盘简介

(1)与机械硬盘采用盘片存储数据不同,固态硬盘采用存储芯片进行数据存储。

(2)固态硬盘的存储芯片主要分为两种,即闪存与DRAM。

(3)目前市场主要采用闪存作为存储介质的固态硬盘,如图所示。固态硬盘内主体其实就是一块PCB板,PCB板上最基本的配件就是控制芯片,缓存芯片(低端硬盘无缓存芯片)和用于存储数据的闪存芯片。

2、固态硬盘vs机械硬盘

固态硬盘和机械硬盘对比如下所示。

由此可以看出,固态硬盘因为丟弃了机械硬盘的物理结构,所以相比机械硬盘具有了低能耗、无噪声、抗震动、低散热、体积小和速度快的优势;不过价格相比机械硬盘更高,而且使用寿命有限。

四、概念厘清

1、块(block)、簇(cluster)

(1)关于块的概述

1、磁盘块,简称“块”,是虚拟出来的概念。它是操作系统中最小的逻辑存储单位,或者说操作系统与磁盘打交道的最小单位是磁盘块,或者说块是操作系统针对硬盘读写的最小单元。

2、块与簇其实是同一个概念,只是不同文件系统下的叫法不同。在Windows下如NTFS等文件系统中就叫做簇(cluster),在Linux下如Ext4等文件系统中就叫做块(block)。

3、既然磁盘块是一个虚拟概念,是操作系统规定的软件的概念,不是真实的,那么其大小可以由操作系统决定与配置。每个块包括2的n次方个扇区,这个的n是可以修改的。下图是每个块包括2个扇区的示意图。

4、在window的命令行中输入“fsutil fsinfo ntfsinfo F:”显示如下, 可知这里的一个簇是4KB,扇区大小是512B,因此这里的一个簇是由8个扇区组成的。


(2)磁盘块的意义

主要是为了读取方便。由于扇区的数量众多,在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。或者通俗地理解,操作系统(其实是文件系统,但文件系统是操作系统的一部分,所以这里说操作系统)不是一个扇区一个扇区地去读数据的,因为这样速度太慢了,它是一个块一个块地去读取数据的,块才是文件存取的最小单位。


(3)扇区与磁盘块的映射

1、磁盘控制器除了读取数据、控制磁头等作用外,还负责映射扇区和磁盘块的关系。

2、磁盘控制器以扇区为单位读取磁盘数据,操作系统以块为单位读取磁盘数据。

2、页(page)

为了方便操作系统和硬盘之间的交流,虚拟出了“块”这个基本单位,它是操作系统与硬盘交流的最小单位。类似的,为了方便操作系统和内存之间的交流,虚拟出了“页”这个基本单位,它是操作系统与内存交流的最小单位。

3、磁盘块大小为何是扇区大小的整数倍?

操作系统是以块为单位进行数据读取的,而磁盘控制器是以扇区为单位读取磁盘数据。一个块的大小是扇区大小的整数倍,有利于磁盘的IO,不然(比如2.5个扇区为一个块)会对扇区进行分割。

五、 分区表

(1)一块全新的硬盘,必须进行初始分区。初始分区分为MBR分区、GPT分区这两种方法,对应着MBR分区表和GPT分区表。

(2)这里的初始分区是指只进行分区,还没有进行格式化。格式化是指定这块硬盘的某个分区采用什么文件系统。分区广义的概念是包括初始分区与格式化。

1、MBR分区表

见博客MBR分区表的简介_天糊土的博客-CSDN博客。

2、GPT分区表

暂略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows修改远程桌面RDP连接数

windows 2003在默认情况下最多只允许两个用户进行远程终端连接,当达到两个远程桌面连接的到时候,再有人尝试连接,就会提示已经达到最大终端数,无法连上了。 一、windows2003终端连接数修改 1.1终端服务安装和连接数设置 导读&…

ubuntu下数据库的导入导出

2019独角兽企业重金招聘Python工程师标准>>> 一.导出远程数据库 例如 sudo mysqldump -h 172.16.1.211 -u haha -p123 -P3307 app>app.sql 二.导入.sql文件的 到数据库 1.create database xxx(创建一个名称是xxx的数据库) 2. use xxx(切换到该数据库下) 3. sou…

烧录文件、复制文件有什么区别?

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考内容 镜像数据烧录和复制粘贴有什么区别?用 rufus 将镜像烧录到 U 盘和直接复制粘贴 把程序烧入设备和把程序复制到设备的linux系统中有什么区别? - 知乎 前言 之前思考过&#…

php中preg_match用户名正则实例

例子,字母、数字和汉字 代码如下复制代码 if(preg_match("/[ .,:;*?~!#$%^&)(<>{}]|]|[|/|\|"||/",$user)){ echo 不要在名字里面整些特殊符号&#xff0c;请只使用字母、数字和汉字&#xff0c;当然要你的浏览器要选简体中文GB2312哟&#xff0c;千…

MBR分区表的简介

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考内容 &#xff08;1&#xff09;S5PV210 Uboot开发与移植01&#xff1a;Uboot概述_麦兜的学习笔记的博客-CSDN博客 &#xff08;2&#xff09;Linux系统下的硬盘分区、格式化与挂载_天糊土的博客-CSD…

Heartbeat

Heartbeat心跳信息传递&#xff1a;UDP UnicastUDP MulticastUDP broadcastSerial Cable组播地址用于标识一个IP组播域。IANA(internet assigned number authority)把D类地址空间分配给IP组播&#xff1b;其范围是从224.0.0.0至239.255.255.255。永久组播地址&#xff1a;224.0…

Redis配置文件参数说明

配置文件参数说明: 1. Redis默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&#xff0c;使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时&#xff0c;Redis默认会把pid写入/var/run/redis.pid文件&#xff0c;可以通过pidfile指定 pidfile …

movi命令(do_movi函数的源码分析)

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一、do_movi函数分析 当执行movi相关命令时&#xff0c;实际执行的是do_movi函数。 x210 # help movi movi init - Initialize moviNAND and show card info movi read {u-boot | kernel} {addr} - Read …

[LeetCode]Search Insert Position

原题链接&#xff1a;http://oj.leetcode.com/problems/search-insert-position/ 题意描述&#xff1a; Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You …

如何将镜像烧写至iNand(fastboot命令的源码分析)

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 参考博客 u-boot sdfuse命令烧录分析----从SD卡加载内核_white_bugs的博客-CSDN博客 一、将镜像文件烧写至iNand的步骤 步骤1&#xff1a;完成准备工作。 &#xff08;1&#xff09;准备fastboot相关软件包…

计算机二级考试Access教程

本教程对编程语言各种要点进行详细的讲解介绍&#xff0c;从基础知识到实用技术功能&#xff0c;内容涵盖了从数组&#xff0c;类等基本概念到多态、模板等高级概念。教程本着实用的原则&#xff0c;每一小节都结合了可以笔试、面试的常见程序实例&#xff0c;以便从第一课开始…

为Elasticsearch添加中文分词

Elasticsearch的中文分词很烂&#xff0c;所以我们需要安装ik。首先从github上下载项目&#xff0c;解压&#xff1a; cd /tmpwget https://github.com/medcl/elasticsearch-analysis-ik/archive/master.zipunzip master.zipcd elasticsearch-analysis-ik/然后使用mvn package …

mmc命令(do_mmcops函数的源码分析)

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 在文章如何将镜像烧写至iNand&#xff08;fastboot命令的源码分析&#xff09;中写到&#xff0c;system、kernel、bootloader的烧写都是write_to_ptn函数直接或间接调用do_mmcops函数来完成的。这里简单分…

你知道自己执行的是哪个jre吗?

多个JRE 我在做《Java日志工具之java.util.logging.Logger》的DEMO时&#xff0c;修改java.util.logging.Logger的配置文件&#xff0c;怎么修改都不起作用&#xff0c;因此打印了系统属性"java.home"&#xff0c;才知道自己使用的是 C:\Program Files\Java\jre7 &am…

lvs-健康检查方式

一、TCP 4层检查virtual_server 192.168.2.213 80 { delay_loop 6 lb_algo wlc #采取权重式最少链接分配 lb_kind DR #采取DR模式protocol TCPreal_server 192.168.2.220 80 { TCP_CHECK { #TCP 检查 connect_port 4000 con…

Leetcode编程事宜

中文网站 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 英文网站 Problems - LeetCode 账号相关 账号是主邮箱账号&#xff0c;密码是“姓的拼音身份证后6位”。 编程计划 &#xff08;1&#xff09;先从简单的题目刷起。 &#xff08;2&#xff09;不要求每道题都要解答…

JAXB解析XML

首先根据XML文件编写.xsd文件&#xff0c;例如&#xff1a; <?xml version"1.0" encoding"UTF-8"?><schema xmlns:tns"www.hisense.com" xmlns"http://www.w3.org/2001/XMLSchema" targetNamespace"www.hisense.com&q…

无需写try/catch,也能正常处理异常

对于企业应用的开发者来说&#xff0c;异常处理是一件既简单又复杂的事情。说其简单&#xff0c;是因为相关的编程无外乎try/catch/finallythrow而已&#xff1b;说其复杂&#xff0c;是因为我们往往很难按照我们真正需要的策略来处理异常。我一直有这样的想法&#xff0c;理想…

vs2010插件

转载于:https://www.cnblogs.com/tinytiny/p/3608030.html

leetcode1——两数之和

一、提出问题 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按…