The biggest advantage of SDS (Software-Defined Storage), such as IzumoFS, is that there are no specific dependencies with hardwares (SDS is still a buzz word so some SDS vendors has only appliance products). Because you have freedom to choose different hardware with different specs, SDS can be used for pretty much anything from HPC to archiving.
On the other hand, because it has too much of freedom, sometime it's actually hard to choose the right hardware for your needs. In this blog post series I'll introduce when to use SSD with IzumoFS.
Let me start with some basics. HDD has its nature that it's very good at writing data by sequential access. But with random accessed IO, it has to wait disc to spin so performance will drop down significantly. Also if you have lots of threads going on that will increase the waiting time even in sequential access.
The minimum data store unit in SSD is called “cell” and it saves data by putting electron into the cell. Read and write will be performed from “pages” which is a raw of many cells. Data deletion will be performed to something called “block” which is wrapper for many pages.
Since SSD has its limitation not possible to overwrite existing data, when new data needs to be saved it first write those into unused block and then delete the old block. SSD has multiple IO channel so it'll perform very fast when you have parallel IO.
So to make little more clearer it'll be as below.
So now you know the difference of HDD and SSD a little. There are also some other things we must be aware of write handling on SSD.
So the best situation for SSD to work is when there is right size of data and IO.
When SSD faces these kind of limitation, not only write performance decreases but in situation where R/W both exist the read performance also goes down.
Common enterprise NAS has fixed file cluster size unlike IzumoFS. For example, xfs file system, the default file system for CentOS 7, can choose cluster size from 512B to 64KB. In next blog post, I'll discuss about cluster size of file system and how to optimize IzumoFS configuration.