質問: 1 もちろん、その時点では何もしていなかったので、 ls/dev/sdb * パーティションは表示されませんでしたが、 fdisk -l おそらくパーティションがディスクの最初の512バイトを読み取り、カーネルに依存していないため、パーティションが表示されました。バスをリフレッシュする必要があることを知っていたので、/ sys/class/scsi_host/host1に移動して、 エコー "---">スキャン そしてやっている ls/dev/sdb 新しいものは何も表示されなかったので、/ sys/bus/scsi/devicesに移動し、リストされている各デバイスについて、 エコー1>再スキャン そしてそれはうまくいきませんでした。その後、問題についてさらに調査を行い、partedに付属する「partprobe」に出会いました。私はそれを実行しました、そしてそれは即座に働きました。ここで適切な答えが得られない場合は、おそらくソースを取得してそれを調べるだけですが、ここの向こうにウィザードがいると思うので、皆さんにアピールしたいと思いました。
回答: partprobeはblkrrpart ioctlを呼び出します。これは、err、 _include/linux/fs.h_ 、およびカーネルソース(肉は rescan_partitions() )にあります:_#define blkrrpart _io(0x12,95) /* re-read partition table */ _これを見つける最も簡単な方法は、_strace -e raw=ioctl -e open,ioctl partprobe /dev/sdb_を実行することです。あなたが_/sys/*/*scan_で試したものは、ドライブに変更があったかどうかを確認するようにカーネルに指示していると思います。ドライブが変更されていない場合(またはカーネルが検出しない方法でホットスワップされている場合)は役に立ちませんが、ドライブのパーティション構造は変更されています。