It has been a while since I updated this blog about btier development. At a slow but steady pace I am however still fixing bugs and adding features. This article will explain what has changed as well as what is going to change in the future.
Btier-1.2.x is the new development branch of btier. For some time to come I will keep solving bugs in btier-1.x, however no new features will be implemented in the 1.2 branch.
Recently support to do direct io to underlying devices without using VFS was added for underlying devices that support it. When btier_setup is done with the new -B option writes to real underlying block devices will be done with submit_bio instead of vfs_write. Should a btier contain both devices and files then it will of course still use vfs_write to the underlying files. The benefit is not using vfs is the reduced overhead and therefore increased speed when the underlying devices are flash or ram based. In this case btier will now support speeds up to 170K IOPS.
Another new feature is that btier will now detect zero filled blocks coming in. When possible it will avoid writing them which will easily boost the speed up to more then 1GB/sec even when the underlying disk is a slow USB drive. What happens is that when a zero filled block comes in that a check is done to see if there is metadata for this block. When no existing metadata is present then btier will directly return success without doing anything else. We can do this since reads for blocks without metadata will be returned zero filled anyway.
Things to come:
In the near future more data awareness will be added. When btier starts to migrate a block from one tier to another it will detect a zero filled block. And instead of migrating this block it will remove the metadata and issue a discard to the underlying device.Snapshots and native asynchronous replication will be next.