NVME 工具在保护信息方面的行为?

NVME 工具在保护信息方面的行为?

环境:Debian Bullseye,撰写本文时为最新版本,nvme-cli 1.12

我对 NVMe 完全陌生,目前正在尝试正确配置 NVMe SSD。据我所知,我不需要元数据,但是我想使用T10-PI保护信息。关于这个主题我有两个问题:

首先,我想知道如何查明是否已为特定设备或命名空间启用该保护。我知道在格式化设备或命名空间时可以启用或禁用 T10-PI,但我不知道如何获取其当前状态。我阅读了各种命令的手册页的大部分内容nvme,并尝试在一定程度上理解 NVMe 规范,但无济于事。我似乎无法发现它。

我只在特定设置下遇到这个问题;对于我感兴趣的其他设置,很快就找到了如何读取其当前状态或值。

其次,我不确定如何启用这种保护。从理论上讲,从阅读来看man nvme-format,这一点很清楚。我只需将-i <n>参数添加到格式命令即可获得类似的内容:

nvme format /dev/nvme0 -l 3 -i 1

有问题的磁盘提供 6 种 LBA 模式,模式3是我想要的模式:每扇区 4096 字节,无元数据;因此-l 3参数。-i 1打开 T10-PI。

当我发出上面的命令时,它会被执行而不会出现错误消息。之后,smartctl -x /dev/nvme0显示当前 LBA 大小为4096nvme id-ns /dev/nvme0n1确认模式3正在按预期使用。到目前为止,一切都很好。

但以下内容却非常可疑:

root@gaia ~/scripts # nvme list
Node             SN                   Model                                    Namespace Usage                      Format           FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1     PHFT640100G7800CGN   INTEL SSDPEDMD800G4                      1         800.17  GB / 800.17  GB      4 KiB +  0 B   8DV10171

Format,就显示出来了4 KiB + 0 B。为什么?据我了解,T10-PI 每个 LBA 至少需要 8 个字节的元数据。因此,我不确定到底发生了什么。

是否nvme format /dev/nvme0 -l 3 -i 1只是禁用 PI(因为没有元数据,因此没有空间)?或者 PI 已启用,但nvme list仅显示“真实”元数据大小(不包括 PI 所需的“隐式”字节)?

我需要使用-l 4而不是-l 3with吗nvme format-l 4表示 4096 字节 LBA 大小 + 8 字节元数据。如果我需要使用-l 4,为什么nvme format -l 3 -i 1不会因错误的命令行参数而抛出错误(如果我们没有元数据,我们无法打开T10-PI)?

相关内容