Analyzing Filesystems and the Block Layer
Read or write access to storage devices usually happens after passing through several intermediary layers, such as filesystems and the block layer. There is also the page cache, where requested data is preserved before being lazily committed to the underlying storage. So far, we’ve tried to understand the different factors that can affect disk performance and examined the important metrics associated with physical disks, but, as Sherlock Holmes would say, “Perfectly sound analysis, but I was hoping you’d go deeper.”
Applications tend to interact with the filesystem, not with the physical storage. It is the job of a filesystem to translate the application’s request and send it down to the lower layers for further processing. The request will go through further processing in the block layer and be eventually scheduled for dispatch to the storage device. Each stage in this hierarchy will add its own processing...