image/svg+xml
Applications (Processes)
direct I/O(O_DIRECT)
VFS
PageCache
nvme
hooked in Device Drivers(hook in similar likestacked devices likemdraid/device mapper do)
iomemory-vslwith module option
LVM
Block I/O Layer
optional stackable devices on topof “normal” block devices – work on bios
mdraid
devicemapper
drbd
...
I/O Scheduler
maps bios to requests
deadline
cfq
noop
request-baseddevice mapper targets
dm-multipath
SCSI mid layer
virtio_blk
iomemory-vsl
Physical devices
HDD
SSD
DVDdrive
MicronPCIe Card
Fusion-ioPCIe Card
LSIRAID
AdaptecRAID
QlogicHBA
EmulexHBA
...
anonymous pages(malloc)
read(2)
write(2)
open(2)
stat(2)
chmod(2)
...
BIOs (Block I/O) sysfs(transport attributes)
/dev/vd*
SCSI upper layer
/dev/sda
...
/dev/sdb
/dev/fio*
SCSI low layer
megaraid sas
aacraid
qla2xxx
...
libata
ahci
ata_piix
...
lpfc
Transport Classes
scsi_transport_fc
scsi_transport_sas
scsi_transport_...
lvm
/dev/fio*
/dev/nvme#n#
mtip32xx
/dev/rssd*
The Linux I/O Stack Diagram (version 0.1, 2012-03-06)http://www.thomas-krenn.com/en/oss/linux-io-stack-diagram.htmlCreated by Werner Fischer and Georg SchönbergerLicense: CC-BY-SA 3.0, see http://creativecommons.org/licenses/by-sa/3.0/
block based FS
ext2
ext3
btrfs
ext4
xfs
ifs
iso9660
...
NFS
coda
Network FS
gfs
ocfs
smbfs
...
pseudo FS
specialpurpose FS
proc
sysfs
futexfs
usbfs
...
tmpfs
ramfs
devtmpfs
pipefs
network
nvmedevice
The Linux I/O Stack Diagramversion 0.1, 2012-03-06outlines the Linux I/O stack as of Kernel version 3.3