我怎么做"NVMe overprovisioning"?



我想在带有ZFS的NVMe磁盘上使用NVMe过度配置。我读过这个:https://openzfs.github.io/openzfs-docs/Performance%20and%20Tuning/Workload%20Tuning.html?highlight=ashift#nvme-overprovisioning

但是我不明白">创建一个大小为4GB的新命名空间。"的一步。怎么做呢?它是指创建一个4GB的分区吗?

虽然可以通过分区少于一个完整的设备来实现过度供应,但是在nvme上创建名称空间与创建分区是不同的。操作系统将把命名空间视为设备。如果在NVMe驱动器上创建多个命名空间,操作系统将看到多个设备,并且可以在每个设备上创建一个独立的分区表。

这在多租户环境中非常有用,因为您可能只希望向租户公开某些名称空间。如果您的操作系统安装程序使用整个设备,并且没有通过创建较小的分区为您提供过度配置的选项,那么它也很有用。ESXi安装程序就是这样做的,我想Truenas也是。在这些情况下,过度配置命名空间会阻止安装程序占用整个驱动器。

如果上述情况不适用于您,那么您可以过度配置您的分区。但是,如果您希望使用名称空间来过度配置NVMe设备,那么您可以这样做。注意,这只有在NVMe设备支持多个名称空间时才有可能。许多设备只支持一个名称空间,如果是这种情况,您将无法使用它来过度配置设备。

下面的例子假设你的设备是/dev/nvme0,并且它支持4k扇区。

检查设备支持多少个命名空间。

nvme id-ctrl /dev/nvme0 | grep ^nn

如果返回'1',则不能在设备上删除或创建名称空间。如果有多个,继续删除第一个命名空间。

nvme delete-ns /dev/nvme0 -n 1

创建一个4GB大小,4k扇区的新命名空间。

nvme create-ns /dev/nvme0 -b 4096 -s 4194304

关于NVMe -cli和如何管理NVMe设备,有很多很棒的资源。我在上面提供的信息参考了以下几页。

https://narasimhan-v.github.io/2020/06/12/Managing-NVMe-Namespaces.htmlhttps://www.drewthorst.com/posts/nvme/namespaces/readme/

最新更新