
Linux运维实战无需重启服务器一条命令让SCSI硬盘即刻上线在虚拟化环境和云计算平台中磁盘扩容是最常见的基础运维操作之一。无论是KVM、VMware还是公有云虚拟机当业务数据增长导致存储空间告急时管理员往往需要在不停机的情况下完成磁盘扩容。但许多运维工程师都遇到过这样的困境在管理界面添加新磁盘后登录系统执行fdisk -l却看不到新设备。传统解决方案可能建议重启服务器但这在生产环境中几乎是不可接受的——尤其对那些要求99.99%可用性的关键业务系统而言。1. SCSI热扫描的核心原理与操作SCSISmall Computer System Interface是Linux系统连接存储设备的标准协议之一。当我们在虚拟化平台添加新磁盘时本质上是在SCSI总线上新增了一个设备。Linux内核通过scsi_host子系统管理这些连接每个物理或虚拟的SCSI控制器都对应/sys/class/scsi_host/目录下的一个hostX接口。1.1 手动触发SCSI总线扫描最直接的热扫描方法是向特定host发送扫描指令# 列出所有SCSI主机控制器 ls /sys/class/scsi_host/ # 假设输出为host0 host1 host2则对每个host执行扫描 echo - - - /sys/class/scsi_host/host0/scan echo - - - /sys/class/scsi_host/host1/scan echo - - - /sys/class/scsi_host/host2/scan这三个连字符具有特定含义第一个-表示扫描所有通道channel第二个-表示扫描所有SCSI目标IDtarget第三个-表示扫描所有LUNLogical Unit Number1.2 自动化扫描脚本手动逐个host尝试效率低下我们可以编写一个简单的Shell脚本自动完成这个过程#!/bin/bash for host in /sys/class/scsi_host/host*/scan; do echo - - - $host echo Triggered scan on $host done # 验证新磁盘是否出现 echo New disks detected: fdisk -l | grep -i disk /dev/sd这个脚本会遍历所有SCSI主机控制器并触发扫描最后列出所有检测到的磁盘设备。2. 进阶工具与替代方案虽然echo命令简单直接但在复杂环境中可能需要更专业的工具。2.1 rescan-scsi-bus.sh工具许多Linux发行版自带rescan-scsi-bus.sh脚本提供更全面的扫描功能# 安装工具CentOS/RHEL yum install sg3_utils -y # 执行扫描 rescan-scsi-bus.sh -a该工具支持以下实用参数-a扫描所有设备-r只扫描已移除的设备-i显示扫描进度-l只列出设备不执行扫描2.2 不同虚拟化平台的注意事项虚拟化平台热添加特性特殊要求KVM/QEMU支持确保使用virtio-scsi控制器VMware ESXi支持虚拟机配置中启用SCSI热插拔Hyper-V支持使用SCSI控制器而非IDE公有云实例视平台而定通常需要先在控制台挂载卷3. 磁盘识别后的分区与管理成功识别新磁盘后接下来的操作取决于你使用的是传统分区还是LVM。3.1 传统分区方式对于直接使用分区的场景# 创建新分区 fdisk /dev/sdb # 交互式操作n → p → 1 → 回车 → 回车 → w # 格式化分区 mkfs.ext4 /dev/sdb1 # 挂载使用 mkdir /data mount /dev/sdb1 /data3.2 LVM逻辑卷管理LVM提供了更灵活的存储管理方式# 创建物理卷 pvcreate /dev/sdb # 扩展卷组 vgextend vg_data /dev/sdb # 扩展逻辑卷 lvextend -l 100%FREE /dev/vg_data/lv_data # 调整文件系统大小 resize2fs /dev/vg_data/lv_data4. 生产环境最佳实践在关键业务系统中磁盘扩容需要格外谨慎。以下是几个实用建议操作前备份重要数据即使只是添加新磁盘也可能因误操作影响现有存储使用多路径IOMPIO对于高可用存储配置多路径防止单点故障监控SCSI事件通过dmesg -w或journalctl -f实时查看内核日志考虑UDEV规则如果需要为新磁盘自动创建特定挂载点可以配置UDEV规则# 示例UDEV规则/etc/udev/rules.d/99-data-disk.rules ACTIONadd, KERNELsd[b-z], RUN/bin/mkdir -p /mnt/%k对于自动化运维环境可以将这些操作集成到Ansible、SaltStack等配置管理工具中实现磁盘扩容的完全自动化。