NVME创建namespace以及挂载SPDK

nvme 创建namespace

  • nvme list (如果能查到说明没绑定到uio,绑定在linux下)

  • 列出设备/dev/nvme0的控制器号
    nvme list-ctrl /dev/nvme0

  • 查看某个盘的详细信息
    nvme id-ctrl /dev/nvme0

  • 列出某个设备的空间大小,单位是byte
    nvme id-ctrl /dev/nvme0 |grep nvm

  • 将名字空间与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

参考

https://blog.csdn.net/weixin_40343504/article/details/82386024
https://blog.csdn.net/Z_Stand/article/details/111415236

<think>好的,我需要帮助用户了解如何使用NVMe命令行工具创建namespace。首先,我要回忆一下相关的知识,并参考提供的引用内容。 根据引用[3],用户提到了使用nvme-cli创建namespace的步骤,包括查看硬盘信息、清空硬盘、创建namespace、绑定控制器和验证。引用[4]中的命令示例可能有用,比如nvme list可以查看现有的namespace信息。 首先,用户需要确认NVMe硬盘的信息,比如控制器地址和支持的最大namespace数量。这可以通过nvme list命令实现,如引用[4]中的例子所示。接着,清空硬盘可能需要删除现有的namespaces,但需要谨慎操作,避免数据丢失。 然后,创建namespace的具体命令可能涉及nvme create-ns,需要指定参数如大小、控制器地址等。引用[3]中提到设置硬盘(X)、控制器地址(Y)和最大数量(Z)。此外,绑定控制器使用nvme attach-ns命令,确保namespace被正确识别。 需要注意的是,不同版本的nvme-cli可能有不同的参数,用户应查看帮助文档确认。例如,nvme create-ns的帮助信息可以通过nvme create-ns --help获取。另外,权限问题可能导致命令执行失败,需使用sudo。 最后,验证是否成功创建,可以通过再次运行nvme list查看新增的namespace。整个过程需要按照步骤操作,并注意备份数据以防万一。</think>要使用 NVMe 命令行工具(如 nvme-cli)创建 namespace,可以按照以下步骤操作: ### 1. 查看 NVMe 硬盘信息 首先通过命令查看设备信息和当前 namespace 状态: ```bash sudo nvme list ``` 该命令会显示类似以下信息,其中`/dev/nvme0`表示控制器设备,`Namespace Usage`字段显示现有 namespace 容量[^4]。 ### 2. 清空现有配置(可选) 若目标控制器已有 namespace,需先删除(**注意:会丢失数据**): ```bash sudo nvme delete-ns /dev/nvmeX -n [现有namespace编号] ``` ### 3. 创建namespace 通过`nvme create-ns`命令创建,需指定以下参数: ```bash sudo nvme create-ns /dev/nvmeX --nsze=[容量扇区数] --ncap=[容量扇区数] --flbas=[LBA格式] ``` - **容量计算**:总容量 = nsze × 扇区大小(通常为 512B/4KB) - **LBA格式**:通过`nvme id-ns /dev/nvmeXnY`查看支持的格式编号[^3] ### 4. 绑定 namespace 到控制器 ```bash sudo nvme attach-ns /dev/nvmeX -n [新namespace编号] ``` ### 5. 验证创建结果 再次执行`nvme list`,观察是否出现新的 namespace 条目(如`/dev/nvme0n2`)[^4]。 ### 完整示例 假设要为`/dev/nvme0`创建 500GB namespace: ```bash # 计算扇区数(假设4KB扇区) nsze=$((500*1024*1024*1024/4096)) # 创建namespace(假设flbas=0) sudo nvme create-ns /dev/nvme0 --nsze=$nsze --ncap=$nsze --flbas=0 # 绑定namespace(假设返回编号2) sudo nvme attach-ns /dev/nvme0 -n 2 # 验证 nvme list | grep nvme0n2 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charles Ray

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值