我一直在寻找一种刷新scsi总线(或其他任何总线)的方法,以使我的内核(CentOS 5.5上为2.6.18-194-el5)了解驱动器上的分区,而我无法找不到办法。partprobe立即做到了。怎么样?
既然很重要,这就是我正在做的事情:
我想在特定于分区的事情上进行一些练习,例如调整大小,备份和还原MBR,等等。我在/ dev / sdb上创建了20GB分区,备份了MBR:
dd if = / dev / sdb of = sdb.mbr bs = 512 count = 1
然后进入fdisk,删除分区,将其写入,然后退出。
ls / dev / sdb *
显示没有分区,并且
fdisk -l / dev / sdb'
匹配,所以我觉得我很好。
然后,我将dd颠倒了:
dd if = sdb.mbr of = / dev / sdb bs = 512 count = 1
当然,那时我什么也没做,所以
ls / dev / sdb *
没有列出任何分区,但是
fdisk -l
之所以显示该分区,可能是因为它读取了磁盘上的前512个字节,并且不依赖于内核。我知道我必须刷新总线,所以我进入了/ sys / class / scsi_host / host1,并做了
回声“---”>扫描
和做
ls / dev / sdb
没有显示任何新内容,所以我去了/ sys / bus / scsi / devices,对于列出的每个设备,我都做了
回声1>重新扫描
那没有用。
然后,我对该问题进行了更多的研究,并发现了“ partprobe”,它与parted一起提供。我运行它,它立即起作用。
如果我在这里没有得到可能的答案,我可能会去获取源代码并进行查找,但是我认为这里除了我之外还有向导,因此我认为我对所有人都有吸引力。