How to emulate block devices with QEMU

Block devices are significant components of the Linux kernel. In this article, we introduce the usage of QEMU to emulate some of these block devices, including SCSI, NVMe, Virtio and NVDIMM. This ability facilitates Linux administrators or developers, to study, debug and develop the Linux kernel, as it is much easier to customize the configuration and topology of block devices with QEMU. In addition, it is also considerably faster to reboot a QEMU/KVM virtual machine than to reboot a baremetal server.