检查 Amazon EC2 实例对防撕裂写入的支持
要确认您的实例和卷是否支持撕裂写防护,并查看包含撕裂写防护信息的 NVMe 命名空间供应商的特定数据,请使用以下命令。
$
sudo nvme id-ns -vdevice_name
注意
该命令以带有 ASCII 解释的十六进制形式返回供应商特定信息。您可能需要在应用程序中构建类似 ebsnvme-id
的工具,以读取和解析输出。
例如,以下命令返回 NVMe 命名空间供应商特定数据,其中包含 /dev/nvme1n1
的撕裂写防护信息。
$
sudo nvme id-ns -v /dev/nvme1n1
如果您的实例和卷支持撕裂写防护功能,其会在 NVMe 命名空间供应商特定数据中返回以下 Amazon 撕裂写防护信息。
注意
下表中的字节表示从 NVMe 命名空间供应商特定数据开头的偏移量(以字节为单位)。
字节 | 描述 |
---|---|
0:31 |
设备附件挂载点的名称,例如 /dev/xvda 。您在卷附件请求期间提供此信息,Amazon EC2 实例可用其来创建指向 NVMe 区块设备的符号链接(nvmeXn1 )。 |
32:63 |
卷 ID。例如 vol01234567890abcdef 。此字段可用于将 NVMe 设备映射到附加的卷。 |
64:255 |
留待将来使用。 |
256:257 |
命名空间撕裂写防护单元大小(NTWPU)。此字段表示在断电或发生错误时,保证以原子方式写入 NVM 的写入操作的命名空间特定大小。此字段在逻辑块中指定,从以零开始的值表示。 |
258:259 |
命名空间撕裂写防护粒度大小(NTWPG)。此字段表示在断电或发生错误时,保证以原子方式写入 NVM 的写入操作的 NTWPU 下的命名空间特定大小增量。也就是说,大小应为 NTWPG * n <= NTWPU ,其中 n 为正整数。写入操作 LBA 偏移量也必须与该字段对齐。此字段在逻辑块中指定,从以零开始的值表示。 |
260:263 |
命名空间撕裂写防护边界大小(NTWPB)。此字段表示该 NTWPU 值的此命名空间的原子边界大小。在断电或发生错误时,无法将保证跨原子边界写入此命名空间的操作以原子方式写入 NVM。值为 0h 表示断电或发生错误时没有原子边界。所有其他值使用与 NTWPU 字段相同的编码以逻辑块形式指定大小。 |