磁盘软弹出和重扫描操作指南
Linux 系统中 SATA/SAS 普通硬盘和 NVMe 硬盘的软弹出(移除)和重扫描操作方法。
1. SATA/SAS 普通硬盘
1.1 软弹出(移除)磁盘
移除 /dev/sdb:
bash
echo 1 > /sys/block/sdb/device/delete1.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/rescan1.3 速查表
| 操作 | 命令路径 | 写入内容 |
|---|---|---|
| 删除磁盘 (sdb) | /sys/block/sdb/device/delete | 1 |
| 发现新磁盘 | /sys/class/scsi_host/host*/scan | "- - -" |
| 刷新磁盘大小 (sdb) | /sys/block/sdb/device/rescan | 1 |
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/nvme0PCI 地址为 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/remove | 1 |
| 重新发现 NVMe 设备 | /sys/bus/pci/rescan | 1 |
3. 对比
| 硬盘类型 | 管理方式 | 操作方法 |
|---|---|---|
| SATA/SAS/SCSI | SCSI 设备 | 通过 scsi_host 扫描和删除 |
| NVMe | PCIe 设备 | 通过 pci 总线扫描和删除 |