首页 > 其他分享 >NVMe SSD格式化到底做了什么?

NVMe SSD格式化到底做了什么?

时间:2024-10-31 11:46:01浏览次数:3  
标签:Sector 控制器 格式化 NVMe 命令 格式 SSD Size Metadata

 无论是为了防止数据泄露,还是更改硬盘格式,我们通常会进行格式化操作。在Windows或Linux shell中对SSD进行格式化(format)时,往往需要几分钟甚至几十分钟,这个时间通常与硬盘容量成正比。那么在这段时间里,SSD到底做了些什么操作呢?

为更好地理解本文,这里需要介绍一些SSD的工作原理。熟悉NVMe协议的读者可跳过此部分。

  • NVMe over PCIe数据传输原理

如图所示,主机和SSD控制器(下文统一称为“控制器”)通过队列对(Queue Pair)进行管理命令(Admin Command)和IO命令(I/O Command)的交互。主机将命令提交到发布队列(Submission Queue),控制器从发布队列中获取命令,执行完成后将命令完成消息提交到完成队列(Completion Queue),主机从完成队列获取命令完成消息,认为此命令执行完成。

  • LBA格式

如上图所示,硬盘格式主要体现在三个方面:

1、Sector Size:图中LBA n Data区域,表示硬盘进行读写操作时的逻辑块大小(通常为512或4096字节);

2、Metadata Size:表示主机允许携带的元数据大小以及Metadata的传输方式(如图所示,Extend Buffer传输和Separate Buffer传输);

3、PI(Protection Information):指是否有PI以及其在Metadata中的位置(在Metadata的起始字节还是末尾字节)。协议要求在1.0及以后的版本中,PI信息需放在Metadata的末尾字节。

在Linux下使用nvme list命令可以查看系统中的NVMe设备信息,其中红框标注的字段表示当前硬盘的LBA格式:

(1)Sector Size = 512B,Metadata Size = 0,没有PI数据;

(2)Sector Size = 4096B,Metadata Size = 0,没有PI数据。

了解上述基础知识后,我们来具体看看控制器执行format时到底做了哪些操作。

1、命令参数的校验

(1)目标NSID:是否支持FFFFFFFF NSID、目标NSID是否有效。

(2)目标LBA格式:在命令中,目标格式以数组下标的形式提供给控制器,由LBAFU和LBAFL共同组成,指向特定的目标格式。

主机通过Identify命令从Namespace Identify数据结构中获取名字空间支持的目标格式。最多支持64种格式,根据命令中组成的数组索引,可以在该结构中找到目标格式规定的Sector Size和Metadata Size。

 (3)PI信息:PI信息通过Metadata传输,因此支持PI信息的前提是支持Metadata。

2、停止IO调度

如下图所示的IO流程中,控制器在第3步时不再从发布队列中获取新的IO命令,但已经在控制器内存中的命令仍会继续执行。

3、将用户区数据全部落盘

IO数据经过主机内存和控制器内存这两个易失性存储后,才会写入非易失性存储NAND颗粒。在实际的固件应用中,控制器会先将主机下发的数据临时保存在控制器内存中,只有在满足一个PU(Program Unit)时,才会统一将数据刷新(FLUSH)到NAND颗粒中。在格式化时,如果主机下发的数据不满足一个PU,就需要补充虚拟数据(dummy)以达到一个PU的大小,然后再进行数据落盘。

4、下发全盘擦除命令,将所有用户数据擦除干净。
5、使用新的格式重新初始化相关硬件和数据结构。
6、根据新的format格式修改Namespace Identify数据结构,如NSZE、NCAP和格式索引等属性。

例如,当旧格式Sector Size为512字节,新格式为4096字节时,NSZE和NCAP描述的是以Sector Size为粒度的数量,因此需要将NSZE和NCAP分别除以8。

7、恢复IO调度,控制器将重新从命令发布队列中获取IO命令,并提交format结果到命令完成队列。

在主机端执行format操作如下:

首先,使用Identify命令查看支持的lbaf格式以及当前使用的格式。如下图所示,目前格式为Sector Size=4096,Metadata Size=0。

nvme list命令显示也符合上述描述: 

接着,输入nvme format命令,指定nsid=1,格式索引为0(代表Sector Size=512,Metadata Size=0),切换成功后,日志(log)显示相应信息:

 最后,再次使用Identify命令查看支持的lbaf格式及当前使用的格式,如下图所示,显示目前格式为Sector Size=512,Metadata Size=0:

通过使用Format NVM命令,可以在SSD所支持的不同格式之间切换,实现低级格式化的功能。由于格式化操作会擦除盘上原有的数据,因此在执行格式化之前,务必将所有的重要数据进行备份,以防数据丢失。

标签:Sector,控制器,格式化,NVMe,命令,格式,SSD,Size,Metadata
From: https://blog.csdn.net/2301_78093850/article/details/143238505

相关文章

  • java Web 时间LocalDateTime 输出到前端格式化
    格式化时间返回到前端 packagecom.za.edu.config;importcom.fasterxml.jackson.databind.DeserializationFeature;importcom.fasterxml.jackson.databind.ObjectMapper;importcom.fasterxml.jackson.databind.module.SimpleModule;importcom.fasterxml.jackson.datab......
  • 【重磅新品】芯驿电子 ALINX 推出全新 IP 核产品线,覆盖 TCP/UDP/NVMe AXI IP 核
    在创新加速的浪潮中,为更好地响应客户群需求,芯驿电子ALINX推出全新IP核产品线,致力于为高性能数据传输和复杂计算需求提供高带宽、低延迟的解决方案。发布的第一批IP核包括10GBe/40GBeUDP协议栈IP核、10GbETCP/IP协议栈IP核和NVMeAXIIP核。 ALINX发布的10Gb......
  • 智能优化揭秘——GaussDB数据库查询重写的自动挖掘与生成
    ​在数据库世界里,查询重写是提升性能的关键环节。WeTune作为一款革命性工具,能自动发现新重写规则,打破现有系统依赖人工发现重写规则的局限,大幅提升数据库查询性能。上海交通大学软件学院副院长王肇国和高斯实验室GaussDB数据库优化器专家Ethan联手开展了一场以《智能优化揭秘—......
  • 利用GaussDB的可观测性能力构建故障模型
    ​D-SMART高斯专版已经开发了几个月了,目前主要技术问题都已经解决,也能够初步看到大概的面貌了。有朋友问我,GaussDB不已经有了TPOPS了,为什么你们还要开发D-SMART高斯专版呢?实际上TPOPS和D-SMART虽然都可以用于Gaussdb的运维监控,不过其分工还是十分明显的。TPOPS是华为GaussDB自带......
  • LLVM技术在GaussDB等数据库中的应用
    万物互联的态势下,数据量的激增使得“如何提升数据处理性能”成为各家数据库共同面临的挑战。作为编译优化技术的代表,基于LLVM的CodeGen技术,能为每个查询生成定制的机器码替代原本的通用函数,减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能......
  • GaussDB数据库事务管理
    ​一、引言事务管理是数据库系统中至关重要的一部分,它确保了数据库的一致性和可靠性。在GaussDB数据库中,事务管理不仅遵循传统的ACID特性,还提供了一些高级功能。本文将深入探讨GaussDB数据库事务管理的各个方面。二、事务的基本概念2.1事务的定义事务是数据库操作的基本单元......
  • GaussDB火焰图分析
    问题描述CPU利用率是衡量系统负载和健康度的重要指标之一,系统在运行过程中时常发生CPU利用率高的情况。在分析性能问题时,可通过火焰图查看CPU耗时,了解瓶颈在哪里。问题现象部分sql执行速度不符合预期。告警慢sql告警。cpu使用率高告警。数据库整体运行慢。业务影响业务......
  • GaussDB的行存表与列存表的选择
    一、前言行存表和列存表是数据库中两种常见的数据存储方式。随着信息技术的飞速发展,数据存储和管理以及如何高效地存储和处理大量的数据已经成为了我们的一大挑战。为了解决这个问题,行存表与列存表应运而生,它们以其独特的优势在各个场景得到了高效的应用。GaussDB支持行、列存储......
  • GaussDB WDR报告分析
    问题描述CPU使用率高。问题现象出现CPU使用率超过阈值,CPU使用率快速上涨或短时间持续较高水平等现象。告警CPU使用率告警。业务影响CPU使用率高集群响应变慢。原因分析期间业务压力增大导致。出现CPU耗时较多的SQL。处理方法步骤1查看监控是某个节点的CPU高还是集......
  • GaussDB OLTP 云数据库配套工具DAS
    一、前言传统的数据库管理软件,不仅需要下载安装、功能还比较单一,而且已经滞后于云服务的发展模式。华为GaussDB云数据库提供了配套的生态工具数据管理服务DAS。DAS通过与数据库内核的紧密结合,提供了数据库开发、运维、智能诊断一站式云上数据库管理平台,方便用户使用和运维华为......