Converging QEMU and TCMU for Container Storage
Huamin Chen Red Hat
@root_fs https://github.com/rootfs https://huaminchen.wordpress.com/
Converging QEMU and TCMU for Container Storage Huamin Chen Red Hat - - PowerPoint PPT Presentation
Converging QEMU and TCMU for Container Storage Huamin Chen Red Hat @root_fs https://github.com/rootfs https://huaminchen.wordpress.com/ Agenda Background Collaboration with Andy Grover (TCMU) and Fem Zheng (QEMU) Scope
@root_fs https://github.com/rootfs https://huaminchen.wordpress.com/
○ Collaboration with Andy Grover (TCMU) and Fem Zheng (QEMU) ○ Scope ■ Focused on on-premise Network Storage ○ Container Storage ■ Docker and Kubernetes ○ QEMU Block Drivers
/data
Container Host OS Backend Storage (NFS, iSCSI, Gluster, Ceph ….) /mnt
Container Backend Storage (NFS, iSCSI, Gluster, Ceph ….) /data Docker Daemon Docker Volume Driver Bind mount /mnt Provisioning Mkfs mount
Container Backend Storage (NFS, iSCSI, Gluster, Ceph ….) /data /mnt Bind mount kubelet Provisioning Mkfs Fsck Mount
NFS iSCSI RBD Gluster EBS GCE PD Cinder Azure
○ Bringing easy storage access to clients is hard ○ No universal control or data plane exists
frameworks
○ Kubernetes, Mesos, Docker, OpenStack, vSphere...
○ Most drivers do the same thing inside the orchestrators ○ Extensive integration tests ○ Framework level changes are often visible to and impact on all drivers
○ There are plenty of qcow2 and vmdk images around. Enabling Containers directly to access these images eliminates data migration complexities.
○ QEMU already supports many storage drivers that Docker and Kubernetes try to support
○ Provisioning ○ Snapshot/restore ○ Resize ○ Encryption ○ Compression ○ Throttling ○ Replication
○ Some QEMU block drivers perform better than direct mount. ■ Gluster: no more FUSE bypassing overhead
/dev/sdb /dev/sdc
Guest OS Host OS KVM QEMU
NFS iSCSI
Gluster RBD
…….
Backend Storage (NFS, iSCSI, Gluster, Ceph ….)
fabrics
Container Host OS Tcmu loopback
QEMU handler
NFS iSCSI
Gluster RBD
…….
Backend Storage (NFS, iSCSI, Gluster, Ceph ….) /dev/sdb /dev/sdc
TCMU Runner
TCMU Core TCMU User
Container Host OS Tcmu loopback
QEMU
NFS iSCSI
Gluster RBD
…….
Backend Storage (NFS, iSCSI, Gluster, Ceph ….) /dev/sdb /dev/sdc TCMU Core TCMU User libtcmu
○ Decouple QEMU block layer from QEMU monolithic binary ■ Generate a qemu block shared library ○ Implement a QEMU block device handler for tcmu-runner ○ Create TCMU loopback device via targetcli ○ Bind mount to Docker Container