NVME CLI 命令使用
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
2)nvme smart-log /dev/nvme0n1 读取硬盘nvme0n1的smart信息
3)nvme升/降固件版本
nvme reset /dev/nvme1 重置硬盘(NVMe硬盘固件版本进行upgrade/downgrading后要进行reset后才能effective,如果不重置主控需reboot 系统)
4)OP(Over-Provisioning)
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。
#进行以下步骤前请务必确保自己的SSD支持NS
#一般大厂才会有进行NS的需求,请和你的厂商确保SSD支持。
#个人的盘不建议尝试进行NS操作
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 ss10152
/dev/nvme0n2 XXXXXX XXXXX 2 499.29 GB / 499.29 GB 512 B + 0 B ss10152
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
6.Read
nvme read /dev/smi_nvme0n1 --start-block=0 --block-count=0 --data-size=4096 --data=read_usrdata.txt --metadata-size=8 --metadata=read_metadata.txt
7.Write
nvme write /dev/smi_nvme0n1 --start-block=0 --block-count=0 --data-size=4096 --data=write_usrdata.txt --metadata-size=8 --metadata=write_metadata.txt
8.PCIe硬盘寿命计算
可以通过nvme-cli读取PCIe硬盘smart信息,进行进行计算硬盘的Endurance、DWPD(Drive Writes Per Day)。
建议寿命测试仅企业级可能有必要,个人没必要进行此项操作。
a.测试前读取硬盘smart-log信息
原文链接:https://blog.csdn.net/hailangdeyingzi/article/details/121039000
参考链接:nvme-cli使用_三遍猪的博客-CSDN博客_nvme-cli
NVME CLI 命令使用的更多相关文章
- .NET CLI 命令
您可以立即使用的部分通用 .NET CLI 命令 命令 说明 dotnet new 使用 C# 语言初始化用于类库或控制台应用程序的有效项目. dotnet restore 还原在指定项目的 proj ...
- 使用 dotnet cli 命令上传 nuget 程序包
前言 前面写了一篇文章介绍了如何将自己的程序集打包成nuget package并上传到nuget.org,传送门.全部是通过网页端来进行操作的,现在介绍一种比较方便快捷的方法就是用dotnet cli ...
- GO语言之urfave/cli命令行解析
练习URL: https://blog.csdn.net/sd653159/article/details/83381786 相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络. ...
- Jenkins CLI 命令详解
笔者在前文<通过 CLI 管理 Jenkins Server>中介绍了如何通过 SSH 或客户端命令行的方式管理 Jenkins Server,限于篇幅,前文主要的目的是介绍连接 Jenk ...
- php cli命令 自定义参数传递
所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本,都在默认情况下带有一个PHP可执行文件.这个可执行文件可以被用来运行命令行的PHP程序.要在你的系统上找到这个可执行文件,就要遵照下面的步 ...
- [转]php cli命令 自定义参数传递
FROM :http://www.cnblogs.com/zcy_soft/archive/2011/12/10/2283437.html 所有的PHP发行版,不论是编译自源代码的版本还是预创建的版本 ...
- 有用的 Angular CLI 命令参数
这是一些有用的 Angular 5 CLI 命令参数,注意参数前面的-和--的不同... 1. 指定build的输出为production version,合并优化css and js files. ...
- 使用.Net Core CLI命令dotnet new创建自定义模板
文章起源来自一篇博客:使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园 之前使用Abp的时候就很认同Abp创建模板项目的方式.想不到.Net ...
- Windows CLI命令
目录 Windows CLI命令 1.背景 2.netstat 罗列端口号占用情况 3.telnet 远端IP的某个端口号 Windows CLI命令 1.背景 在Windows操作系统下开发,需要用 ...
- 为你的AliOS Things应用增加自定义cli命令
摘要: 怎么才能在RTOS系统中,通过 串口shell控制LED的开关. 在日常嵌入式开发中,我们经常会用串口命令来使设备进入某种特定的状态,或执行某个特定的操作.如系统自检,模拟运行,或者进入手动模 ...
随机推荐
- Angular系列教程之依赖注入详解
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 问题--链表指针传参,修改next指针只传值
1.问题--链表指针传参,修改next指针只传值 Link_creat_head(&head, p_new);//将新节点加入链表 在这当中head头指针传的是地址,而p_new传的是值,这二 ...
- ORACLE Enterprise Manager Database Express(OEM-express)(遇到localhost拒绝访问情况)配置端口和启动方法
1.问题 之前一直进不去ORACLE Enterprise Manager Database Express,显示的是localhost拒绝了访问,经过查阅知道是没有配置相应端口. 2.解决方法 转载 ...
- DEV-C++调试报错
1.报错信息如下: 2.原因 SIGSEGV是是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号. 意思是程序接受一个无效的指针地址,Segmentation fault即是提示我们去 ...
- 抓取java堆栈失败的思考-Safepoint等的学习
抓取java堆栈失败的思考-Safepoint等的学习 背景 前期解决问题都是靠抓取进程堆栈 jstack,后者是jmap到内存dump的方式来进行分析. 最近连续有两个比较大的项目出现了抓取dump ...
- [转帖]ramfs、tmpfs、rootfs、ramdisk介绍
ramfs.tmpfs.rootfs.ramdisk介绍 bootleader--->kernel---->initrd(是xz.cpio.是ramfs的一种,主要是驱动和为了加载ro ...
- [转帖]12.24.2 DECIMAL Data Type Characteristics
https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html This section discusses the characteri ...
- [转帖]iozone - 性能压力测试工具
<存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于dd.fio.vdbench.iozone.iometer.cosbench等性能负载工具,及strace等调试工具. 1 ...
- Docker镜像精简方法之二 COPY vs ADD 与镜像层
Docker镜像精简方法之二 COPY vs ADD 与镜像层 摘要 昨天只是讲了一下大体的思路. 但是没有实操. 今天想着修改一下默认的打包镜像的命令,验证一下效果 原始命令 FROM adopto ...
- [转帖]021系统状态检测命令sosreport
https://www.cnblogs.com/anyoneofus/p/16467677.html sosreport命令用于收集系统配置及架构信息并输出诊断文档.