/dev/raw/ 发生了什么?

/dev/raw/ 发生了什么?

我正在读一本关于 LWN 的文章它有一个重要的声明:

原始设备 (/dev/raw/rawN) 是 O_DIRECT I/O 的特殊情况。这些设备可以在不指定 O_DIRECT 的情况下打开,但仍然提供直接 I/O 语义。因此,所有相同的规则都适用于适用于使用 O_DIRECT 打开的文件(或设备)的原始设备。

这是否指的是今天的情况/dev/sda以及其他的情况?

答案1

不,/dev/raw与传统的不同/dev/sda。根据Linux 2.4 SCSI 子系统 HOWTO:第 11 章. 原始设备:

原始设备可以绑定到现有的块设备(例如磁盘)并用于与该现有的块设备执行“原始”IO。这种“原始”IO 绕过了通常与块设备关联的缓存。因此,原始设备提供了到物理设备的更“直接”的路由,并允许应用程序更好地控制到该物理设备的 IO 时序。这使得原始设备适合复杂的应用程序,例如通常自己进行缓存的数据库管理系统。

原始设备是字符设备(主设备号 162)。第一个次要编号(即 0)被保留作为控制接口,通常位于 /dev/rawctl 中。名为 raw 的实用程序(请参阅 man raw)可用于将原始设备绑定到现有的块设备。这些“现有块设备”可以是磁盘或cdrom/dvd,其底层接口可以是Linux 支持的任何接口(例如IDE/ATA 或SCSI)。

除了 HOWTO 中的信息之外,还有一些其他来源可供阅读:

相关内容