执行echo 1 > sudo /sys/block/sdb/device/delete删除SCSI磁盘后仍可见,求排查
问题分析与解决步骤
你的命令存在几个关键问题,导致磁盘没有被正确移除,我来一步步拆解并给出正确操作:
1. 命令语法错误:sudo的位置完全错了
你写的echo 1 > sudo /sys/block/sdb/device/delete,shell会理解成把字符串"1"写入当前目录下名为sudo的文件,而不是用sudo权限去写入/sys/block/sdb/device/delete。因为shell会先处理重定向(>),这时候sudo还没生效,而且路径被拆成了sudo和/sys/...,完全不符合预期。
正确的写法应该是让sudo覆盖整个写入操作,有两种常用方式:
- 使用
tee命令(推荐,更直观):echo 1 | sudo tee /sys/block/sdb/device/delete - 或者用shell子进程执行整个命令:
sudo sh -c 'echo 1 > /sys/block/sdb/device/delete'
2. 执行删除后需要刷新SCSI总线
即使你正确执行了删除命令,lsscsi可能不会自动刷新设备列表,需要手动触发SCSI总线扫描来更新:
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan
这条命令会让所有SCSI主机重新扫描设备,之后再运行lsscsi应该就看不到已删除的磁盘了。
3. 前置检查:确保磁盘未被挂载
在执行删除之前,必须确保sdb及其所有分区都没有被挂载,否则删除操作会失败。可以先卸载:
sudo umount /dev/sdb*
如果提示设备忙,可以用lsof /dev/sdb或fuser -m /dev/sdb找出占用进程并停止它。
验证步骤
- 先卸载磁盘所有分区
- 执行正确的删除命令
- 刷新SCSI总线
- 运行
lsscsi确认磁盘已消失
内容的提问来源于stack exchange,提问作者vishnubvrit
相关产品推荐
相关产品推荐

