btier is a Linux kernel module that creates an auto tiering block device. It can be used to aggregate various types of storage into a virtual block device. btier will automatically optimize data placement on the underlying devices according to a policy that can be set. The size of a btier device is equal to the combined size of all block devices that were assigned to it. Only a small amount of space is used to store the metadata of the device. A btier device can contain up to 16 physical devices or files. Next to the built-in data migration engine, btier also provides an user space API the allows user to write custom data migration engines. Python, C, and bash example code is included. btier can use raw devices or (sparse) files (even hard mounted NFS) as part of the tiering device. The last tier can therefore reside on a deduplicating or compressing filesystem when needed. The devices that are used with btier should be redundant, since a btier device will lose all data when one of the underlying devices is lost. The performance of btier is determined by the devices that are used for the first tier. It is known to scale up to 130k IOPS with a RAID1 that consisted of modern PCIe SSD's. btier has support for SSD trim / discard, and can be configured in writeback or writethrough mode.