Skip to content

磁盘软弹出和重扫描操作指南

Linux 系统中 SATA/SAS 普通硬盘和 NVMe 硬盘的软弹出(移除)和重扫描操作方法。

1. SATA/SAS 普通硬盘

1.1 软弹出(移除)磁盘

移除 /dev/sdb:

bash
echo 1 > /sys/block/sdb/device/delete

1.2 重新扫描磁盘

情况 A:扫描新添加的磁盘

扫描所有 SCSI 主机发现新磁盘:

bash
for host in /sys/class/scsi_host/host*; do echo "- - -" > $host/scan; done

"- - -" 为通配符,分别对应 Channel、ID、LUN。

情况 B:刷新已存在磁盘的容量(扩容)

底层扩大了 /dev/sdb 的容量,强制内核重新读取:

bash
echo 1 > /sys/block/sdb/device/rescan

1.3 速查表

操作命令路径写入内容
删除磁盘 (sdb)/sys/block/sdb/device/delete1
发现新磁盘/sys/class/scsi_host/host*/scan"- - -"
刷新磁盘大小 (sdb)/sys/block/sdb/device/rescan1

2. NVMe 硬盘

NVMe 设备直连 PCIe 总线,需作为 PCIe 设备移除。

2.1 前置准备

⚠️ 警告:执行前必须完成以下准备,否则会造成系统崩溃或数据丢失:

  • 卸载该 NVMe 盘上的所有分区 (umount)
  • 如果是 LVM 物理卷或软件 RAID 的一部分,先从卷组或 RAID 阵列中移除
  • 确认没有进程使用该设备 (lsof | grep /dev/nvmeXnY)

2.2 移除 NVMe 磁盘

第 1 步:查找 PCI 地址

bash
ls -l /sys/class/nvme/nvme0

输出示例:

lrwxrwxrwx. 1 root root 0 Dec 15 10:00 /sys/class/nvme/nvme0 -> ../../devices/pci0000:00/0000:00:0d.0/nvme/nvme0

PCI 地址为 0000:00:0d.0。

第 2 步:执行移除

bash
echo 1 > /sys/bus/pci/devices/0000:00:0d.0/remove

通过 lsblk 或 ls /dev/nvme* 确认设备已移除。

2.3 重新扫描 NVMe 设备

bash
echo 1 > /sys/bus/pci/rescan

新的 NVMe 设备重新出现。

2.4 速查表

操作命令路径写入内容
移除 NVMe (PCI 地址为 A)/sys/bus/pci/devices/A/remove1
重新发现 NVMe 设备/sys/bus/pci/rescan1

3. 对比

硬盘类型管理方式操作方法
SATA/SAS/SCSISCSI 设备通过 scsi_host 扫描和删除
NVMePCIe 设备通过 pci 总线扫描和删除

用心记录,持续学习 | CNB