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的开关. 在日常嵌入式开发中,我们经常会用串口命令来使设备进入某种特定的状态,或执行某个特定的操作.如系统自检,模拟运行,或者进入手动模 ...
随机推荐
- 国庆学go,完成了博客基本功能,迫不及待的发布上线了
大家好,我是沙漠尽头的狼. 国庆7天,利用带娃之余的空闲时间学习了go,并做了一个不是很完善的博客前台网站. 网站发布地址:https://go.dotnet9.com 源码 边做边上传Github, ...
- Linux-磁盘-di-目录查询-du-tree
- [转帖]oceanbase 的简单介绍
English | 中文版 OceanBase Database 是一个分布式关系型数据库.完全由蚂蚁集团自主研发. OceanBase 基于 Paxos 协议以及分布式架构,实现了高可用和线性扩展. ...
- [转帖]超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
https://cloud.tencent.com/developer/article/1554194 火焰图 如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现 ...
- [转帖]Split Region 使用文档
https://docs.pingcap.com/zh/tidb/stable/sql-statement-split-region 在 TiDB 中新建一个表后,默认会单独切分出 1 个 Regio ...
- [转帖]【JVM】类加载机制
什么是类的加载 将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产 ...
- [转帖]Nginx 性能测试
https://plantegg.github.io/2022/10/10/Nginx%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95/ 压测工具选择 wrk ,apache ...
- Linux 一行命令 仅显示某一个网卡的ip地址
最简答的方法 1. 先使用 ifconfig 查看网卡的设备名 2. 然后输入命令 ifconfig ens192 |grep 'inet ' |cut -d " " -f 10命 ...
- 使用influxdb以及Grafana监控vCenter的操作步骤
1. 下载安装介质 计划telegraf和influxdb 使用rpm包进行安装.Grafana使用docker容器方式安装 下载路径为: https://repos.influxdata.com/r ...
- &&运算提高代码质量
sendGiveWeb: { code: 200, success: true, data: [ { id: "1230", name: "lh" }, { i ...