KEMBAR78
Linux io-stack-diagram v1.0 | PDF
Applications (Processes)
direct I/O
(O_DIRECT)
VFS
Page
Cache
nvme
hooked in Device Drivers
(hook in similar like
stacked devices like
mdraid/device mapper do)
iomemory-vsl
with module option
LVM
Block I/O Layer
optional stackable devices on top
of “normal” block devices – work on bios
mdraid device
mapper
drbd ...
I/O Scheduler
maps bios to requests
deadlinecfq noop
request-based
device mapper targets
dm-multipath
SCSI mid layer virtio_blk iomemory-vsl
Physical devices
HDD SSD DVD
drive
Micron
PCIe Card
Fusion-io
PCIe Card
LSI
RAID
Adaptec
RAID
Qlogic
HBA
Emulex
HBA
...
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_...
/dev/fio*
/dev/nvme#n#
mtip32xx
/dev/rssd*
The Linux I/O Stack Diagram (version 1.0, 2012-06-20)
http://www.thomas-krenn.com/en/oss/linux-io-stack-diagram.html
Created by Werner Fischer and Georg Schönberger
License: 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 special
purpose FSproc sysfs
futexfs
usbfs ...
tmpfs ramfs
devtmpfs
pipefs
network
nvme
device
The Linux I/O Stack Diagram
version 1.0, 2012-06-20
outlines the Linux I/O stack as of Kernel version 3.3
mmap
(anonymous pages)
stackable
iscsi_tcp
network

Linux io-stack-diagram v1.0

  • 1.
    Applications (Processes) direct I/O (O_DIRECT) VFS Page Cache nvme hookedin Device Drivers (hook in similar like stacked devices like mdraid/device mapper do) iomemory-vsl with module option LVM Block I/O Layer optional stackable devices on top of “normal” block devices – work on bios mdraid device mapper drbd ... I/O Scheduler maps bios to requests deadlinecfq noop request-based device mapper targets dm-multipath SCSI mid layer virtio_blk iomemory-vsl Physical devices HDD SSD DVD drive Micron PCIe Card Fusion-io PCIe Card LSI RAID Adaptec RAID Qlogic HBA Emulex HBA ... 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_... /dev/fio* /dev/nvme#n# mtip32xx /dev/rssd* The Linux I/O Stack Diagram (version 1.0, 2012-06-20) http://www.thomas-krenn.com/en/oss/linux-io-stack-diagram.html Created by Werner Fischer and Georg Schönberger License: 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 special purpose FSproc sysfs futexfs usbfs ... tmpfs ramfs devtmpfs pipefs network nvme device The Linux I/O Stack Diagram version 1.0, 2012-06-20 outlines the Linux I/O stack as of Kernel version 3.3 mmap (anonymous pages) stackable iscsi_tcp network