Linux Storage Stack Diagram v4.10
Linux Storage Stack Diagram v4.10
Fibre Channel
over Ethernet
Virtual Host
version 4.10, 2017-03-10
FireWire
ISCSI outlines the Linux storage stack as of Kernel version 4.10
USB
mmap
(anonymous pages)
Applications (processes)
LIO malloc
iscsi_target_mod
tcm_usb_gadget
chmod(2)
open(2)
write(2)
read(2)
stat(2)
vfs_writev, vfs_readv, ...
tcm_qla2xxx
...
sbp_target
tcm_vhost
tcm_fc
VFS
Block-based FS Network FS Pseudo FS Special
ext2 ext3 ext4 xfs NFS coda proc purpose FS
target_core_mod Direct I/O sysfs Page
(O_DIRECT) btrfs ifs iso9660 smbfs ... tmpfs
pipefs futexfs ramfs cache
target_core_le gfs ocfs ... ceph devtmpfs
usbfs ...
Stackable FS
target_core_iblock ecryptfs overlayfs unionfs FUSE
stackable (optional)
struct bio
- sector on disk
BIOs (block I/Os) Devices on top of normal BIOs (block I/Os) - sector cnt
block devices - bio_vec cnt
drbd LVM - bio_vec index
device mapper mdraid - bio_vec list
dm-crypt dm-mirror
...
dm-cache dm-thin bcache
dm-raid dm-delay
userspace
BIOs BIOs
BIOs
Block Layer
Hardware Hardware
dispatch ... dispatch
queue queues
Request-based
device mapper targets
dm-multipath
SCSI mid layer
sysfs scsi-mq /dev/zram* /dev/rbd* /dev/mmcblk*p* /dev/nullb* /dev/vd* /dev/rssd* /dev/skd*
(transport attributes) SCSI upper level drivers
/dev/sda /dev/sd* ... /dev/ubiblock* /dev/nbd* /dev/loop* /dev/nvme*n* /dev/rsxx*
Transport classes
scsi_transport_fc /dev/sr* /dev/st*
zram ubi rbd nbd mmc loop null_blk virtio_blk mtip32xx nvme skd rsxx
scsi_transport_sas
scsi_transport_...
network
memory
network
HDD SSD DVD LSI Qlogic PMC-Sierra para-virtualized Micron nvme stec
virtio_pci mobile device
drive RAID HBA HBA SCSI ash memory PCIe card device device