【存储学习笔记】1:机械硬盘(Hard Drive Disk)结构和寻址方式

目录

  • HDD的结构
  • HDD的寻址方式
    • CHS寻址(不适用于等密度结构磁盘)
    • LBA寻址(目前普遍使用的线性寻址方式)
  • HDD的寻址速度

HDD的结构

在这里插入图片描述

  • 盘面(Platter):单面或者双面覆盖着用于记录数据的磁性物质,一块HDD由同轴上下多块Platter组成。
  • 轴(Spindle):所有的Platter都绕着这个Spindle,被主轴电机驱动着进行匀速旋转。
  • 主轴电机(Spindle Motor):用于旋转Platter,通常HDD转速是每分钟5400或者7200转。
  • 读写头(Read/Write Head):每个面上都有一个读写投用来读取或者写入数据。
  • 磁头臂(Arm):读写头都固定在Arm的末端。
  • 制动杆(Actuator)轴:所有的Arm都连接到Actuator上,由定位电机来驱动,以控制读写头沿着Platter的半径方向移动。所以,Platter的旋转,配合读写头在Arm上的移动,可以让读写头访问到Platter上的所有部分。
  • 磁道(Track):Platter表面划分了一堆同心圆,也就是一个个Track。
  • 柱面(Cylinder):到Spindle有相同的半径距离的Track的集合。因为读写头的移动影响它在Platter上半径的哪个位置上,所以当某个面的读写头在某个Track上时,其它面的读写头也会在对应的这个半径的Track上,所有这些不同面上相同半径的Track称为一个Cylinder。看起来就像一个镂空的圆柱面一样。
  • 扇区(Sector):Track被划分成的一个个扇形区域,它是磁盘驱动器进行读写访问的最小单位,经典的Sector Size能容纳512B的数据。Sector的头部包含扇区标识符和时钟同步信息,尾部包含错误校验码(ECC),ECC是根据Sector头部信息和存储的数据计算得到的。
  • 簇(Cluster):HDD本身的读写基本单位是Sector,但对文件系统(File System)来说,基本读写单位是Cluster,相邻的若干个Sector组成一个Cluster。Cluster一般有4K、8K、…、64K等。
  • 等密度结构磁盘:一般,所有的Track上Sector数量一样,但这样外磁道的记录密度会远远低于内磁道,所以会造成空间浪费,就限制了HDD的容量。在等密度结构磁盘实现上,Sector只需要固定的面积大小就可以了,所以外层的Track放了更多的Sector。

在这里插入图片描述

HDD的寻址方式

CHS寻址(不适用于等密度结构磁盘)

CHS寻址是利用HDD的三维结构,给个三个方向的参数来进行寻址:
Heads:磁头编号,比如双面磁盘,磁盘正反面各有一个磁头,所以用磁头编号就能表示数据在哪个磁面上。
Cylinders:柱面编号,表示数据在哪个柱面上,利用H和C就能定位到唯一磁道Track。
Sectors:扇区编号,因为已经定位到了唯一Track,所以用Sectors就能找到唯一的扇区。

CHS寻址方式下,HDD的大小很有限,根据HDD的容量计算公式:

硬盘容量= 盘面(磁头)数 × 柱面数 × 扇区数 × 每扇区字节数

例如

磁头数最大为255 (用 8 个二进制位存储)。从0开始编号。
柱面数最大为1023(用 10 个二进制位存储)。从0开始编号。
扇区数最大数 63(用 6个二进制位存储)。从1始编号。
所以CHS寻址方式的最大寻址范围为:
255 * 1023 * 63 * 512 / 1048576 = 7.837 GB ( 1M =1048576 Bytes )

对于等密度结构磁盘,内外层的扇区不能组成一个扇形(外磁道的扇区更多),所以没法使用CHS寻址方式。

LBA寻址(目前普遍使用的线性寻址方式)

LBA(Logical Block Addressing)寻址方式是给每个数据块一个从0开始线性增长的编号,所以不需要考虑硬盘的物理结构。
传统的28位LBA,能表示的范围就是2^28,乘以数据块大小就是最大数据容量。现代硬盘和OS已经支持48位LBA。

HDD的寻址速度

  • 寻道时间(Seeking Time):为了访问数据块,磁盘控制器要移动控制读写头到正确的Cylinder上,这个过程称为Seeking。
  • 旋转延迟(Rotational Latency):找到正确的Cylinder之后,还要等待要访问的那个Sector旋转到读头下面,这个时间称为Rotational Latency。

例如,7200转/分钟的HDD,转换一周的时间是60(秒)×1000(转换毫秒)÷7200(转)=8.33毫秒,平均情况下认为每次寻址需要转换半圈,则平均旋转延迟时间为8.33÷2=4.17ms。再加上寻道时间就是寻址所需要的时间。

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

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

相关文章

Gateway源码分析:路由Route、断言Predicate、Filter

文章目录 源码总流程图说明GateWayAutoConfigurationDispatcherHandlergetHandler()handleRequestWith()RouteToRequestUrlFilterReactiveLoadBalancerClientFilterNettyRoutingFilter 补充知识适配器模式 详细流程图 源码总流程图 在线总流程图 说明 Gateway的版本使用的是…

配置单区域OSPF

目录 引言 一、搭建基础网络 1.1 配置网络拓扑图如下 1.2 IP地址表 二、测试每个网段都能单独连通 2.1 PC0 ping通Router1所有接口 2.2 PC1 ping通Router1所有接口 2.3 PC2 ping通Router2所有接口 2.4 PC3 ping通Router2所有接口 2.5 PC4 ping通Router3所有接口 2.…

【Gitlab】记一次升级 Gitlab 后 API 失效的问题

背景 前段时间,因内部使用的 Gitlab 版本存在漏洞,需要进行升级,于是乎,将 Gitlab 从 16.6.0 升级到 16.11.3。而我们项目有个接口是用于获取 Gitlab 上的开发人员。 然后,今天,突然发现这个接口获取不到…

Linux网络——套接字与UdpServer

目录 一、socket 编程接口 1.1 sockaddr 结构 1.2 socket 常见API 二、封装 InetAddr 三、网络字节序 四、封装通用 UdpServer 服务端 4.1 整体框架 4.2 类的初始化 4.2.1 socket 4.2.2 bind 4.2.3 创建流式套接字 4.2.4 填充结构体 4.3 服务器的运行 4.3.1 rec…

在树莓派4B上部署yolov8环境完成高帧率检测任务

目录 前言 在树莓派上安装Pytorch 在树莓派上安装Ultralytics环境 在树莓派上初步测试模型 在树莓派上安装NCNN 用NCNN模型实现高帧率检测 前言 在我前面的文章里讲了如何用yolov8从0开始训练自己的模型,现在这篇文章将教大家如何在树莓派上部署yolov8的环境…

【BUG】已解决:TypeError: Descriptors cannot not be created directly.

已解决:TypeError: Descriptors cannot not be created directly. 目录 已解决:TypeError: Descriptors cannot not be created directly. 【常见模块错误】 【错误原因】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来…

适用于618/7xx芯片平台 AT开发 远程FOTA升级指南教程

简介 AT版本的远程升级主要是对AT固件版本进行升级,实际方式为通过合宙官方IOT平台升级或者使用自己搭建的服务器进行升级服务。 该文档教程流程适用于 618/716S/718P 芯片平台的Cat.1模块 合宙IOT平台配置 升级日志 —— 如何查看 升级日志 —— 响应码列表 响应…

【BUG】已解决:ModuleNotFoundError: No module named ‘torch‘

已解决:ModuleNotFoundError: No module named ‘torch‘ 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市…

Unity-URP-SSAO记录

勾选After Opacity Unity-URP管线,本来又一个“bug”, 网上查不到很多关于ssao的资料 以为会不会又是一个极度少人用的东西 而且几乎都是要第三方替代 也完全没有SSAO大概的消耗是多少,完全是黑盒(因为用的人少,研究的人少,优…

ubuntu2204配置anacondacuda4090nvidia驱动

背景 某个机房的几台机器前段时间通过dnat暴露至公网后被入侵挖矿,为避免一些安全隐患将这几台机器执行重装系统操作; 这里主要记录配置nvidia驱动及cuda&anaconda。 步骤 大概分为几个步骤 禁用nouveau配置grub显示菜单install nvidia-driveri…

Qt Style Sheets-使用样式表自定义 Qt 部件

使用样式表自定义 Qt 部件 在使用样式表时,每个小部件都被视为具有四个同心矩形的框:边距矩形、边框矩形、填充矩形和内容矩形。框模型对此进行了更详细的描述。 盒模型 以下是四个同心矩形在概念上的呈现方式: 边距超出边框。边框绘制在边…

1.Fabric框架

要了解Fabric,首先要知道Hyperledger开源项目。 2015年12月,由开源世界的旗舰组织Linux基金会牵头,30家初始企业成员共同宣布Hyperledger联合项目成立。Hyperledger 超级账本,是首个面向企业应用场景的分布式账本平台&#xff0c…

【Spark官方文档部分翻译】RDD编程指南(RDD Programming Guide)

写在前面 内容如何选择 本翻译只翻译本人认为精华的部分,本人认为的Spark的一些核心理念,编程思想。一些特别基础的操作包括但不限于搭建环境就不在此赘述了。 配套版本 本系列基于Spark 3.3.1,Scala 2.12.10,进行翻译总结 原…

nginx通过nginx_upstream_check_module实现后端健康检查

1、简介说明 nginx是常用的反向代理和负载均衡服务,具有强大并发能力、稳定性、丰富的功能集、低资源的消耗。 nginx自身是没有针对后端节点健康检查的,但是可以通过默认自带的ngx_http_proxy_module 模块和ngx_http_upstream_module模块中的相关指令来完…

Redis之List列表

目录 一.列表讲解 二.列表命令 三.内部编码 四.应用场景 Redis的学习专栏:http://t.csdnimg.cn/a8cvV 一.列表讲解 列表类型是用来存储多个有序的字符串,如下所示,a、b、c、d、e五个元素从左到右组成了一个有序的列表,列表中的…

单例模式_Golang

目录 一、单例模式 1.1 基本概念 1.2 使用场景 二、Golang实现 2.1 懒汉模式(Lazy Loading) 一、单例模式 1.1 基本概念 一个类只能生成一个实例,且该类能自行创建这个实例的一种模式,这个定义个人感觉可以拆的通俗一些,在项目的生命周…

uniapp小程序上传pdf文件

<template><view class"mainInnBox"><view class"formBox"><!-- 注意&#xff0c;如果需要兼容微信小程序&#xff0c;最好通过setRules方法设置rules规则 --><u-form :model"form" ref"uForm" :rules&quo…

C语言:数组-学习笔记(万字笔记)——翻新版

目录 前言&#xff1a; 1、 数组的概念 1.1 什么是数组 1.2 为什么学习数组&#xff1f; 2. ⼀维数组的创建和初始化 2.1 数组创建 2.2 数组的初始化 2.3 数组的类型 2.3.1 什么是数组类型&#xff1f; 2.3.2 数组类型的作用 3、 一维数组的使用 3.1 数组下标 3.2 数…

ExoPlayer架构详解与源码分析(15)——Renderer

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

CentOS 7 初始化环境配置详细

推荐使用xshell远程连接&#xff0c;如链接不上 请查看 CentOS 7 网络配置 修改主机名 hostname hostnamectl set-hostname xxx bash 关闭 SElinux 重启之后生效 配置yum源&#xff08;阿里&#xff09; 先备份CentOS-Base.repo&#xff0c;然后再下载 mv /etc/yum.repos…