以下是 Linux 系统中硬盘命名规则的详细解析及其应用场景,结合不同接口类型、分区逻辑和实际用例进行说明:


⚙️ ​​一、基础命名规则​

  1. ​设备文件路径​

    Linux 将所有硬件设备视为文件,硬盘设备位于 /dev 目录下,命名格式为:

    • sdX​:适用于 SATA、SCSI、USB、SAS 接口的硬盘(如 /dev/sda 表示第一块硬盘)。
    • hdX​:适用于 IDE 接口的硬盘(如 /dev/hda 表示第一块 IDE 硬盘)。
    • nvmeXnY​:适用于 NVMe(M.2)接口的固态硬盘(如 /dev/nvme0n1p1 表示第一块 NVMe 硬盘的第一个分区)。
  2. ​字母分配逻辑​

    设备名称末尾的字母(a, b, c…)按内核检测顺序分配:

    • 系统启动时检测的硬盘优先分配(如主板 SATA0 接口的硬盘为 sda)。
    • 热插拔设备(如 U 盘)按插入顺序分配后续字母(如插入后成为 sdc)。

​二、分区命名规则​

硬盘分区在设备名后追加数字编号,规则如下:

  1. ​主分区与扩展分区​​:

    • 主分区编号为 ​​1–4​​(如 /dev/sda1/dev/sda2)。
    • 扩展分区占用一个主分区编号(如 /dev/sda4),用于容纳逻辑分区。
    • ​限制​​:受 MBR 分区表限制,每块硬盘最多 ​​4 个主分区​​(或 3 主分区 + 1 扩展分区)。
  2. ​逻辑分区​​:

    • 在扩展分区内创建,编号从 ​​5 开始​​(如 /dev/sda5/dev/sda6),无数量上限。
    • ​示例​​:若硬盘划分为 2 个主分区 + 1 个扩展分区(含 3 个逻辑分区),则分区名为:

      sda1(主)、sda2(主)、sda4(扩展)、sda5sda7(逻辑)。

​三、不同接口硬盘的命名差异​

​接口类型​ ​命名前缀​ ​特点​ ​典型场景​
​IDE​ hdX 旧式接口,不支持热插拔;命名按主板接口顺序(hda=主IDE1,hdb=从IDE1) 老旧服务器或台式机
​SATA/SCSI​ sdX 主流接口,支持热插拔;按检测顺序分配字母 现代服务器、个人电脑
​NVMe​ nvmeXnYpZ 高性能 SSD 专用;X=控制器号,Y=命名空间,Z=分区号(如 nvme0n1p1 高性能计算、数据库服务器
​USB​ sdX 与 SATA 规则相同,按插入时间分配字母 外接移动硬盘、U 盘

​四、特殊设备命名​

  • ​RAID 阵列​​:以 /dev/mdX 命名(如 /dev/md0),通过软件或硬件 RAID 卡管理多块硬盘。

  • ​虚拟磁盘​​:在虚拟机中常以 /dev/vdX 命名(如 KVM 的 vdavdb)。

  • ​光驱设备​​:命名为 /dev/srX(如 /dev/sr0),不可分区。


️ ​​五、核心应用场景​

  1. ​磁盘分区与格式化​

    • 使用 fdisk /dev/sdb 对第二块硬盘分区,创建主分区(sdb1)或逻辑分区(sdb5)。
    • 格式化命令需指定设备名:mkfs.ext4 /dev/sdb1
  2. ​挂载文件系统​

    • 临时挂载:mount /dev/sdc1 /mnt/data
    • 永久挂载:在 /etc/fstab 中配置设备名或 UUID(避免设备顺序变化导致错误):
      UUID=xxxx-xxxx  /data  ext4  defaults  0  2
      ``` 。
  3. ​多磁盘管理​

    • 通过 lsblkfdisk -l 查看所有设备及分区树状关系。
    • 在 RAID/LVM 配置中,使用设备名指定物理卷(如 pvcreate /dev/sdb)。
  4. ​系统启动与修复​

    • MBR 引导程序存储在硬盘的第一个扇区(/dev/sda),分区表损坏可能导致启动失败。
    • 逻辑分区(sda5 等)通常用于存储用户数据,与系统启动隔离。
  5. ​避免设备名冲突​

    • 在热插拔或磁盘更换后,设备名可能变化(如 sdb 变为 sdc),建议使用 ​​UUID​​ 或 ​​磁盘标签​​ 替代设备名:
      # 查看 UUID
      sudo blkid /dev/sda1
      # 设置磁盘标签
      sudo e2label /dev/sdb1 "Backup_Disk"
      ``` 。

​六、总结​

Linux 硬盘命名规则是系统管理的底层基础,其核心逻辑是:

  1. ​接口决定前缀​​(sd/hd/nvme),​​检测顺序决定字母​​(a,b,c…),​​分区类型决定编号​​(主分区 1–4,逻辑分区 5+)。

  2. ​关键操作​​(分区、挂载、修复)需精准指定设备名,但在动态环境中推荐使用 ​​UUID 或标签​​ 提高可靠性。

  3. ​多盘场景​​(如服务器)需结合 lsblk 等工具实时确认设备名,避免误操作。

掌握这些规则,可高效完成磁盘扩容、数据迁移、RAID 配置等任务,确保系统稳定性和数据安全。

Linux 系统硬盘命名规则详细解析的更多相关文章

  1. (转)linux应用之test命令详细解析

    linux应用之test命令详细解析 原文:https://www.cnblogs.com/tankblog/p/6160808.html test命令用法. 功能:检查文件和比较值 1)判断表达式 ...

  2. linux 软件包的命名规则

     linux软件包的命名规则 eg:主包       bind-9.7.1-1.el7.i586.rpm 子包 bind-libs-9.7.1-1.el7.i586.rpm bind-utils-9. ...

  3. Linux网络端口命名规则,一致性网络设备命名

    参考文档: https://www.cnblogs.com/pipci/p/9229571.html 一致性网络设备命名,即Consistent Network Device Naming. 一.服务 ...

  4. linux mount命令的用法详细解析

    挂接命令(mount)首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的.命令格式:mount [-t vfstype] [-o options] ...

  5. linux系统入门一些常用命令解析

    接触IT行业的时候,就使用了ubuntu系统做开发,那个时候是一头雾水,从习惯了window下的界面操作,到终端下的命令行操作,着实一开始让人很不习惯.但是没办法,那个时候公司每个人都用Ubuntu系 ...

  6. Linux系统硬盘扩容

    参考教程:https://www.jb51.net/article/144291.htm 1.查看硬盘已经用了99% $ df -h #查看硬盘已经使用了99% 文件系统 容量 已用 可用 已用% 挂 ...

  7. 虚拟机linux系统 硬盘/root路径扩容

    调整完后,重新打开虚拟机,使用fdisk -l查看,可以看到我们刚刚扩容的空间已经可以看到,但没有分区,还不能使用./dev/sda已经拥有了扩大的空间. 使用Linux的fdisk分区工具给磁盘/d ...

  8. Linux系统SCSI磁盘扫描机制解析及命令实例(转)

    转载请在文首保留原文出处:EMC中文支持论坛 介绍 Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命 ...

  9. Java命名规则详细总结

    Class名应是首字母大写的名词.命名时应该使其简洁而又具有描述性.异常类的命名,应以Exception结尾.Interface的命名规则与Class相同 1. JAVA源文件的命名 JAVA源文件名 ...

  10. Linux系统SCSI磁盘扫描机制解析及命令实例

    介绍Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备进行 ...

随机推荐

  1. sympy简明用法

    系统学习Sympy 什么是Sympy Sympy 是一个可以进行符号运算的第三方科学计算库,数学对象可以被精确的表达,而不是近似值,这也意味着带有未计算的未知量可以以符号的形式留在数学表达式中. im ...

  2. 在Amazon Q辅助下,半小时开发了一个俄罗斯方块游戏

    大家好,我是晓凡 写在前面 在AI的辅助下,晓凡基于HTML.CSS和JavaScript 开发了简单的俄罗斯方块游戏. 小伙伴们可直接跳转文末获取源码. 一.最终效果 二.功能特点 7种经典方块形状 ...

  3. 【语义分割专栏】2:U-net原理篇(由浅入深)

    目录 前言 背景介绍 U-net核心剖析 编码解码结构(U形状) 卷积模式 跳跃连接 add concat 其他细节 overlap-tile策略 弹性形变 U-net模型代码 结语 参考资料 前言 ...

  4. MySQL基础学习——SQL对数据库中表的记录进行操作

    SQL对数据库中表的记录进行操作 sql添加表的记录 语法: 向表中插入某些列:insert into 表名 (列名1,列名2,列名3...) values(值1,值2,值3....); 向表中插入所 ...

  5. 深入浅出Flink CEP丨如何通过Flink SQL作业动态更新Flink CEP作业

    复杂事件处理(CEP)是一种对事件流进行分析的技术,它能够识别出数据流中的事件序列是否符合特定的模式,并允许用户对这些模式进行处理.Flink CEP 是 CEP 在 Apache Flink 中的具 ...

  6. .NET中全新的MongoDb ORM框架 - SqlSugar

    .NET中好用的MongoDb ORM很少,选择也很少,所以我打造了一款适合SQL习惯的MongoDb ORM,让用户多一个选择. 1. MongoDB ORM教程 1.1 NUGET 安装 SqlS ...

  7. Elastic学习之旅 (11) .NET 6应用集成ES - 上

    大家好,我是Edison. 上一篇:Logstash数据采集 写在开头 有了前面10篇的基础,我们大概清楚了ES的基本概念和使用(主要是查询),这也是我们作为Developer应该了解的范畴,而至于更 ...

  8. CF1967B1 Reverse Card (Easy Version) 题解

    CF1967B1 Reverse Card (Easy Version) 我们发现 \(b\times\gcd(a,b)\) 必然为 \(b\) 的倍数,那么 \(b\times\gcd(a,b)\) ...

  9. 前端开发系列026-基础篇之Canvas绘图(曲线)

    本文将介绍Canvas中的弧度.曲线.圆弧以及文字的绘制方法以及径向渐变等内容,并提供饼状图等综合案例. 一.Canvas中的弧度.曲线和圆弧 专业术语 夹角 从一个点发射(延伸)出两条线段,两条线相 ...

  10. Git 状态图标不显示的解决办法

    git绿色.红色状态图标不显示的问题 在使用git的过程中发现,项目文件上没有绿色图标,即使修改文件也没有红色图标显示 绿色图标是指提交成功的,红色图标是指修改后还未提交的 没有图标显示,但是可以正常 ...