Raw device

From Wikipedia, the free encyclopedia

In computing, specifically in Unix and Unix-like operating systems, a raw device is a special kind of logical device associated with a character device file that allows a storage device such as a hard disk drive to be accessed directly, bypassing the operating system's caches and buffers (although the hardware caches might still be used). Applications like a database management system can use raw devices directly, enabling them to manage how data is cached, rather than deferring this task to the operating system.

In FreeBSD, all device files are in fact raw devices. Support for non-raw devices was removed in FreeBSD 4.0 in order to simplify buffer management and increase scalability and performance.[1]

In Linux kernel, raw devices were deprecated and scheduled for removal at one point, because the O_DIRECT flag can be used instead.[2] However, later the decision was made to keep raw devices support since some software cannot use the O_DIRECT flag.[3] Raw devices simply open block devices as if the O_DIRECT flag would have been specified. Raw devices are character devices (major number 162). The first minor number (i.e. 0) is reserved as a control interface and is usually found at /dev/rawctl. A command-line utility called raw[4] can be used to bind a raw device to an existing block device. These "existing block devices" may be disks or CD-ROMs/DVDs whose underlying interface can be anything supported by the Linux kernel (for example, IDE/ATA or SCSI).[5]


  1. ^ "FreeBSD Architecture Handbook: 9.4. Block Devices (Are Gone)". Retrieved 2017-06-29.
  2. ^ Day, Robert P. J. (2007-02-16). "[PATCH] Remove obsolete raw device support". Retrieved 2017-06-29.
  3. ^ Jones, Dave (2007-05-13). "undeprecate raw driver". Retrieved 2017-06-29.
  4. ^ "util-linux: raw(8)". August 1999. Retrieved 2017-06-29.
  5. ^ "The Linux 2.4 SCSI subsystem HOWTO: Chapter 11. Raw devices". Linux Documentation Project. 2004-09-13. Retrieved 2017-06-29.