news 2026/10/15 4:26:15

PVE安装disk not found排查:阵列卡到VMD全链路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PVE安装disk not found排查:阵列卡到VMD全链路

给一台几年前的双路服务器装Proxmox VE(下文简称PVE),ISO引导正常,图形安装向导一路走到语言、时区、网络配置,结果卡在“选择目标磁盘”这一步:磁盘列表空白,点Install直接弹出一行提示——disk not found。更折磨人的是,服务器开机自检时明明能看到两块硬盘,BIOS存储页面里物理盘也都列得好好的。

这类问题我前前后后遇过不止五次,每次的根因都不一样。有阵列卡把物理盘“私藏”起来的,有处理器卷管理特性把NVMe盘接管走的,还有一次纯粹是虚拟化平台里新建虚拟机时忘了加虚拟磁盘。这篇文章把“disk not found”从现象到根因的完整排查链路写出来,重点讲清楚每一步为什么要这么做、命令怎么看、结论怎么下。卡在这一步的朋友照着下面的顺序排,大多数情况下十几分钟就能找到病根。

1. 先搞清楚安装器到底在“找”什么盘

1.1 disk not found 本质上是内核设备树为空

PVE安装器本质上是Debian安装流程的图形化外壳,走到分区步骤时,它会枚举Linux内核当前能看到的全部块设备,并逐个判断容量、介质类型、是否可写。如果没有任何设备满足基本条件,安装器就会在界面上给出“No disks found”或“disk not found”之类的提示。

所以这个报错并不是安装器自身的Bug,它是在告诉你:Linux内核在当前硬件环境下没有扫描到任何适合用来装系统的目标磁盘。这里有一个特别容易误导人的点——开机自检能看到盘、BIOS界面能看到盘,都不代表Linux内核能看到盘。从BIOS层面到操作系统层面之间,隔着控制器驱动、固件行为和硬件枚举逻辑。很多盘“消失”的案例,最后都证明盘本身没坏,而是某个中间环节没有把它放行。

这也是为什么我不建议一上来就盲改BIOS设置。先搞清楚安装器背后的设备枚举机制,再动手,能少走很多弯路。

1.2 阵列卡工作模式是“隐瞒”磁盘的重灾区

大部分服务器上的SAS/SATA控制器都有两种工作模式。一种叫RAID模式(不少厂商固件里写成IR Mode),控制器会把物理盘按规则组成逻辑卷,操作系统只能看到逻辑卷本身,物理盘对系统不可见;另一种叫直通模式,不同厂商叫法各异——HBA Mode、IT Mode、JBOD、Passthrough,本质上都是把物理盘直接透传给操作系统,每块物理盘独立可见。

问题恰恰出在“中间态”上。如果控制器处于RAID模式,但既没有创建任何存储卷,也没有把物理盘逐块设置成直通盘,那么操作系统层面就是一张白纸——没有任何块设备。安装器自然只能报disk not found。

工作模式系统能看到什么对PVE安装的影响
RAID(IR)模式逻辑卷,物理盘被固件“隐藏”未建阵列时无盘可选
直通(HBA/IT/JBOD)模式每块物理盘独立可见正常识别,推荐配合ZFS使用

我通常会建议大家如果机器是拿来跑PVE的,控制器尽量切到直通模式。原因后面细说,但这确实是物理机安装时排错的第一优先级方向。

2. 第一现场:用安装器自带的Shell确认底层状态

2.1 从图形界面切到命令行控制台

PVE的图形安装器保留着一个很实用的后门。在图形界面下按Ctrl+Alt+F2,可以直接切到一个命令行控制台,里面是完好的BusyBox/Linux环境;想切回图形界面就按Ctrl+Alt+F1。有些笔记本需要按住Fn键再配合功能键才能切换,物理服务器一般没有这个问题。

进了控制台后,你会拿到一个root shell。这意味着不需要重新引导什么精简救援系统,直接在安装现场就能做完整诊断。

2.2 四条命令看清整个设备树

lsblk -f lsscsi dmesg | egrep -i "sd|nvme|sata|scsi|reset" fdisk -l /dev/sda

逐条解释一下:

lsblk -f用来查看块设备列表、分区和文件系统类型,它是最直观的“到底有没有盘”的判断依据。lsscsi查看SCSI/SAS层级里有没有设备,能区分“控制器没发现盘”和“系统枚举失败”两种情况。dmesg的过滤输出非常关键,如果内核日志里有reset、timeout、I/O error这类关键字,说明设备曾经被发现过然后又掉了,这种情况优先怀疑硬件链路而不是配置。fdisk -l /dev/sda看具体某块盘的容量和分区表,必要时可以换成fdisk -l列出全部磁盘。

2.3 按命令输出把问题分成三类

我在实际排查中会把输出归成三种情况,处理方向完全不同:

  • lsblk和lsscsi输出都为空:硬件底层就没有识别到盘。优先检查阵列卡模式、背板供电、线缆连接,以及PCIe设备是否被正确枚举。
  • lsscsi能看到设备但lsblk为空:控制器层面发现了设备,但Linux没有建立块设备节点。常见原因是驱动未加载、设备被某个中间层挡在门外。
  • lsblk里有盘,但安装器图形界面仍然报disk not found:这种情况少一些,通常是安装器对设备的过滤规则(比如固件将硬盘标记为可移动介质)或者盘本身分区表状态异常导致的。

把问题定性到这个粒度,后面每一步动手都有的放矢。

3. 物理机最常见的一句话结论:RAID卡没有把盘交出来

3.1 我的实际排错过程:从报错到阵列卡配置

遇到第一台报disk not found的服务器时,我还没经验丰富到直接在Shell里快速判断。整个过程是:先按Ctrl+Alt+F2进控制台,执行lsblk -f,输出完全为空;再执行lsscsi,同样没有任何设备。这基本可以断定是控制器固件层面出了问题,而不是Linux驱动的问题。

重启服务器,在开机自检阶段按提示进入阵列卡配置界面。进去之后一眼就看到了问题所在:物理盘列表里有2块盘,状态都是Ready;但逻辑盘(某些界面里叫Virtual Drive或Logical Drive)数量是0。也就是说控制器正处在RAID模式,却没有创建任何逻辑卷,系统自然什么都看不到。

处理办法很简单:把控制器的工作模式切到直通/JBOD/HBA,或者逐块把物理盘设置成独立直通盘,保存配置后重启。再引导PVE安装器,磁盘列表里两块盘就正常出现了。这个案例里,问题不在Linux,不在ISO,也不在盘本身,纯粹是阵列卡的配置“中间态”造成了假性无盘。

3.2 为什么建议用直通而不是硬阵列

既然支持RAID,为什么PVE用户普遍建议改直通?核心原因在ZFS。

PVE默认推荐基于ZFS做存储,ZFS要求直接管理物理磁盘——它需要读到每块盘的SMART健康信息、物理扇区布局、温控和错误计数。如果控制器做了硬RAID,ZFS在系统层面只能看到一个被固件打包好的逻辑卷,物理盘的SMART信息、坏道重映射记录全部被中间层挡掉了,磁盘故障时很难精准定位是哪一块。官方文档里也多次提示,在ZFS场景下应该让控制器以直通模式工作,而不是硬阵列。

除此之外还有一层现实考量:很多服务器自带的硬阵列卡本身带有缓存模块,如果断电保护机制不完善,意外断电后缓存里的数据可能丢失,这对虚拟化宿主机来说是额外风险。退役服务器转型PVE时,我一般直接建议关掉硬阵列功能,让控制器回归最朴素的直通职责。

4. 虚拟机和NVMe的特殊场景:VMD与虚拟磁盘“失踪”

4.1 虚拟化平台里容易忽略的三个细节

如果你不是在一台物理机上装PVE,而是在某虚拟化平台里建虚拟机来跑PVE,报disk not found的原因往往和实体机不太一样。我见过三类:

第一类最简单——创建虚拟机的时候没有添加任何虚拟磁盘,或者磁盘容量填了0。安装器进场时发现一个块设备都没有,自然报错。第二类:虚拟磁盘控制器的类型选得比较特殊,比如手动指定了NVMe控制器,而某些虚拟化平台的NVMe模拟实现和Linux安装器内核之间存在兼容问题,导致设备节点没有正常暴露。这种情况把控制器换成默认的SATA或者VirtIO SCSI类型,问题通常立刻消失。

第三类是PCIe直通导致的问题。有人想把物理硬盘直接直通给虚拟机,却漏掉了宿主机的直通前置配置,比如没有正确绑定VFIO驱动,虚拟机里自然看不到盘。这三种情况都可以用前文提到的Shell方法快速区分。

4.2 实体机NVMe盘不被识别:VMD开关的坑

和SATA盘不同,NVMe盘在部分服务器平台上会遇到一个额外关卡——VMD,全称Volume Management Device,可以理解为处理器平台固件里的卷管理设备特性。它开启后,NVMe盘会被固件统一接管,相当于在操作系统和物理NVMe设备之间加了一道“中间层”。如果安装器内核没有内置对应驱动,或者驱动加载顺序不对,盘就不会出现在系统设备树里,表现为disk not found。

处理方法通常有两个方向。最直接的是进BIOS设置,找到VMD相关选项,把它关闭(Disabled),让NVMe盘直接挂到PCIe总线上,Linux原生NVMe驱动就能认出来。另一个方向是确认PVE版本的内核足够新,能正确加载VMD支持模块。新版本PVE对这类平台特性的兼容性已经大幅改善,但如果用旧版本ISO引导,还是比较容易撞上这个坑。

我个人的习惯是:普通业务场景下用新版本PVE并保持BIOS默认VMD开启状态,先测试能否识别;如果识别不了,再选择关闭VMD优先保证安装顺利。不要在VMD开关上过度纠结,它不影响PVE本身的稳定性。

5. 边缘但真实存在:电源、线缆与USB设备的干扰

5.1 硬盘背板或数据线接触不良导致设备时有时无

有些服务器经过多次搬运、插拔,硬盘背板供电接口或SATA/SAS数据线已经出现接触不良。这种问题在安装器里表现得很诡异:第一次执行lsblk时能看到sda,过一分钟再执行就消失了,或者安装过程中拷贝文件时盘突然掉线,报I/O错误。

遇到这种“时有时无”的情况,别急着怀疑系统配置。先断电,把数据线和电源线重新插拔一遍,更换一个背板接口或数据线位置,再重新引导安装器测试。还有一次我遇到的是背板供电插头松了,导致多块盘同时供电不足,系统里设备列表忽隐忽现。重新插紧之后,问题彻底消失。这类硬件链路问题如果用软件手段排查,永远找不出答案。

5.2 安装U盘可能被安装器当成目标盘

安装PVE通常用U盘引导,而安装器在枚举块设备时不会把USB存储介质排除在外。所以磁盘列表里除了真实硬盘之外,还会多出一个U盘。

如果分区确认界面里盘符对错了——尤其当服务器存在多块相同型号硬盘时——很容易把系统安装进U盘,或者对U盘执行分区操作,安装过程就会出现各种匪夷所思的报错,其中包括看起来很像“disk not found”的分区失败提示。我的建议是把安装U盘插在后置USB口,并在选择目标盘时逐一核对磁盘型号和容量,确认没有选中USB介质再继续。

5.3 多路径设备重名盘干扰判断

在双控制器背板或双口SAS盘环境下,同一块物理磁盘可能被系统识别成多个设备节点,比如sda和sdb实际上指向同一块盘。如果安装器没有正确合并多路径设备,磁盘列表里会看到重复的盘符。

更麻烦的是,如果你只看到一部分盘,会误以为另外一块盘“丢了”,实际它只是以另一个设备节点存在。遇到这种情况,可以在Shell里执行multipath -ll确认是否存在多路径映射。对绝大多数家用或单机实验环境来说,双控制器场景并不多见,主要是机房环境要留意。

6. 问题解决后的确认:分区、文件系统与重启验证

6.1 需要特殊分区时,可以先用gdisk在Shell里分好

安装器本身的自动分区方案对大多数人来说是够用的。但如果你希望手动规划分区——比如想把EFI、swap、root分开,或者在硬盘开头预留一段空间给后续用途——可以在安装器的Shell里直接用gdisk完成分区,再返回图形安装器继续。

以UEFI引导模式为例,假设目标是/dev/sda,可以在安装器的Shell里输入:

gdisk /dev/sda

然后在gdisk交互命令中依次创建三个分区:

n -> 1 -> 回车默认起始 -> +512M -> ef00 n -> 2 -> 默认起始 -> +8G -> 8200 n -> 3 -> 默认起始 -> 默认结束 -> 8300 w

ef00是EFI系统分区类型代码,8200是Linux swap类型代码,8300是Linux文件系统类型代码。如果你改用传统的legacy BIOS引导,就不需要EFI分区,改成一个小型ef02(BIOS boot)分区给GRUB使用。分好之后回到安装器,引导安装流程,安装器通常能正确识别已有的分区结构,但一定要注意看清楚安装器是否打算重新初始化整块磁盘——如果它对整盘重新分区,你手动分的布局会被覆盖。

6.2 装完之后的几项验证

安装完成后,在重启前先拔掉U盘或安装介质,避免引导设备顺序错乱。进入系统后不要急着部署业务,花几分钟确认磁盘状态稳定:

lsblk -f dmesg | egrep -i "reset|timeout|i/o error" smartctl -H /dev/sda

lsblk -f确认目标盘的分区和文件系统挂载正常;dmesg筛选有没有磁盘reset、超时或I/O错误日志;smartctl -H查看硬盘健康状态。如果日志中反复出现磁盘reset,即使系统已经装上了,后续运行也会很不稳定,必须回头检查线缆、电源和固件配置。

还有一个容易忽略的点:如果控制器之前处于RAID模式,在安装完成后进入系统,拿lsscsi确认一下系统里看到的设备数量和物理盘数量是否一致。很多时候盘不是坏了,而是在某些固件设置下依然被“半隐藏”,导致虚拟化平台后续添加存储时找不到预期的磁盘。

最后说一点个人体会。每次装PVE遇到disk not found,我都会提醒自己先别急着乱按BIOS,先在安装器Shell里把设备树摸清楚。大量“盘不见了”的案例,最后都不是盘坏了,而是固件、控制器模式、驱动加载这些“中间环节”没有把盘放行。判断顺序大致是:先看Shell里能不能看到设备,再决定是去动阵列卡还是查线缆。照着这个思路走,基本都能在十几分钟内定位问题。希望这篇记录能让你少走几次弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 4:25:51

中小企业低成本SEO:五个环节的实用打法

很多中小企业老板一聊到SEO,开口第一句往往就是“我们预算不多,能不能不花钱做排名”。这个问题我听过太多次,也帮不少企业调整过预期的答案。低成本SEO确实存在,但它的意思不是一分钱不花,而是把有限的钱和精力&#…

作者头像 李华
网站建设 2026/10/15 4:25:24

IE11 RFC 7230/3986字符校验错误深度解析与修复方案

1. 项目概述:IE浏览器里那个让人抓狂的RFC报错,到底在说什么“IE上的 The valid characters are defined in RFC 7230 and RFC 3986 坑的解决方法”——这个标题一出来,老前端人可能已经下意识地揉了揉太阳穴。这不是某段神秘代码的报错截图&…

作者头像 李华
网站建设 2026/10/15 4:25:16

环网2详解:智能汽车新一代车载以太网架构设计与实践

1. 环网2是什么:从整车通信的一次“翻新”说起1.1 先聊清楚名字里的两个词:环网、2环网2这个词,最近在整车电子电气架构的圈子里热度很高,但很多刚接触的人第一反应是:什么叫环网?是CAN总线那种闭环&#x…

作者头像 李华
网站建设 2026/10/15 4:24:54

Flutter GTM鸿蒙适配实战:埋点治理与标签容器化架构解析

这两年身边做 Flutter 跨端的朋友陆续都在往鸿蒙上迁,大多数人以为最难的是渲染层和原生插件,真跑到业务验收阶段,最先报警的往往是埋点。我们团队在推进某跨平台应用的鸿蒙版本时,也撞上同一个问题:Flutter 生态里有一…

作者头像 李华
网站建设 2026/10/15 4:24:47

Spring Boot宠物医院管理系统设计与开发全攻略

1. 宠物医院管理系统这个选题:为什么我推荐它做课设/毕设做课程设计选题那会儿,我在几个备选方案里反复横跳:网上商城、图书管理系统、宿舍报修平台……最后定下宠物医院管理系统。原因很简单,它的业务场景足够具体,细…

作者头像 李华
网站建设 2026/10/15 4:24:11

FAST-LIO源码解析与工程实践:LiDAR+IMU紧耦合SLAM避坑指南

简介:针对FAST-LIO论文与源码的个人理解笔记,适合正在学习激光雷达与惯性组合导航、希望从数学推导落到代码实现的SLAM初学者和研究者。笔记从李群李代数与流形基础开始,先解释旋转矩阵与位姿变换为何采用流形表达,再梳理点云坐标…

作者头像 李华