网站建设中,中国大陆地区请使用VPN访问,欢迎提建议,关注LSKR Mastodon

详细分析磁盘物理结构和各种常用的接口SATA SAS eSATA等

详细分析了磁盘的物理结构包括基本概念扇区和柱面以及磁道,然后介绍了现在常用的磁盘使用SATA,eSATA,SAS等接口,包括常用协议。

一张包含Linux 企鹅图标的图片

一、linux 磁盘存储设备

1.1 磁盘存储的物理结构

为什么我们要了解磁盘存储结构,现在的HDD和SSD在Linux 上的显示,依旧是以一种原始结构展示出来。因此,我们依旧需要了解什么扇区/柱面/磁头/磁道等概念。

sudo fdisk -l # 比如查看基本的磁盘分区参数
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

1.2 HDD物理结构

注意:SSD物理结构尽管完全不同,但是依旧保持了这种的表达形式。这就是为什么物理磁盘没有柱面等结构依旧有这样的表达。

这里回答了为什么我们使用的SSD磁盘在一些系统中依旧有柱面相关HDD等概念。

一张HDD磁盘结构的说明截图

机械结构主要包括:主轴马达/机械臂/磁头/碟片

一张关于磁盘的逻辑结构图


扇区(Sector):磁盘上最小的物理存储单位

磁道(track):同一个同心圆的扇区组成的圆

柱面(cylinder):一个磁盘里有多个碟片,所有的磁碟上的同一个同心圆磁道就组成了一个柱面。

1.2.1 实例解读

Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

GB吉比字节是数字信息的单位字节(B)的倍数。二进制前缀gibi(Gi)表示2的30次方,因此1 gibibyte等于1073741824 bytes = 1024 mebibyte(MiB)。吉比字节由符号GiB表示。

1048576000 sectors :表示总共有1048576000 个扇区

Units: sectors of 1 * 512 = 512 bytes表示每个扇区的大小单位,某些情况下展示cylinder 的大小(这是为了兼容性)

Sector size (logical/physical): 512 bytes / 512 bytes 表示逻辑扇区和物理扇区的大小

物理扇区和逻辑扇区

逻辑扇区大小:这表示操作系统在阅读或写入数据时与之交互的扇区大小。

物理扇区大小:这表示磁盘本身物理扇区的实际大小。在这种情况下,它也被称为512字节。现代硬盘驱动器和SSD通常具有物理扇区空间。

如果这些值相同(逻辑扇区大小和物理扇区大小均为512字节),则表明磁盘使用一致的扇区大小

目前的扇区的大小是:512B,随着数据量的扩大有的是4KB的大小。

补充:设备的字节单位问题GB =?GiB 问题

fdisk 更多的输出结果,请直接参考的fdisk 的参考手册:https://man7.org/linux/man-pages/man8/fdisk.8.html

二、磁盘分区

为了适应高数据量4KB扇区的扇区。有了新的分区方式GPT模式。

  • MBR分区(MS-DOS兼容模式)
  • 新方式GPT模式

2.1 常见磁盘传输接口类型

2.1.1 接口概述

  • SATA (主流接口,包括 SATA1.0/2.0/3.0)
  • SAS(主流接口,高端设备口 1.0/2.0/3.0)
  • IDE (淘汰)
  • SCSI(淘汰)
  • USB(USB盘)
  • eSATA(SATA扩展)
  • m.2(专为笔记本口)

2.1.2 SATA

SATA(Serial Advanced Technology Attachment)是一种用于连接计算机内部硬盘驱动器、固态硬盘以及光驱等存储设备的接口标准。它是一种串行数据传输接口,取代了早期的并行ATA(IDE)接口,为数据传输提供了更高的速度和性能。

固态硬盘(SSD)和机械硬盘(HDD)支持: SATA接口广泛用于连接各种类型的硬盘驱动器,包括传统的机械硬盘和更快速、耐用的固态硬盘。

总结,SATA作为主流接口,优点很多,发展很快包括:1.0/2.0/3.0/等。

个人电脑上一般会有接口

识别样式

一张SATA硬盘的接口图片

2.1.3 SAS接口

SAS是一种功能强大、用途广泛的存储接口,非常适合要求高性能、可扩展性和可靠性的苛刻应用。虽然其较高的成本和复杂性可能不适合所有情况,但它仍然是数据中心和其他数据为王的关键任务环境的首选

一个个人电脑上并不配置此接口。SAS 发展到1.0/2.0/3.0 速度更快,当然也更加昂贵。

2.1.4 IDE 接口

IDE已经被SATA替代了,这里并不做讨论,因为一般也见不到了。

IDE(Integrated Drive Electronics)接口,也称为PATA(Parallel ATA),曾经是连接计算机主板和硬盘驱动器之间的标准接口。然而,随着技术的发展和性能需求的提升,IDE接口已经逐渐被更先进的接口标准所取代,特别是SATA和SAS接口。

在现代计算机中,IDE接口已经相对较少见,而SATA接口成为连接内部硬盘驱动器的主流标准。SATA接口具有更高的传输速度和更好的性能,同时支持热插拔和更紧凑的数据线,这些特性相比IDE接口更加优越。

另外,固态硬盘(SSD)的普及也加速了IDE接口的淘汰。大多数SSD采用SATA或更先进的接口标准(比如NVMe),因为这些接口能够更好地发挥固态硬盘的性能优势。

2.1.4 SCSI接口

在消费级市场和普通家用计算机中,SCSI接口已经相对较少见。SATA和SAS等接口标准更加普及,因为它们提供了更高的性价比和易用性。

SCSI接口有多种类型,包括并行SCSI(Parallel SCSI)和串行SCSI(Serial SCSI)。串行SCSI又被称为SAS(Serial Attached SCSI),它是SCSI的现代化版本,提供了更高的性能和可靠性。

2.1.5 USB

USB盘就是我们使用接口,这里不再赘述。

2.1.6 eSATA接口

eSATA是一种扩展SATA 接口,实际上就是外置式SATA II规范,是业界标准接口Serial ATA(SATA)的延伸,用来连接外部而不是内部SATA 设备。 简单的说就是通过eSATA 技术,让外部I/O 接口使用SATA2 功能。

eSATA它不牵涉到底层的复杂技术,只需要完善下接口部分而已,最终的应用形式显然是需要把硬盘配置在某种盒状装置内的,虽然SATA硬盘本身支持热插拔。业界对eSATA接口的描述就是,基于标准的SATA线缆和接口,连接处加装了金属弹片来保证物理连接的稳固性,而eSATA线缆能够插拔2000次,这也为eSATA抢班夺权创造了很好的条件。

随着USB 3.0和更高版本的普及,eSATA的使用减少,但对于需要更高速、更可靠的数据传输的场景,eSATA仍然是一种有用的外部存储连接接口。

尽管eSATA只是SATA接口的延伸,而且制造商并不需要对SATA的协议和处理芯片进行任何修改,但要确保将SATA安全地移到机箱外,并通过SATA-IO国际组织的审核,必然有许多地方需要加以改进。

这种接外置接口的东西,现在随着USB发展,速度越来越快,基本上都被淘汰了。

一张eSATA与SATA接口的对比图

2.1.7 M.2接口

M.2原名为NGFF接口,标准名称为PCI Express M.2 Specification。它是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来基于mini PCIe改良而来的mSATA固态硬盘。无论是更小巧的规格尺寸还是更高的传输性能M.2都远胜于mSATA。

M.2接口支持多种数据传输协议,如SATA、PCIe、USB、HSIC、UART、SMBus等。其中包括SATA(以传统的SATA III速度运行)和PCI Express(PCIe),其中PCIe x2和PCIe x4速度版本较为常见。

M.2接口是为超极本(Ultrabook)量身定做的新一代接口标准,以取代原来的mSATA接口。

一张m.2 NMVe 接口和m.2 SATA接口硬盘图片

M.2 SATA接口 指的是M.2插槽上使用的SATA协议,用于连接SATA SSD。这意味着SSD通过M.2插槽使用SATA接口协议进行通信,这些SSD通常采用SATA III接口标准,传输速度受到SATA III的限制(理论上最高速度为6Gbps)。

2.2 传输接口总结

我们常见的接口有USB优盘/SATA接口(个人笔记本)/SAS 接口(高性能服务器配置)。其他接口基本被淘汰了。

2.3 协议

主流硬盘使用的协议主要包括AHCI、NVMe和SCSI。其中,AHCI是硬盘的主流协议,被广泛用于民用场合。

而NVMe协议则主要应用于超高性能和企业级硬盘场合。

AHCI(Advanced Host Controller Interface)是一种硬盘接口标准,它允许存储驱动程序启用高级串行ATA功能,如本机命令队列和热插拔。AHCI通过包含一个PCI BAR(基址寄存器),来实现原生SATA功能。由于AHCI统一接口的研发成功,使得支持串行ATA产品的开发工作大为简化。

具体来说,AHCI技术规范提供了一种通用的硬盘接口规范,该规范可以让SATA存储设备激活高级SATA功能,例如原生指令队列及热插拔。因此,AHCI协议实际上定义了如何传输SATA协议的数据。

三、参考

[1] https://man7.org/linux/man-pages/man8/fdisk.8.html


原创内容,禁止转载!

إرسال تعليق

Cookie Consent
我们使用 Cookie 来了解您如何使用我们的网站并提升您的体验。这包括个性化内容和广告。
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.