qcow2的读写更多的是借助qemu本身的协程机制实现并发,在读写文件的时候,会启动一个worker线程去执行读写,如果使用io thread 会在io thread里aio_poll,如果没有使用iothread,也在主线程里poll。worker进程使用的是pwrite/pread读写文件,qemu-img的同步io的worker进程使用的是pwritev/preadv,读写完成后,worker进程会退出,poll会执行后面的底半部和aio_handler,读写并不会阻塞主线程或者iothread线程
rbd的读写借助于librbd的异步回调来实现,同样写不会因为write read阻塞当前线程。当读写io完成后,回调函数根据参数往下面来执行相应的操作。
qcow2类型磁盘 qemu侧程序流程:

rbd qemu侧流程:
本文深入探讨了qcow2和rbd两种磁盘类型的IO处理机制。qcow2通过qemu的协程机制实现并发读写,利用worker线程执行IO操作,确保主线程不被阻塞。rbd则依赖于librbd的异步回调,避免writeread阻塞,完成IO后执行相应操作。两者均采用非阻塞方式提升效率。

被折叠的 条评论
为什么被折叠?



