批量创建分区,然后分区节点;访问失败

批量创建分区,然后分区节点;访问失败

所以我有一个程序,它获取一个设备,对其进行分区,然后为该分区创建设备节点。问题是,在强制进行某种重新扫描之前,内核不会拾取设备。例如:

  • 隔断装置
  • 制作节点
  • cat 节点 > cat: /dev/xxx: 没有这样的设备或地址

但这有效:

  • 隔断装置
  • 制作节点
  • 运行 cfdisk /dev/xxx 并立即退出
  • 猫节点 > 工作正常

为什么是这样?是否有某种ioctl 可以重新扫描SCSI 总线之类的?

并且,这是行不通的:

echo "- - -" > /sys/class/scsi_host/hostX/scan

答案1

使用partprobe /dev/xxx

partprobe是套餐的一部分parted。从手册页:

partprobe是一个通知操作系统内核分区表更改的程序`

如果您有一个分区块设备(例如磁盘映像文件)并且您想为其自动创建设备节点(例如/dev/loop*)并通知内核,则另一种选择是,您可以使用kpartx.它会在热插拔事件(例如插入 USB 或热插拔 SATA 驱动器)时自动调用。

相关内容