Rearchitecting Linux I/O towards Petascale Storage

Linux kernel contains roughly 71 filesystems and a good portion of them exists solely to support legacy systems. User space storage is easier to implement, maintain and scale. Instead of resisting user space implementations of iSCSI, NFS and distributed filesystems, Linux kernel developers should embrace and standardize on FUSE and DPDK/SPDK like I/O architecture.

Other than the root filesystems and its supporting code, there is little to no reason for the rest of the storage code base to remain inside the kernel. From NTFS, NFS-Ganesha to GlusterFS, it has been clearly demonstrated that user-space storage systems work well. Recent open source storage projects moved further apart from the kernel community and adopted Python (OpenStack Swift), Java (Hadoop HDFS) and Golang (Minio) languages. POSIX is not only irrelevant, but an impediment to modern distributed storage systems.

Linux as a stand-alone operating system does not help much when it comes to distributed authentication, high-availability (HA) and fault-tolerance. Most of the modern applications entirely run as non-root user with all its dependencies managed within its home directory. Authentication is based on SSL/TLS and certificates over HTTP. HA is achieved through centralized discovery and consensus algorithms through Zookeeper (Java), Doozer (Go), Consul (Go), etcd (Go) like projects for high-availability.

On the other hand, Linux has quietly grown as a popular microkernel of choice under the name of hypervisors and linux-container-hosts. It is time to admit and embrace the change.