Description:
InnoDB bases its I/O on disk according to the value of innodb_io_capacity .
If InnoDB *assumes* that there is free disk i/o capacity available it performs "insert buffer merge" and/or "flushing buffer pool pages".
Although InnoDB is not aware of other programs/tasks using the disk and its assumption may be incorrect.
Taking a backup (LVM, or even mysqldump on the same disk) or moving files in the same filesystem can create contention on I/O with InnoDB.
While other programs/tasks use the disk it might be useful to dynamically control the IOPS performed by InnoDB setting the minimum amount of dirty pages in the buffer pool before writing on disk (innodb_min_dirty_pages_pct?)
How to repeat:
Take an LVM snapshot on a running system or move files around on the same disk, and monitor I/O activity.
Suggested fix:
Implement innodb_min_dirty_pages_pct to not performs any write from the buffer pool if this limit is not reached.
Eventually, allows innodb_io_capacity to accept values less then 100 is an option, but it can be dangerous if InnoDB *really* needs to flush pages.