An Introduction to the Linux Kernel Block I/O Stack

Speaker:

Benjamin Block (Kernel Developer for FCP on Linux on IBM Z, IBM Deutschland Research & Development GmbH) / Homepage

Scheduled time: Sunday, 12:00 , Room V7

Mass storage hardware in computers today is predominantly organized via the "block storage" paradigm. The available storage-space is presented to operating systems as several equal-sized blocks of `n` bytes, that can typically be addressed via a linear address-space, and accessed individually.

The same can be said for the Linux kernel. Its "Block I/O" model or the "Block Layer" is the predominant access method for mass storage. This includes a wide variety of devices, such as local hard drives, solid state disks, or remote storage via protocols like FCP, iSCSI, or (the recent) NVMe-oF.

This talk gives an introduction into how block I/O works in the Linux kernel. This includes - but in lesser details - how I/O requests are submitted by userspace applications, how they traverse the different components - block device, block queues, etc. - until they are finally served by a piece of hardware.

To illustrate this flow, a setup with a FCP-attached SCSI disk that is accessed via two paths, composed into one multipath block device is used to serve the requests.

Desired previous knowledge: General knowledge of computer architecture, Linux, and the Linux kernel are helpful to follow the talk. Prior knowledge about the Linux I/O stack is not required.

Further information: Short paper