当前位置: 首页 > ai >正文

EMC PowerStore存储学习之一NVMe磁盘的命名规则

PowerStore的日志中经常会看到类似于/dev/nvme1n1的磁盘,在svc_diag list --show_drives中也可以看到类似这样的输出,如下图:

这里的Drives的显示都是 /dev/nvmeXnY的形式,那么这个磁盘命名规则怎么解读呢?

在Linux系统中,NVMe U.2设备(或其他NVMe设备)通过 /dev/nvmeXnY 的命名方式表示,用于标识和管理设备。这种命名方式反映了NVMe协议的控制器和命名空间(namespace)架构。以下是对 X 和 Y 的详细解释:

1. X - 控制器编号

  • 定义:X 表示NVMe控制器的编号,从 0 开始递增,例如 nvme0、nvme1 等。
  • 作用:每个NVMe设备(例如一块U.2 SSD)通常包含一个或多个控制器,控制器是负责与主机通信的硬件组件。Linux内核为每个检测到的NVMe控制器分配一个唯一的编号。
  • 如何理解
    • 如果系统中有多个NVMe设备(例如两块U.2 SSD),它们会被分配为 nvme0、nvme1 等。
    • 控制器编号是系统自动分配的,通常与设备的物理插槽或PCIe通道相关,但不一定与插槽的物理顺序严格对应。
    • 例如,/dev/nvme0 表示系统中的第一个NVMe控制器,/dev/nvme1 表示第二个控制器。
  • 实际例子
    • 一块U.2 NVMe SSD插入系统,系统检测到它的控制器,分配为 /dev/nvme0。
    • 如果再插入一块U.2 SSD,可能被分配为 /dev/nvme1。
  • 我的理解
    • 这个nvmeX不是slot的number,所以要注意,这个X不是扩展柜里面的slot的顺序号。
    • 这个控制器是NVMe硬盘上的控制器,不要理解为存储的控制器。一个NVMe U.2磁盘通常对应一个NVMe控制器,在Linux中表现为一个 /dev/nvmeX 设备(例如 /dev/nvme0)。

2. Y - 命名空间编号

  • 定义:Y 表示NVMe控制器的命名空间编号,从 1 开始递增,例如 n1、n2 等。
  • 作用:NVMe协议允许一个控制器管理多个命名空间(namespace),每个命名空间可以看作是控制器上的一个逻辑存储区域,类似于传统硬盘的分区,但更灵活。
  • 如何理解
    • 命名空间是NVMe设备提供的逻辑隔离机制,允许将一块物理SSD划分为多个独立的存储区域,每个区域有自己的容量、LBA(逻辑块地址)范围等。
    • 命名空间编号由设备本身定义,Linux内核根据设备报告的命名空间分配对应的 nY。
    • 例如,/dev/nvme0n1 表示第一个控制器(nvme0)上的第一个命名空间(n1),/dev/nvme0n2 表示同一个控制器上的第二个命名空间。
  • 实际例子
    • 一块U.2 NVMe SSD可能只有一个命名空间,命名为 /dev/nvme0n1。
    • 如果SSD配置了多个命名空间(常见于企业级设备),可能会有 /dev/nvme0n1、/dev/nvme0n2 等。
    • 不同控制器的命名空间是独立的,例如 /dev/nvme1n1 表示第二个控制器(nvme1)的第一个命名空间。

3. 命名空间和控制器的关系

  • 一对多关系:一个NVMe控制器(nvmeX)可以支持多个命名空间(nY),但一个命名空间只能属于一个控制器。
  • 用途
    • 命名空间可以用于隔离不同工作负载(例如,一个命名空间用于数据库,另一个用于日志)。
    • 企业级NVMe设备常利用多命名空间来支持虚拟化或多租户环境。
  • 查看方式
    • 使用 lsblk 或 nvme list 命令可以查看系统中NVMe设备的控制器和命名空间:
      $ lsblk

core@607MMF3-B:/ $ lsblk

NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sda        8:0    0 223.6G  0 disk

|-sda1     8:1    0   512M  0 part /boot

|-sda2     8:2    0     2M  0 part

|-sda3     8:3    0     3G  0 part /usr

|-sda4     8:4    0     3G  0 part

|-sda6     8:6    0   128M  0 part /usr/share/oem

|-sda7     8:7    0    64M  0 part

`-sda9     8:9    0 216.9G  0 part /

sdb        8:16   0 111.8G  0 disk

|-sdb1     8:17   0  1000M  0 part

|-sdb2     8:18   0     2G  0 part /var/lib/cycrcvycg

|-sdb3     8:19   0  1000M  0 part

|-sdb4     8:20   0  29.3G  0 part

`-sdb5     8:21   0  48.8G  0 part

nvme3n1  259:0    0   3.5T  0 disk

nvme2n1  259:1    0   3.5T  0 disk

nvme7n1  259:2    0   3.5T  0 disk

nvme5n1  259:3    0   7.9G  0 disk

nvme1n1  259:4    0   3.5T  0 disk

nvme6n1  259:5    0   3.5T  0 disk

nvme11n1 259:6    0   7.9G  0 disk

nvme4n1  259:8    0   3.5T  0 disk

nvme9n1  259:10   0   3.5T  0 disk

  • 使用 nvme 命令查看详细信息:
    $ nvme list

core@607MMF3-B:/ $ sudo nvme list

Node                  SN                   Model                                    Namespace Usage                      Format           FW Rev

--------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------

/dev/nvme0n1          VXNA0NB07818         PB23F04T                                 1           3.84  TB /   3.84  TB    512   B +  8 B   GPJ99E5Q

/dev/nvme1n1          MVNA0RA01068         P033F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   EPK98E5Q

/dev/nvme11n1         1A42F300D7F          MTC_8GB_B                                1           8.48  GB /   8.48  GB    512   B +  0 B   3.1.10.0

/dev/nvme2n1          MVNA0RA01086         P033F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   EPK98E5Q

/dev/nvme3n1          VXNA0NB07011         PB23F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   GPJ99E5Q

/dev/nvme4n1          VXNA0NB07781         PB23F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   GPJ99E5Q

/dev/nvme5n1          1A50F300441          MTC_8GB_B                                1           8.48  GB /   8.48  GB    512   B +  0 B   3.1.10.0

/dev/nvme6n1          MVNA0RA01072         P033F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   EPK98E5Q

/dev/nvme7n1          MVNA0RA01091         P033F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   EPK98E5Q

/dev/nvme9n1          VXNA0NB07390         PB23F04T                                 1           3.84  TB /   3.84  TB    512   B +  0 B   GPJ99E5Q

4. 常见问题解答

  • 为什么没有 nvme0n0?
    • NVMe协议规定命名空间从 1 开始,因此不会有 n0。
  • 为什么有些设备有多个命名空间?
    • 企业级NVMe设备支持多命名空间,用于逻辑隔离或优化性能。例如,一个U.2 SSD可能为不同虚拟机分配独立的命名空间。
  • 如何确认设备命名?
    • 使用 nvme id-ctrl /dev/nvme0 查看控制器信息,或 nvme id-ns /dev/nvme0n1 查看命名空间信息。

core@607MMF3-B:/ $ sudo nvme id-ctrl /dev/nvme2

NVME Identify Controller:

vid       : 0x144d

ssvid     : 0x1120

sn        : MVNA0RA01086

mn        : P033F04T

fr        : EPK98E5Q

rab       : 8

ieee      : 002538

cmic      : 0x3

mdts      : 0

cntlid    : 0x41

ver       : 0x10300

rtd3r     : 0xd59f80

rtd3e     : 0xa7d8c0

oaes      : 0x300

ctratt    : 0

rrls      : 0

cntrltype : 0

fguid     :

crdt1     : 0

crdt2     : 0

crdt3     : 0

oacs      : 0x1f

acl       : 255

aerl      : 15

frmw      : 0x17

lpa       : 0xe

elpe      : 255

npss      : 3

avscc     : 0x1

apsta     : 0

wctemp    : 345

cctemp    : 358

mtfa      : 20

hmpre     : 0

hmmin     : 0

tnvmcap   : 3840755982336

unvmcap   : 0

rpmbs     : 0

edstt     : 2

dsto      : 1

fwug      : 255

kas       : 0

hctma     : 0

mntmt     : 0

mxtmt     : 0

sanicap   : 0x3

hmminds   : 0

hmmaxd    : 0

nsetidmax : 0

endgidmax : 0

anatt     : 0

anacap    : 0

anagrpmax : 0

nanagrpid : 0

pels      : 0

sqes      : 0x66

cqes      : 0x44

maxcmd    : 768

nn        : 32

oncs      : 0x7f

fuses     : 0

fna       : 0x4

vwc       : 0

awun      : 0

awupf     : 0

icsvscc     : 1

nwpc      : 0

acwu      : 0

sgls      : 0xf0002

mnan      : 0

subnqn    : nqn.1994-11.com.samsung:nvme:PM1733:2.5-inch:MVNA0RA01086

ioccsz    : 0

iorcsz    : 0

icdoff    : 0

fcatt     : 0

msdbd     : 0

ofcs      : 0

ps    0 : mp:25.00W operational enlat:180 exlat:180 rrt:0 rrl:0

          rwt:0 rwl:0 idle_power:7.00W active_power:18.00W

ps    1 : mp:21.00W operational enlat:180 exlat:180 rrt:0 rrl:0

          rwt:0 rwl:0 idle_power:7.00W active_power:18.00W

ps    2 : mp:18.00W operational enlat:180 exlat:180 rrt:1 rrl:1

          rwt:1 rwl:1 idle_power:7.00W active_power:18.00W

ps    3 : mp:14.00W operational enlat:180 exlat:180 rrt:2 rrl:2

          rwt:2 rwl:2 idle_power:7.00W active_power:14.00W

core@607MMF3-B:/ $ sudo nvme id-ns /dev/nvme2n1

NVME Identify Namespace 1:

nsze    : 0x1bf1f72b0

ncap    : 0x1bf1f72b0

nuse    : 0x1bf1f72b0

nsfeat  : 0

nlbaf   : 4

flbas   : 0

mc      : 0x3

dpc     : 0x17

dps     : 0

nmic    : 0x1

rescap  : 0xff

fpi     : 0x80

dlfeat  : 1

nawun   : 0

nawupf  : 0

nacwu   : 0

nabsn   : 0

nabo    : 0

nabspf  : 0

noiob   : 0

nvmcap  : 3840755982336

mssrl   : 0

mcl     : 0

msrc    : 0

anagrpid: 0

nsattr  : 0

nvmsetid: 0

endgid  : 0

nguid   : 204d563052a010860025384100000001

eui64   : 0025389a1100c7b9

lbaf  0 : ms:0   lbads:9  rp:0x1 (in use)

lbaf  1 : ms:8   lbads:9  rp:0x2

lbaf  2 : ms:0   lbads:12 rp:0

lbaf  3 : ms:8   lbads:12 rp:0x2

lbaf  4 : ms:64  lbads:12 rp:0x2

core@607MMF3-B:/ $

总结

  • X(如 nvme0、nvme1)是控制器编号,标识系统中唯一的NVMe控制器。
  • Y(如 n1、n2)是命名空间编号,标识控制器上的逻辑存储区域。
  • 这种命名方式清晰地反映了NVMe设备的层次结构,便于管理和操作,尤其在企业级存储环境中。
http://www.xdnf.cn/news/3459.html

相关文章:

  • 【CVE-2025-1094】:PostgreSQL 14.15 SQL注入漏洞导致的RCE_ 利用代码和分析
  • React 语法扩展
  • 数字智慧方案5875丨智慧交通枢纽综合解决方案(43页PPT)(文末有下载方式)
  • 数据结构学习笔记
  • 4.5 使用busybox制作根文件系统
  • Kotlin 基础
  • GitHub 趋势日报 (2025年05月01日)
  • Google机器学习系列 - 监督学习
  • Flutter BottomNavigationBar 详解
  • 综合案例:使用vuex对购物车的商品数量和价格等公共数据进行状态管理
  • ARM 指令集(ubuntu环境学习)第七章:系列总结与未来展望
  • 【愚公系列】《Manus极简入门》012-自我认知顾问:“内在探索向导”
  • 数据结构与算法:图论——最短路径
  • LearningFlow:大语言模型城市驾驶的自动化策略学习工作流程
  • Golang 身份证号码校验
  • bilibili如何获取视频的分节的目录
  • 【安装指南】Chat2DB-集成了AI功能的数据库管理工具
  • Shell 脚本基础
  • RabbitMQ的交换机
  • 解决The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
  • ARM架构详解:定义、应用及特点
  • 计算机组成原理实验(6) 微程序控制单元实验
  • 大模型开发学习笔记
  • 提示词版本化管理:AI开发中被忽视的关键环节
  • 【Linux】基础指令(2)
  • 冯·诺依曼体系:现代计算机的底层逻辑与百年传承
  • C++ 与 Lua 联合编程
  • Python-pandas-操作Excel文件(读取数据/写入数据)及Excel表格列名操作详细分享
  • 单链表操作(single list)
  • Python高级爬虫之JS逆向+安卓逆向1.7节: 面向对象