逻辑扇区和物理扇区

news/2024/11/22 20:45:43/

1. 磁盘

磁盘(disk)是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。如下图,磁盘是由圆形盘片再加上机械臂磁头构成。
在这里插入图片描述

1.1. 扇区

磁盘一直是存储设备的主流,磁盘的盘片是圆形,通过机械磁头以圆形方向磁道读写数据。如下图的玫红色部分的C区域,是一个扇形区域,即扇区(Sector)。那么一个Sector多大呢?磁头在盘片上是可以每次只读写一个字节的数据,但是这样面临一个问题。向磁盘写数据时,因为磁信号写入信噪比(SNR) 的原因,存在出错的可能性。因此,需要增加一种纠错机制,来让数据的写读更安全。综合读写性能,纠错算法等考虑,大家选定512为一个Sector大小,也即磁盘每次至少读写512大小(有效数据为512,但是实际数据比这大,因为还有纠错算法的校验位数据)。自此以后,磁盘的最小读写单元一直为SectorSize=512。
在这里插入图片描述

1.2. Advanced Format Disk

磁盘容量的增加,主要是通过提高磁盘单面积存储密度来实现的。存储密度的提升会导致磁信号信噪比相应提升,进而导致更多出错的可能性。针对这种情况,急需要一种快速提升纠错能力的新算法。原来12bit/512Byte的纠错算法,即每512Byte中只要出错小于等于12bit即可以纠正。单纯地想针对512Byte提升纠错能力,非常难实现。此时一种相对简单的提升纠错能力的方法提出来了。即将sector扩大到4096Byte,那么纠错能力相应地变为96bit/4096Byte。因为出错情况并不是平均分布的,例如4096Byte中出现90bit错误,且有20bit错误出现在前512Byte中,针对这种情况,原先的12bit/512Byte机制是无法纠错的,但是新的96bit/4096Byte机制是可以纠错的。
基于上述原因,磁盘将最小读写单元SectorSize改为4096Byte。这种SectorSize=4096在磁盘,存储工业协议统一称为Advanced Format Disk(高级格式盘,也被称为4K盘)。
磁盘的最小存储单元改为4096了,但是使用磁盘的计算机一直是按最小单元512Byte来读写磁盘。4K盘为此,增加了一个转换层来模拟512Byte的操作。如果操作系统写512,那么磁盘实际会先读出4K数据,再修改相应的512Byte,再以4K大小写入磁盘。磁盘的这种操作,被称为512e,即512 Emulation。

2. 操作系统

2.1. Sector

磁盘的发展历史是早于操作系统的。因此在操作系统创建时,操作磁盘是按磁盘的SectorSize(512)来操作的,这样性能才最好。后来,随着磁盘容量的提升,出现了512e的Advanced Format Disk。操作系统也能用这种新的512e盘,但是发现在写小文件时(文件大小1K左右),性能下降几倍。一通分析下来,操作系统发现,实际写512Byte文件,磁盘会先读出4K内容,再修改相应位置的512Byte,再以4K大小写入磁盘,这样的操作,性能必须几倍的下降。

2.2. 4K对齐

不仅如此,操作系统还发现,读写4K大小的文件,在某些情况下,速度会降低一倍。经分析,发现文件系统的MBR默认为63个Sector,那么实际读4K数据,磁盘实际读2个4K数据,然后前面4K部分取512Byte,后来4K数据取3584Byte,这样拼凑为一个4K数据。此时,发现针对Advanced Format Disk,文件系统MBR是否对齐4K同样非常影响读写性能。

2.3. 协议

操作系统发现这样不行,针对一些对磁盘小文件读写性能敏感的应用程序,无法让他们获取良好的体验。操作系统想知道磁盘内部的SectorSize是512,还是4096?于是,操作系统方和磁盘方坐在一起商量,提出一个新的概念,即:磁盘内部实际操作的最小单元被称为Physical Sector,磁盘对外提供操作接口最小单元为Logical Sector。操作系统原来是向磁盘发送25h的SCSI命令,来获取磁盘的容量和sector信息。如下图,磁盘回的内容包括两部分,前4Byte为磁盘总可用Sector数,后4Byte为SectorSize=0x200(512)。
在这里插入图片描述
原有的SCSI协议没办法传递两个Sector大小,所以大家商量升级一下协议,增加一条新的命令9Eh。9Eh命令兼容25h,其同样可以获取磁盘的总可用Sector数,以及SectorSize。这个SectorSize即磁盘的接口最小读写单元,也即新协议中的Logical Sector。另外9Eh命令返回值中还包括一个内容LOGICAL BLOCKS PER PHYSICAL BLOCK EXPONEN,即以指数的形式来表示Physical Sector的大小为几个Logical Sector。如下图中的:2^3(8),Physical Sector为8个Logical Sector,即4096。在这里插入图片描述

2.4. 现状

操作系统不停地升级,新的Widnows和Linux均已经支持Logical sector设置为4096。其具体为:在这里插入图片描述
但是很多老的软件,并没有升级,且有大量的用户。因此,针对消费级市场的磁盘,其为了兼容老的操作系统及其应用,其依然保持Logical Sector=512,Physical Sector=4096。但是针对企业级的磁盘,其使用新的操作系统,并且有专门的配套软件,所以企业级磁盘一般是Logical Sector=4096,Physical Sector=4096。
Windows下可以通过下面的命令来获取相关信息:

C:\Windows\system32>fsutil fsinfo ntfsinfo d:
NTFS Volume Serial Number :       0xa016d8a616d87eaa
Version :                         3.1
Number Sectors :                  0x00000000747057ff
Total Clusters :                  0x000000000e8e0aff
Free Clusters  :                  0x000000000e7b2813
Total Reserved :                  0x0000000000000000
Bytes Per Sector  :               512
Bytes Per Physical Sector :       4096

Linux下使用如下命令获取相关信息:

michael@-Product-Name:/$ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 476.96 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: YS9203_512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

ATA或NVMe接口的存储设备(固态硬盘或SSD),除了兼容SCSI命令,可以通过9Eh来获取相关信息,还可以通过ATA协议或NVMe协议提供的Identify命令来获取相关信息。
在这里插入图片描述


http://www.ppmy.cn/news/869991.html

相关文章

ic卡扇区解读

介绍 每张IC卡都有16个扇区,包括1个公共区和15个数据区。每个扇区有4个块,每个块占16字节。 第0扇区的块0为厂商代码,已经固化。包括芯片序列号UID,ATQA和SAK 每个扇区的块3为控制块,用来存放密码和控制权限 &#x…

lotus 扇区一致性检测 删除错误扇区

lotus 扇区一致性检测 1,POST提交失败2,检测扇区3,扇区188已经上链3.1 查看扇区故障 4,指定扇区检测 1,POST提交失败 ERROR storageminer storage/wdpost_run.go:101 runPost failed: running window post failed:git…

为什么磁盘分区的时候,第一个分区前面总有一段空间(63或者2048个扇区)

背景 不论是MBR分区还是GPT分区,第一个分区的前面总有一段空闲的空间(除了MBR之外的空间),这段空间不属于任何分区。 这一段空间的意义 早期的操作系统对应的分区工具在分区的时候,其第一个分区总是63号扇区开始的&…

windows下获取柱面、扇区数,扇区大小

物理硬盘命名为\\.\PhysicalDrive0 用CreateFile打开物理硬盘&#xff0c;然后用DeviceIoControl的参数IOCTL_DISK_GET_DRIVE_GEOMETRY&#xff0c;代码如下 #include <windows.h> #include <stdio.h> #include <winioctl.h>#define wszDrive L"\\\\.\…

OS | 磁盘地址结构 、柱面号 盘面号 扇区号的计算

一、前情回顾 1、磁盘读写时间 问题&#xff1a; 2、减少延迟时间的方法&#xff1a;交替编号 3、磁盘地址结构的设计 书里推荐的这种物理地址结构&#xff0c;也就是柱面号放在盘面号之前会发生什么情况呢&#xff1f; 为什么磁盘的物理地址是&#xff08;柱面号&#xff0c;盘…

Ceph分布式存储 - 常见OSD故障排除

1.常见的OSD故障排除 在排除OSD故障之前&#xff0c;请检查显示器和网络。如果ceph health或ceph -s返回健康状态&#xff0c;则表示监视器形成了法定人数。如果监视器未达到仲裁或监视器状态不正确&#xff0c;请首先解决监视器问题。验证您的网络并确保其正常工作&#xff0c…

【记录】smartctl|Linux如何通过smartctl查看有没有坏的磁盘?以及使用时长、电源周期、故障记录等

smartctl是一个用于监测和分析硬盘健康状态的工具&#xff0c;可以用于检测是否存在坏的磁盘。以下是使用smartctl检查磁盘健康状态的步骤&#xff1a; 安装smartctl软件 在Linux系统中&#xff0c;smartctl通常包含在smartmontools软件包中。如果您还没有安装smartmontools&am…

城市内涝监测设备-内涝监测终端

随着我国城市化发展迅速、全球极端天气现象频发带来的暴雨天气增多&#xff0c;汛期暴雨引发道路低洼处、立交桥底、隧道、涵洞等城市 内涝时有发生&#xff0c;甚至开启城市看海模式&#xff0c;对交通、电力、通讯等造成了严重的影响和破坏&#xff0c;严重时造成人民生命、财…