nvme-cli常用指令
NVMe management command line interface
1.下載地址
https://github.com/linux-nvme/nvme-cli
2.安裝
unzip nvme-cli-master.zip
cd nvme-cli-master.zip
make && make install
/dev/nvme1 nvme1為主控
/dev/nvme1n1 nvme1n1為NVMe硬盤名稱
/dev/nvme1n1p1 硬盤nvme1n1的分區
3.常用指令
1)nvme format -s 1 /dev/nvme1n1 格式化硬盤(secure erase drives)
nvme format /dev/nvme1n1 -n 1 -l 1 4k對齊
nvme format /dev/nvme1n1 -n 1 -l 0 恢復初始狀態512
nvme format /dev/nvme1n1 -l 0 Optane device Units512
參數詳情請參考:http://www.pudn.com/Download/item/id/3180638.html
2)nvme smart-log /dev/nvme0n1 讀取硬盤nvme0n1的smart信息
部分其他參數詳解參考:https://www.percona.com/blog/2017/02/09/using-nvme-command-line-tools-to-check-nvme-flash-health/
3)nvme升/降固件版本
nvme reset /dev/nvme1 重置硬盤(NVMe硬盤固件版本進行upgrade/downgrading后要進行reset后才能effective,如果不重置主控需reboot 系統)
4)OP(Over-Provisioning)
為什么要進行OP,請參考:https://blog.csdn.net/weixin_40343504/article/details/83145713
nvme admin-passthru /dev/nvme0 -o 0x9 --cdw10=0xc1 --cdw11=0x2000000 --cdw12=0x0
OP to GB
1.The decimal value of LBA is (X * 1000 * 1000 * 1000 / 512), then convert it to Hex Value.
2. Put the Hex Value to cdw11
3. If the Hex Value over 0xFFFFFFFF, put the high overflow digits to cdw 12.
4. Example:
? 3200 GB
? Decimal value is 6,250,000,000 and Hex Value is 0x174876E80
The value for cdw12 should be 0x1 and for cdw11 is 0x74876E80.
? 2000 GB
? Decimal value is 3,906,250,000 and Hex Value is 0xE8D4A510
The value for cdw12 should be 0x0 and for cdw11 is 0xE8D4A510.
? 4000 GB
? 7,814,037,168 // 0x1 D1C0 BEB0
? 7200 GB - 0x3 4630 B8A0
6400 GB - 0x2 E90E DD00
例一:
例二:
原容量OPed到3.4T
[root@localhost nvme-cli-master]# nvme admin-passthru /dev/nvme9n1 -o 0x9 --cdw10=0xc1 --cdw11=0x18BCFE568 --cdw12=0x1
NVMe command result:00000000
5)nvme-cli 創建namespaces
什么是Namespace?
簡單地說,namespace是對用戶空間的邏輯劃分,就是把用戶空間這塊大披薩劃分開,大家各吃各的。那么大披薩長什么樣呢?劃成一片片兒披薩又什么樣呢?我們知道,跟其他傳統的存儲設備一樣,非易失性存儲器也是可以格式化為邏輯塊的,每個邏輯塊都有自己的地址,俗稱logical block address,簡稱LBA,我們就是通過LBA來吃披薩(讀寫IO)的。邏輯地址長相很普通,是從0,1,2….直到最大塊地址。
邏輯塊地址計算是有講究的,嚴格依據JEDEC218A里面定義的邏輯塊與容量關系公式。比如4KiB一個邏輯塊的話, 500G就需要2646 + 244188 * 500 = 122096646個邏輯地址了,這些邏輯塊就組成了namespace(512B一塊邏輯塊的話,500G就需要21168+1953504*500=976773168個邏輯地址)。那么一塊SSD是否可以劃分為多個namespace來供不同的應用場景使用呢?答案是肯定的。
例如:創建一個500G和一個465G的namaspaces
檢查SSD上剩余空間是否足夠創建目標namespace。使用Identify命令查看unvmcap的值可知剩余可分配容量,單位是Byte。
4.PCIe硬盤壽命計算
可以通過nvme-cli讀取PCIe硬盤smart信息,進行進行計算硬盤的Endurance、DWPD(Drive Writes Per Day)。
建議壽命測試僅企業級可能有必要,個人沒必要進行此項操作。
a.測試前讀取硬盤smart-log信息
b.fio進行讀寫一定的數據
c.fio結束后再次執行nvme intel smart-log-add /dev/nvme0n1讀取smart-log信息
d.計算
盤進入穩態后進行隨機寫得到DWPD的值更為準確
總結
以上是生活随笔為你收集整理的nvme-cli常用指令的全部內容,希望文章能夠幫你解決所遇到的問題。