新硬盘插入后需用lsblk快速筛选裸盘(如sdb)、fdisk -l验证分区表状态;若均未显示,立即触发scsi/nvme总线重扫描,并用dmesg定位设备名。

在生产环境中,新硬盘插入后必须快速确认是否被系统识别,同时避免误操作影响线上服务。lsblk 和 fdisk 是最轻量、最可靠的两个命令,无需重启、不依赖 udev 重载,能直接反映内核当前看到的块设备状态。
用 lsblk 快速筛出“裸盘”——只看未分区的物理设备
lsblk 不读取分区表,只查内核块设备层,响应快、无需 root 权限,适合第一时间扫描:
- 运行 lsblk,观察输出中那些没有缩进子行的设备(如 sdb、nvme0n2、vdb),它们就是尚未创建任何分区的原始磁盘;
- 若想排除已挂载或已有文件系统的干扰,加 -d 参数:`lsblk -d`,只显示磁盘本身,不显示分区;
- 配合 -S 查识别信息(如型号、序列号):`lsblk -d -S`,可辅助确认是否为本次插入的新盘;
- 注意:如果新盘是 NVMe 或 SCSI 热插拔设备,但 lsblk 没出现对应设备名,说明内核尚未发现,需先触发总线重扫(见下文补充)。
用 fdisk -l 验证分区表状态——确认是否“干净”或“已分区”
fdisk -l 读取实际分区表内容,用于判断该盘是空盘、已有分区但未挂载,还是分区表损坏:
- 执行 sudo fdisk -l,重点看两处:
• 是否存在类似 Disk /dev/sdb: 1.8 TiB 的整盘信息行;
• 对应设备下是否没有 Device 列条目(即无 /dev/sdb1、/dev/sdb2 等); - 若看到 "Disk label type: gpt" 或 "dos",说明分区表已初始化;若提示 "Unable to read /dev/sdb" or "I/O error",可能是硬件未就绪或权限问题;
- 对单个设备精准检查:`sudo fdisk -l /dev/sdb`,避免其他磁盘输出干扰判断;
- 注意:fdisk 对 GPT 盘仅支持查看,不建议用它修改;如需编辑 GPT,改用 gdisk -l /dev/sdb。
lsblk 和 fdisk 都没看到新盘?立即触发 SCSI/NVMe 总线重扫描
物理插拔后内核未自动识别,常见于虚拟机直通、旧 BIOS 或某些 RAID 卡环境。此时不能等,要主动通知内核扫描:
- 查主机总线号:ls /sys/class/scsi_host/(SCSI/SATA)或 ls /sys/class/nvme/(NVMe);
- 对每个 host 执行扫描:
`echo "- - -" | sudo tee /sys/class/scsi_host/host0/scan`
`echo "- - -" | sudo tee /sys/class/scsi_host/host1/scan`; - NVMe 设备可尝试:sudo nvme scan(需 nvme-cli 工具);
- 扫描后立刻再跑一次 lsblk 和 sudo fdisk -l,95% 以上情况即可看到新设备。
交叉验证技巧:用 dmesg 锁定设备名和时间点
当不确定哪个设备是新盘,或 lsblk/fdisk 输出太多时,用内核日志快速定位:
- 执行 dmesg | grep -i "sd\|nvme\|ata",查找最近几秒的磁盘探测记录;
- 重点关注含 "Attached SCSI disk"、"nvme: identified controller" 的行,末尾会明确写出分配的设备名(如 sdb、nvme0n1);
- 配合 tail -20 $(dmesg) 或 dmesg -T | tail -15(带时间戳)可确认是否为本次插入所触发。











