用nvme 命令创建multi-name space

时间:2021-10-13 00:37:50

背景

新的nvme 标志已经能够支持multi-name space, 可以用于针对冷热数据实现资源隔离,减小整体内部GC,提供介质使用寿命。一些新的nvme SSD已经能够支持multi-name space了,那么给如何操作呢?

流程

0. 检查SSD是否支持NS

root@q$ nvme id-ctrl /dev/nvme0 NVME Identify Controller: vid : 0x8086 ssvid : 0x8086 sn : PHLJ045001PB8P0HGN mn : INTEL SSDPE2KX080T8 fr : VDV10170 rab : 0 ieee : 5cd2e4 cmic : 0 mdts : 5 cntlid : 0 ver : 10200 rtd3r : 989680 rtd3e : e4e1c0 oaes : 0x200 ctratt : 0 rrls : 0 oacs : 0xe acl : 3 aerl : 3 frmw : 0x18 lpa : 0xe elpe : 63 npss : 0 avscc : 0 apsta : 0 wctemp : 343 cctemp : 353 mtfa : 0 hmpre : 0 hmmin : 0 tnvmcap : 8001563222016 unvmcap : 0 rpmbs : 0 edstt : 0 dsto : 0 fwug : 0 kas : 0 hctma : 0 mntmt : 0 mxtmt : 0 sanicap : 0 hmminds : 0 hmmaxd : 0 nsetidmax : 0 anatt : 0 anacap : 0 anagrpmax : 0 nanagrpid : 0 sqes : 0x66 cqes : 0x44 maxcmd : 0 nn : 128 oncs : 0x6 fuses : 0 fna : 0x4 vwc : 0 awun : 0 awupf : 0 nvscc : 0 nwpc : 0 acwu : 0 sgls : 0 mnan : 0 subnqn : ioccsz : 0 iorcsz : 0 icdoff : 0 ctrattr : 0 msdbd : 0 ps 0 : mp:20.00W operational enlat:0 exlat:0 rrt:0 rrl:0 rwt:0 rwl:0 idle_power:- active_power:

上面nn(全称number of namespaces )字段标识是否支持多name-space: 128代表支持128个,如果是1说明不支持multiple namespace

1.detach

nvme detach-ns /dev/nvme0 -n 1 -c 0 nvme delete-ns /dev/nvme0 -n 1 nvme reset /dev/nvme0

2.创建

#1953125000 = 1,000,000,000,000/512 = 1,953,125,000 (1TB) nvme create-ns /dev/nvme0 -s 976562500 -c 976562500 -f 0 -d 0 -m 0 nvme attach-ns /dev/nvme0 -n 1 -c 0

nvme create-ns /dev/nvme0 -s 975175680 -c 975175680 -f 0 -d 0 -m 0 #第二个创建的必须 nvme attach-ns /dev/nvme0 -n 2 -c 0

nvme reset /dev/nvme0 nvme list [root@localhost Muti-namespace_Test]# nvme list Node SN Model Namespace Usage Format FW Rev


/dev/nvme0n1 XXXXXX XXXXX 1 500.36 GB / 500.36 GB 512 B + 0 B VDV10152 /dev/nvme0n2 XXXXXX XXXXX 2 499.29 GB / 499.29 GB 512 B + 0 B VDV10152

3 删除

nvme detach-ns /dev/nvme0 -n 1 -c 0 nvme detach-ns /dev/nvme0 -n 2 -c 0

nvme delete-ns /dev/nvme0 -n 1 nvme delete-ns /dev/nvme0 -n 2

4.恢复

nvme create-ns /dev/nvme0 -s 1000204886016 -c 1000204886016 -f 0 -d 0 -m 0 #1000204886016是通过“nvme id-ctrl /dev/nvme0n1 | grep tnvmcap”抓取并除以512 nvme attach-ns /dev/nvme0 -n 1 -c 0 nvme reset /dev/nvme0

nvme list [root@localhost Muti-namespace_Test]# nvme list