我刚刚注意到Maximum Data Transfer Size
我的两个 NVMe SSD 上都有一个规格(一个是 128 页,另一个是 64 页)。这到底是什么?它和 EBS 一样吗?埃拉塞乙锁年代ize,看到分区对齐到 SSD 擦除块大小是否毫无意义?或者https://en.wikipedia.org/wiki/Flash_memory#NAND_memories)?
# smartctl -c /dev/nvme0n1
(...)
Maximum Data Transfer Size: 128 Pages
(...)
# smartctl -c /dev/nvme1n1
(...)
Maximum Data Transfer Size: 64 Pages
(...)
答案1
来自 NVM Express 规范:
最大数据传输大小 (MDTS):此字段表示在主机可访问的内存(例如主机内存、控制器内存缓冲区(参见第 4.7 节))和控制器之间传输数据的命令的最大数据传输大小。主机不应提交超过此最大数据传输大小的命令。如果提交的命令超过此传输大小,则命令将中止,状态为“命令中的无效字段”。该值以最小内存页面大小 (CAP.MPSMIN) 为单位,并以 2 的幂 (2^n) 的形式报告。值为 0h 表示没有最大数据传输大小。
需要澄清的是,它是一次可以从主机发送到存储设备的数据量。它与其他任何因素(包括底层闪存的结构、呈现的块大小等)无关...
如果您热衷于计算实际大小,则需要使用该nvme
实用程序找到 MPSMIN 的值。
例如,以下 SSD 支持 2MiB 的 MDTS。
$ nvme show-regs -H /dev/nvme0 | grep MPSMIN
Memory Page Size Minimum (MPSMIN): 4096 bytes
$ smartctl -c /dev/nvme0 | grep 'Maximum Data Transfer Size'
Maximum Data Transfer Size: 512 Pages