在日常云服务器运维过程中,管理员经常会遇到一个看似简单却极易困扰的问题:在云平台上新增了云硬盘,却在系统内部看不到新增的磁盘设备。无论是通过 lsblk 查看,还是 df 查询,都找不到新增磁盘的踪迹。这类问题通常并不是云平台故障,而是对云服务器存储识别机制、块设备热插拔流程以及挂载流程不够熟悉所导致。
在云平台中增加云硬盘或扩展存储容量后,底层云宿主机会向虚拟机分配新的块设备或更新原块设备大小。然而,虚拟机内部并不会总是自动识别这些新的块设备信息。尤其是某些虚拟化平台,例如 KVM、Xen、OpenStack、VMware 或不同云服务商的自定义虚拟化层,都可能需要操作系统自行触发设备扫描。因此,当新增云硬盘在面板显示已挂载到实例,但系统中没有出现新设备时,首先需要确认操作系统是否执行了块设备扫描。最直接的方式是使用以下命令查看当前已识别的磁盘:
lsblk
如果新增磁盘没有显示,可以尝试查看 dmesg 是否有相关设备事件:
dmesg | grep -i sd
如果没有任何新增设备日志,通常意味着系统未触发设备扫描。此时可以对 SCSI 总线进行重新扫描,这是 Linux 中最通用的磁盘识别流程。执行以下命令即可对所有 SCSI 主机执行探测:
for host in /sys/class/scsi_host/host*; do echo "- - -" > $host/scan; done
随后再次运行 lsblk,通常即可看到新增的磁盘,例如 /dev/vdb 或 /dev/sdc 等。
如果云平台新增的是一块独立云硬盘,那么在扫描成功后会出现一个新的块设备。但如果是云平台扩容原有磁盘容量,例如从 100GB 扩展到 200GB,则 lsblk 会显示磁盘大小未更新,此时需要对该设备进行重新识别。有些平台支持热扩容,有些则需要系统主动触发。例如对于 /dev/vda,可执行:
echo 1 > /sys/class/block/vda/device/rescan
如果是分区磁盘,还需要对分区扫描:
partprobe
当磁盘成功显示后,它通常并没有格式化,也没有文件系统,因此也不会出现在 df -h 中。许多初学者会误以为新增磁盘没有挂载,但实际上未格式化的设备不会显示在文件系统列表中。此时需要对新增磁盘进行分区,例如使用 fdisk:
fdisk /dev/vdb
按照提示创建新分区后,通过 lsblk 可以看到 /dev/vdb1 分区。此时需要为分区创建文件系统,例如 EXT4:
mkfs.ext4 /dev/vdb1
也可以使用 XFS:
mkfs.xfs /dev/vdb1
当文件系统创建完成后,下一步是选择挂载点。假设希望将其挂载至 /data,可以执行:
mkdir /data
mount /dev/vdb1 /data
在完成挂载之后,通过 df 命令即可看到新增磁盘已经加入文件系统:
df -h
然而,这只是临时挂载。如果不进行持久化配置,一旦服务器重启,新磁盘仍然不会自动挂载。因此需要编辑 /etc/fstab,让系统在启动时自动加载该文件系统。写入方式通常如下:
/dev/vdb1 /data ext4 defaults 0 0
为了保证 fstab 项不会出错导致系统无法启动,建议在保存前先进行挂载测试:
mount -a
如果没有报错,配置即可生效。
某些云平台在新增磁盘后,用户会发现系统内部并没有出现新设备,而是类似 /dev/vda 大小未变,也没有任何新块设备。这种情况往往说明新增的是系统盘以外的云硬盘,但云平台未正确绑定到系统。这时应先在云平台查看硬盘的“挂载状态”,确保新增硬盘已经挂载到对应实例上。如果显示“未挂载”,需要在平台侧手动挂载。而有些云平台新增磁盘后需要重启实例才能生效,因此需要根据平台的说明判断是否必须重启。
另外一种更隐蔽的情况,是新增云硬盘被系统识别,但未生成正确的设备节点。例如在某些极端场景中,由于 udev 规则冲突、系统自定义规则或多重挂载导致,新增设备节点可能出现在不同路径,如 /dev/disk/by-id 或 /dev/disk/by-path 中。为此可以通过以下命令查看所有块设备路径:
ls -l /dev/disk/by-id
识别到对应设备后,可以直接使用对应路径进行分区与挂载。
当磁盘成功挂载后,仍可能出现 df 与 lsblk 数值不一致的问题,这大多发生在扩容原磁盘而非新增独立硬盘的情况下。扩容后需要扩展分区,再扩展文件系统。例如对于扩容大小增加的磁盘,可使用 growpart:
growpart /dev/vda 1
扩展文件系统(EXT4):
resize2fs /dev/vda1
或扩展 XFS:
xfs_growfs /
至此,扩容流程才算完整。
某些情况下,即便磁盘识别正常并成功挂载,但系统仍提示空间不足。这多半是因为挂载点路径被错误覆盖。例如管理员将新磁盘挂载到 /data,但该路径已有文件,挂载后原文件被遮挡,从而空间显示异常。此时使用:
umount /data
即可恢复挂载前的文件。
在容器化环境(如 Docker)中,新增磁盘的识别也可能由于设备路径映射被容器运行时拦截而出现偏差。这种环境中要注意宿主机必须先正确识别磁盘,再由容器映射使用,而不是直接在容器内操作磁盘。
当用户掌握云硬盘识别、扫描、分区、格式化、挂载、扩容这一完整链路后,就能够从根本上理解为什么新增云硬盘不显示,以及如何让它顺利投入使用。云硬盘挂载本质上是操作系统对块设备的管理问题,而云平台只负责分配设备,实际的识别工作仍由 Linux 主导。因此,只要掌握相关原理与流程,都可以快速定位问题并完成正确挂载。