Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解

Linux学习怎么能不知道电脑的重要组成硬盘的知识呢?

前文有学习文件系统的概念。介绍了Linux组织文件的方式和文件的分类。

但是最初的时候,最先有的并不是文件系统。而是磁盘。

要我说,最关键的那句话就是:分区存在自己的文件系统。而磁盘存在自己的分区。

磁盘

我们一般指的是在linux中以sd开头的设备名称的存储设备。

很早之前有IDE磁盘,说实在的,我到目前为止并没见过这种磁盘,或者说见过但是根本不认识。。

在学习计算机组成的时候,学过这方面的知识,磁盘,磁道,柱面,扇区,磁头。

ai就能解释的很好:

  1. 磁盘(Disk): 磁盘是存储数据的物理介质,通常由一个或多个圆形的盘片组成。每个盘片由磁性材料制成,可以存储二进制数据。

  2. 磁道(Track): 磁盘上的每一个盘片都被划分为多个同心圆,每个圆称为一个磁道。磁道是磁盘上信息记录的路径,数据就存储在这些磁道上。

  3. 柱面(Cylinder): 柱面是指硬盘上所有盘片上相同编号的磁道构成的垂直柱状区域。例如,如果硬盘有三个盘片,每个盘片上编号为5的磁道会构成一个柱面。

  4. 扇区(Sector): 扇区是磁道上的一个分割区域,是磁盘可寻址的最小数据单元。每个扇区可以存储一定量的数据,通常是512字节,但现代硬盘可能有更大的扇区大小,如4KB。

  5. 磁头(Head): 磁头是硬盘驱动器用来读写磁盘上数据的部件。每个盘片都有一个对应的磁头,磁头悬浮在磁盘表面之上,但不接触磁盘,以避免磨损。

HDD

磁道这些概念,这里一般指的是hdd也就是机械硬盘。由于其结构的原因,会导致其有一些特点,比如随机读写慢,抗震性能差等等。很容易就能想明白,毕竟它是用一个磁头在磁道上读取的嘛。

SSD

ssd指的是我们常说的固态硬盘,和hdd的本质区别是存储数据的方式。使用的内部结构不再是磁盘磁道,而是闪存芯片。同样的,由于它们的内部结构特征,很明显它也有自己的特点。

首先是随机读写性能提高,然后是读写速度整体也有所提升,这是我们大部分人都知道的。

和hdd比较缺点就是过于昂贵,还有读写次数的限制。闪存单元有一定的擦写次数限制,每次擦写都会逐渐损坏存储单元,最终导致单元失效。

不过目前已经在各种技术的加持以及国产的发挥下,有很大的缓解。目前来说我认为ssd更符合大部分个人电脑的需要。

目前来说,如果你要选购硬盘设备,最具性价比的配置是512g的固态加上1t的机械硬盘。如果你是一个游戏玩家,也可以直接购买1t固态。

QLC,TLC是什么

还有不怎么常见的slc,mlc,其实都是闪存的一种技术。

闪存由许多存储单元组成,每个单元可以存储一位、两位、三位或四位数(SLC, MLC, TLC, QLC)

这样你也许就懂了,也就是说,1tb的qlc耗费的单元数目只有tlc的一半。同样的单元数目,存更多的数据就意味着同一个单元要承受更多次数的读写。(闪存单元有一定的擦写次数限制,每次擦写都会逐渐损坏存储单元,最终导致单元失效)

目前对于普通用户来说,tlc是比较优秀的选择,qlc一般价格上比较优惠,如果你确实没有很大的频繁写入的需求,也许qlc很适合你。

至于mlc,slc,对于有稍大容量的需求来说过于昂贵了。

不过如果拥有一个mlc的u盘作为随身存储设备也许很可靠。

Sata是什么

我们都知道usb是一种接口,也对应一个协议,sata也是。sata协议:

  1. SATA 1.0(2003年):数据传输速率达到1.5 Gbps(150 MB/s)。
  2. SATA 2.0(2004年):数据传输速率达到3 Gbps(300 MB/s)。
  3. SATA 3.0(2009年):数据传输速率达到6 Gbps(600 MB/s)。
  4. SATA 3.2(2013年):引入了SATA Express,理论上支持最高16 Gbps的传输速率,但实际使用中通常限制在8 Gbps。

sata不仅仅是一个协议,还是一种接口。 

 m.2

一种外形规格,或者说一种硬盘的接口类型。支持的协议包括sata也包括pcle。

支持不同长度的模块(如 2242、2260、2280),数字分别代表宽度(22mm)和长度(如 80mm)

PCLE

一种通道技术,不仅仅用于磁盘的连接,网卡之类,乃至于显卡内也有这一通道。

可以理解成类似于sata协议中管理数据通道的用处但是比sata快。

nvme

NVMe 是一种专为高速闪存存储设计的通信协议,运行在 PCIe(Peripheral Component Interconnect Express) 通道上。可以理解成基于pcle提供的通道进行传输的存储传输协议。

 交通类比

SATA 接口    传统公路,只适合普通汽车(HDD、SATA SSD),速度有限,规则传统(AHCI)。
PCIe 接口    多车道高速公路,支持高性能交通,但需要专用规则(如 NVMe)才能高效利用。
NVMe 协议    高速公路专用的交通规则,减少等待时间,支持大量并发,专为现代高速车辆设计(SSD)。
M.2 接口    一个收费站,可以连接传统公路(SATA)或高速公路(PCIe),具体路径取决于车辆类型(SSD 类型)。

磁盘分区

一个硬盘,你刚刚拿到手,是一个完完全全的空白状态。

怎么使用呢?我们知道一个电脑启动,有一个叫引导程序的阶段,引导程序正是存在硬盘之中的。

很容易想到,引导程序存在系统能够立刻找到的地方才对。那就是硬盘的最开始。

接下来呢?我们怎么管理磁盘呢?如果按照最简单的想法,硬盘直接作为存储设备,作为一个整体,似乎也是可以的,但是实在是浪费,也不好管理。

比如我要安装多个操作系统,就需要多个引导程序,这怎么办?

比如我要使用不同类型的文件系统,这又该怎么办?

和我们需要文件系统管理文件几乎是一个道理,如果磁盘不用一个好的方式管理,就很难得到全面的利用。

磁盘分区正是对磁盘进行管理的重要手段。

MBR分区

MBR是什么?master boot record。

一种经典的分区方式。磁盘最开始的第一个扇区,总共512字节。虽然现在存在一个扇区4k字节的情况。但是当时还是普遍为512.

这种分区有两个重要的地方:

第一个就是所谓的引导程序区域,MBR区域。最多可以占第一个扇区512的前446字节空间。

第二个就是分区表,占剩下的64字节。

64字节最多记录4个分区,一个分区要占16字节。除了要记录的是分区的起始扇区和结束扇区以外还要标注一系列其他的信息,实际存储扇区起始和结束的只有3-4字节,也就是24位到32位。这也是限制了MBR分区能够允许磁盘的大小。

也就是说MBR实际包含两种:

chs地址字段记录:磁道磁头和扇区。CHS:Cylinder-Head-Sector

LBA地址记录:Logical Block Addressing。逻辑块地址

主要是为了兼容使用不同地址记录的设备。

MBR还有一个扩展分区的理念。

分区表的16字节中可以标识分区的类型(例如:0x07 为 NTFS,0x0F 为扩展分区)。

如果标识位扩展分区:

也就是在主分区表中存在一个分区的分区类型被指定为扩展分区,之后扩展分区内部可以进行逻辑分区。

逻辑分区也有一个分区记录在最前端,但是并不是全部逻辑分区的信息,反倒像一个链表。

理解:

首先是MBR,MBR最多记录四个分区.

如果我们选中一个作为扩展分区。那么就会在这个分区内部有新的分区方法,叫做逻辑分区。

逻辑分区的管理不像我们主分区。主分区使用MBR分区表完全表示,而逻辑分区由于数目不固定,我们采用的是类似链表的方法。

扩展分区内,一开始就是一个逻辑分区表项EBR,其中包含两个分区的分区记录(扩展分区记录),EBR和MBR类似,但是只使用两个表项。也就是32字节。

每个表项也记录了以下信息。

  • 起始 LBA 地址:逻辑分区在扩展分区中的起始地址。(在扩展分区中,这一项表示的是相对地址)
  • 分区大小:逻辑分区的大小,以扇区为单位。
  • 分区类型:逻辑分区的类型(例如,FAT32、NTFS、ext4 等)。

为什么使用两项,第一项用来记录这个逻辑分区,第二项用来记录下一个逻辑分区。(这可不就是链表吗?)

举个例子:

如果我现在有一个主分区一个扩展分区,扩展分区内有三个逻辑分区。

那么硬盘里首先是一个MBR,存着两个分区的信息,其中一个分区的分区类型为扩展分区。

然后这个扩展分区内一开始就是一个EBR1,其中有两个项,分别指向当前逻辑分区,和下一个逻辑分区,下一个逻辑分区在表中的分区类型也是扩展分区。

下一个逻辑分区的开头是一个EBR2,中间也是两项,指向逻辑分区2和下一个逻辑分区3。

扩展分区是针对于MBR来说的,而逻辑分区是在扩展分区内真正被读取作为计算机一个分区的部分。

EBR结构类似MBR,但是在每一个逻辑分区开头都存在。指向自己和下一个逻辑分区。

lba是什么?chs已经解释过了,是给古早设备读取的找到磁盘上指定位置的东西,后来的操作系统都使用LBA来寻找地址。

到这就理解MBR怎么分区了,总而言之,这是一个很经典的分区方法,最重要的就是第一个扇区。

GPT分区

GUID partition table。

LBA

LBA和chs在MBR分区中都有提到,但是关键是chs的磁头磁道这些概念在其他设备上难以适用,或者难以通用。

同时有些容量巨大的盘,它的扇区大小是4KB。为什么使用这个大小的扇区,有很多影响因素。

所以为了不同设备兼容,这里的LBA是一个逻辑上的地址。代表的是逻辑上的区块地址。

GPT分区主要是为了解决一些MBR的缺陷以及适应新的计算机引导启动技术而生的。

GUID

GUID全局唯一标识符(Globally Unique Identifier),它用于标识每个分区的类型或 GUID 分区表的一个特定分区。

MBR只用了第一个512字节来存储分区信息。

GPT则不然,使用了多个LBA来存储。

  • LBA 0:MBR。虽然 GPT 替代了传统的 MBR 分区表,但仍保留了一个 MBR,用于兼容旧系统和 BIOS 启动(特别是对于混合启动模式的硬盘)。
  • LBA 1:GPT 主头,包含 GPT 的基本信息。
  • LBA 2:分区表开始的位置,通常占用32个LBA。
  • LBA33:最后一个分区表位置。
  • 分区数据区:硬盘上的实际数据部分,存储了每个分区的数据。
  • LBA N-33:GPT 备份分区表。
  • LBA N:GPT 备份头,位于磁盘的最后一个扇区。

主头

GPT 主头存储在硬盘的 第一个扇区(即 LBA 1)。主头包含有关 GPT 的基本信息,例如:

  • 硬盘的 GUID:每个硬盘都有一个唯一的 GUID(全局唯一标识符)。
  • 分区表的起始位置:指向分区表的起始位置。
  • 分区表的大小:GPT 允许更多的分区,因此它会记录分区表的大小。
  • 分区数量:硬盘上可以包含多少个分区条目。
  • 校验和(CRC32):用于验证 GPT 主头的完整性。

分区表中:

分区表(Partition Entries)

分区表存储着硬盘上的所有分区的信息,分区表条目包含:

  • 分区类型 GUID:表示该分区的类型(例如,EFI 系统分区、Linux 分区、Windows 操作系统分区等)。
  • 分区唯一 GUID:唯一标识一个分区。
  • 起始 LBA 和结束 LBA:指定该分区的开始和结束扇区地址。
  • 分区属性:一些额外的属性,如只读标志等。
  • 分区名称:分区的名称,通常是操作系统可见的分区标签。

最后我们理解以下:

一个GPT分区占用空间用了34加备份34,一共68个LBA。

第一个LBA是兼容MBR的引导程序区,以及原本存放MBR分区表的位置是一个填了特殊字符的标志。(让只能读懂MBR分区识别,从而不让不兼容GPT的设备使用)用来保护磁盘。

LBA1为表头,记录了分区表本身的大小和位置,还记录了备份分区的位置,以及校验码。

之后是分区表,每个分区用128字节描述,一个LBA(512字节)可以存放4个,32个LBA存放128个分区,当然这个可以扩展。

每个表项空间用64位也就是8字节来表示开始和结束的扇区号码。这比MBR'的32位大了太多。

之后磁盘最后是备份数据。使得我们可以在GPT头或者分区表损坏时恢复。

如果扇区是4KB

那么一个扇区就能存放32个表项。只需要32/8=4个LBA就能存放原本的分区表了。

是不是理解了呢?大家可以关注我一起学习。

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

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

相关文章

angular图表echarts设置

angular框架ngx-echarts图表的配置 图表高度设置 默认高度是400px 可以自己动态设置容器高度 <div echarts nz-row nzJustify"start" [options]"option" [style.height]"option.echartHeight"></div>option.echartHeight‘600px’…

springboot402航班进出港管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统航班进出港管理系统信息管理难度大&#xff0c;容错率低…

umi实现动态获取菜单权限

文章目录 前景登录组件编写登录逻辑菜单的时机动态路由页面刷新手动修改地址 前景 不同用户拥有不同的菜单权限&#xff0c;现在我们实现登录动态获取权限菜单。 登录组件编写 //当我们需要使用dva的dispatch函数时&#xff0c;除了通过connect函数包裹组件还可以使用这种方…

【云原生知识】Kubernets实践-前端服务如何访问后端服务

文章目录 概述步骤1&#xff1a;部署后端服务步骤2&#xff1a;配置Nginx步骤3&#xff1a;创建Nginx服务总结 如何确保 Nginx 能持续访问后端服务&#xff1f;相关文献 概述 假设你正在使用Kubernetes作为容器云平台&#xff0c;以下是如何配置Nginx以及相关服务&#xff0c;…

MySQL中count(*)、count(1)和count(字段名)有什么区别

MySQL中COUNT(*)、COUNT(1)和COUNT(字段名)的区别&#xff1a; 计数类型描述是否计算NULL值性能考虑COUNT(*)计算包括所有列的行数是&#xff0c;不区分列值是否为NULL通常最优&#xff0c;因为不需要检查特定列的值COUNT(1)功能上与COUNT(*)等价&#xff0c;计算行数是&#…

【计算机网络层】数据链路层 :局域网和交换机

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;局域网 &#x1f6a6;局域网…

C# 属性(Property)

C# 属性(Property) C# 中的属性(Property)是一种用于访问和设置类或结构成员的值的特殊类型的方法。属性允许开发者以字段的形式访问方法,提供了更为安全和灵活的数据封装。在本文中,我们将深入探讨 C# 属性的概念、用途、以及如何有效地使用它们。 属性的定义 属性由…

活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识

课程介绍 通过参加“Microsoft 安全在线技术公开课&#xff1a;安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中&#xff0c;你将获得所需的安全技能和培训&#xff0c;以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知…

浏览器定制 | Windows11 编译 Chromium 133.0.6885.0(截稿前Chromium最新版之编译篇[一])

序章回顾 其实&#xff0c;在此之前&#xff0c;我已经发表过如何在Windows下编译Chromium及前期环境准备的系列文章了。 那么&#xff0c;既然之前已然撰写过了&#xff0c;缘何又出这么一篇类似的文章呢&#xff1f; 倘若你看过我那几篇关于windows编译Chromium的系列文章…

【vue2】el-select,虚拟滚动(vue-virtual-scroller)

需求背景​​​​​​ vue2+element-ui项目中,当el-select中数据量较大时(超出5000个dom节点),会导致页面加载和渲染卡顿、el-select下拉列表延迟展开。 在现在的el-select的基础上使用分页或者虚拟列表的形式去处理大量的下拉菜单,可以保证页面的正常渲染及el-select的…

使用webrtc-streamer查看实时监控

摄像头配置&#xff08;海康摄像头为例&#xff09; 摄像头视频编码应改成H264格式 webrtc-streamer下载 webrtc-streamer下载地址 下载后解压出来双击运行&#xff0c;端口默认8000 VUE2项目引入文件 在项目静态文件“public”中需引入两个js文件“webrtcstreamer.js”与“…

Android四大组件——Activity(二)

一、Activity之间传递消息 在&#xff08;一&#xff09;中&#xff0c;我们把数据作为独立的键值对进行传递&#xff0c;那么现在把多条数据打包成一个对象进行传递&#xff1a; 1.假设有一个User类的对象&#xff0c;我们先使用putExtra进行传递 activity_demo06.xml <…

MySQL其四,各种函数,以及模拟了炸裂函数创建用户等操作

目录 一、MySQL中的函数 1、IFNULL 2、IF 3、case &#xff08;难点&#xff09; 4、exists(难) --存在的意思 二、常见的函数 1、字符串函数 2、数学函数 3、日期函数 &#xff08;使用频率不是很高&#xff09; 4、其他函数 5、关于字符集的问题 6、mysql炸裂函数…

泷羽Sec-Burp Suite自动刷漏洞-解放双手

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

CSS在线格式化 - 加菲工具

CSS在线格式化 打开网站 加菲工具 选择“CSS在线格式化” 或者直接访问 https://www.orcc.online/tools/css 输入CSS代码&#xff0c;点击左上角的“格式化”按钮 得到格式化后的结果

[vscode] 创建erlang gen_serve 文件快捷方式

点击左下角功能按钮&#xff0c;代码片段&#xff0c;新建全局代码片段&#xff0c;然后输入自定义内容就可以 {"Erlang gen_server": {"prefix": "genserver","body": ["-module(${1:module_name}).","-behaviour(ge…

OpenGL 几何着色器高级应用

几何着色器高级应用 概念回顾 几何着色器(Geometry Shader)是 OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心功能是基于输入的图元(如点、线或三角形),生成新的图元,或对输入的图元进行修改。 几何着色器的执行是以图元…

机器学习:监督学习、无监督学习

1. 引言 机器学习是一种人工智能领域的技术&#xff0c;它旨在让计算机通过学习数据和模式&#xff0c;而不是明确地进行编程来完成任务。 机器学习分为监督学习、无监督学习、半监督学习、强化学习 四种。 ​ 2. 监督学习 2.1 什么是监督学习 定义&#xff1a;根据已有的数…

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统&#xff0c;主要使用了以下技术和功能&#xff1a; 1.主要技术 使用的技术&#xff1a; HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…

【threejs】创建FPS相机

原理说明 控制器是一个很麻烦的东西&#xff0c;需要创建更多的类来管理相机行为&#xff0c;并且可自定义性差&#xff0c;所以将部分控制器的功能绑定到相机上&#xff0c;可以解决这些问题&#xff0c;所以我以 FlyControls为例&#xff0c;将控制器功能绑定到相机上&#…