专栏
天翼云开发者社区

记一次nvme磁盘namespace可用空间变小问题

2023-06-15 15:21:03 114阅读

使用环境时发现nvme磁盘namespace空间小于实际可分配空间,并尝试修复

问题现象:

首先需要用到nvme命令,此命令依赖于nvme-cli包,安装此包

 

yum install -y nvme-cli

 

然后查看到nvme list 中nvme0n1 和nvme6n1 Usage值仅500多G

 

此时尝试1:

 

nvme format -s 1 /dev/nvme0n1   安全擦除设备  , 然后

 

nvme reset /dev/nvme0    重置设备

 

未解决

 

尝试2:

 

nvme delete-ns /dev/nvme0  -n  1  删除设备nvme0 的namespace 1

 

nvme attach-ns /dev/nvme0 -n 1 -c 1  然后绑定controller

 

nvme reset /dev/nvme0    重置设备

 

解决

 

 

 

-----------------------------------------------------************--------------------------------------------------------

 

 

下面是nvme-cli包中 nvme支持的命令(常用,作用为检查设备)

 

nvme list    查看所有连接到当前系统的nvme设备:名称,序列号,大小,LBA 和 serial

nvme id-ctrl     展示nvme 控制器和它所支持的一些特性

nvme id-ns       展示nvme 的命名空间,优化特性和支持特性

nvme format   安全擦除SSD上的数据,格式化LBA大小或保护信息以实现端到端数据保护

无返回, 安全擦除设备

 

nvme sanitize  安全得擦除SSD上的所有数据

 

nvme smart-log       查看NVME的smart log信息:page的健康状态,温度,稳定性情况等

nvme fw-log    查看NVME的固件日志,会打印每个entry的健康情况

nvme error-log        NVME的异常日志

 

nvme fw-download 为一个设备下载一个新的固件系统

 

nvme fw-commit     让固件立即运行

 

列出设备/dev/nvme0的控制器号

nvme list-ctrl /dev/nvme0

 

将名字空间与controller解绑(-c是controllerid, -n是namespace)这时还可以查到该设备但是看到空间为0了

nvme detach-ns /dev/nvme1 -c 0 -n 1

 

删除设备及命名空间

nvme delete-ns /dev/nvme1 -n 1

 

创建命名空间

nvme create-ns用于创建一个名字空间,-f 0指的是用LBA模式0,这个模式下blocksize是512B。-s -c指定的大小,最大可设置totalnvm 大小除以512,但是建议设置比最大值小一些,不要使用全部空间,实际使用中,有一个盘会报错。

nvme create-ns /dev/nvme1 -s 6000000000 -c 6000000000 -f 0 -d 0 -m 0

nvme create-ns /dev/nvme1 -s 6251233968 -c 6251233968 -f 0 -d 0 -m 0

 

和controller绑定

nvme attach-ns /dev/nvme1 -c 0 -n 1

 

重置一下这个盘

nvme reset /dev/nvme1

 

使用nvme read读一下,检查一下,如果读不到说明这个盘有问题。读到会报成功。

nvme read /dev/nvme1n1 -s 0 -c 1 -z 1024

 

nvme解绑与spdk绑定

 

将盘从nvme设备中解绑

cd /sys/bus/pci/drivers/nvme && ll

 

echo “0000:1a:00.0” > unbind

echo “0000:1b:00.0” > unbind

echo “0000:1c:00.0” > unbind

echo “0000:1d:00.0” > unbind

 

将盘绑定到spdk设备中

cd /sys/bus/pci/drivers/uio_pci_generic && ll

 

echo “0000:1a:00.0” > bind

echo “0000:1b:00.0” > bind

echo “0000:1c:00.0” > bind

echo “0000:1d:00.0” > bind

 

 

  • 0
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
凸凹

凸凹

2 篇文章 0 粉丝
关注

记一次nvme磁盘namespace可用空间变小问题

2023-06-15 15:21:03 114阅读

使用环境时发现nvme磁盘namespace空间小于实际可分配空间,并尝试修复

问题现象:

首先需要用到nvme命令,此命令依赖于nvme-cli包,安装此包

 

yum install -y nvme-cli

 

然后查看到nvme list 中nvme0n1 和nvme6n1 Usage值仅500多G

 

此时尝试1:

 

nvme format -s 1 /dev/nvme0n1   安全擦除设备  , 然后

 

nvme reset /dev/nvme0    重置设备

 

未解决

 

尝试2:

 

nvme delete-ns /dev/nvme0  -n  1  删除设备nvme0 的namespace 1

 

nvme attach-ns /dev/nvme0 -n 1 -c 1  然后绑定controller

 

nvme reset /dev/nvme0    重置设备

 

解决

 

 

 

-----------------------------------------------------************--------------------------------------------------------

 

 

下面是nvme-cli包中 nvme支持的命令(常用,作用为检查设备)

 

nvme list    查看所有连接到当前系统的nvme设备:名称,序列号,大小,LBA 和 serial

nvme id-ctrl     展示nvme 控制器和它所支持的一些特性

nvme id-ns       展示nvme 的命名空间,优化特性和支持特性

nvme format   安全擦除SSD上的数据,格式化LBA大小或保护信息以实现端到端数据保护

无返回, 安全擦除设备

 

nvme sanitize  安全得擦除SSD上的所有数据

 

nvme smart-log       查看NVME的smart log信息:page的健康状态,温度,稳定性情况等

nvme fw-log    查看NVME的固件日志,会打印每个entry的健康情况

nvme error-log        NVME的异常日志

 

nvme fw-download 为一个设备下载一个新的固件系统

 

nvme fw-commit     让固件立即运行

 

列出设备/dev/nvme0的控制器号

nvme list-ctrl /dev/nvme0

 

将名字空间与controller解绑(-c是controllerid, -n是namespace)这时还可以查到该设备但是看到空间为0了

nvme detach-ns /dev/nvme1 -c 0 -n 1

 

删除设备及命名空间

nvme delete-ns /dev/nvme1 -n 1

 

创建命名空间

nvme create-ns用于创建一个名字空间,-f 0指的是用LBA模式0,这个模式下blocksize是512B。-s -c指定的大小,最大可设置totalnvm 大小除以512,但是建议设置比最大值小一些,不要使用全部空间,实际使用中,有一个盘会报错。

nvme create-ns /dev/nvme1 -s 6000000000 -c 6000000000 -f 0 -d 0 -m 0

nvme create-ns /dev/nvme1 -s 6251233968 -c 6251233968 -f 0 -d 0 -m 0

 

和controller绑定

nvme attach-ns /dev/nvme1 -c 0 -n 1

 

重置一下这个盘

nvme reset /dev/nvme1

 

使用nvme read读一下,检查一下,如果读不到说明这个盘有问题。读到会报成功。

nvme read /dev/nvme1n1 -s 0 -c 1 -z 1024

 

nvme解绑与spdk绑定

 

将盘从nvme设备中解绑

cd /sys/bus/pci/drivers/nvme && ll

 

echo “0000:1a:00.0” > unbind

echo “0000:1b:00.0” > unbind

echo “0000:1c:00.0” > unbind

echo “0000:1d:00.0” > unbind

 

将盘绑定到spdk设备中

cd /sys/bus/pci/drivers/uio_pci_generic && ll

 

echo “0000:1a:00.0” > bind

echo “0000:1b:00.0” > bind

echo “0000:1c:00.0” > bind

echo “0000:1d:00.0” > bind

 

 

文章来自专栏

产品测试-tools

2 篇文章 1 订阅
0 评论
0/1000
评论(0) 发表评论
  • 0
    点赞
  • 0
    收藏
  • 0
    评论