在 Linux 系统中,“扫描存储”通常指的是发现新添加的磁盘、分区、LUN(逻辑单元号)或网络存储(如 iSCSI、NFS、Ceph 等),具体操作取决于存储类型,以下是常见的几种场景及对应的扫描方法:
扫描本地 SCSI/SATA/SAS 磁盘
当物理磁盘被添加但未自动识别时,可使用以下命令手动触发内核重新扫描 SCSI 总线:
# 扫描所有 SCSI 主机总线
for host in /sys/class/scsi_host/host/; do
echo "- - -" > "$host/scan"
done
✅ 此方法适用于通过热插拔或虚拟化平台添加的新磁盘。
扫描 iSCSI 目标(网络存储)
1 使用 iscsiadm 命令
# 发现 iSCSI 目标 iscsiadm -m discovery -t st -p <target_ip>:<port> # 登录到发现的 LUN iscsiadm -m node -T <target_iqn> -p <target_ip> -l # 扫描新 LUN(登录后可自动识别,也可手动触发) iscsiadm -m node -T <target_iqn> -p <target_ip> --rescan
2 使用 multipath(多路径配置)
如果配置了多路径,扫描后需重新加载多路径表:
multipath -r
扫描 Fibre Channel(FC)存储
# 重新扫描所有 FC HBA 适配器
for host in /sys/class/fc_host/host/; do
echo "1" > "$host/fc_host_scan"
done
或者使用 sg3_utils 工具:
sg_scan -i
扫描 NVMe 存储
NVMe 设备通常由内核自动识别,但若未出现,可尝试:
# 重新枚举 NVMe 设备 nvme discover
或重启 nvme 服务(某些发行版):
systemctl restart nvme
扫描 LVM 物理卷
如果新磁盘已分区并格式化为 LVM 物理卷,需扫描并激活卷组:
# 扫描新物理卷 pvscan # 激活所有卷组 vgchange -ay # 查看逻辑卷 lvdisplay
查看当前存储设备
无论哪种方式,扫描后建议确认设备是否被识别:
# 查看块设备 lsblk # 查看磁盘详情 fdisk -l # 查看内核日志中的存储事件 dmesg | grep -iE 'sd|nvme|iscsi|scsi' # 查看多路径状态(如使用) multipath -ll
自动扫描(推荐配置)
为避免每次手动扫描,可配置 udev 规则或使用 systemd 服务实现自动检测。
- 启用
systemd-udevd的自动扫描功能(默认已启用) - 配置
iscsiadm在启动时自动登录 - 使用
lvm2的auto_activation功能
| 存储类型 | 扫描命令/方法 |
|---|---|
| 本地 SCSI/SAS | echo "- - -" > /sys/class/scsi_host/host/scan |
| iSCSI | iscsiadm -m discovery + --rescan |
| Fibre Channel | 写入 fc_host_scan 或使用 sg3_utils |
| NVMe | nvme discover |
| LVM | pvscan + vgchange -ay |
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/479860.html
