From your symptoms, my guess is that the Linux kernel and Hyper-V are wrestling for management of I/O scheduling.
Documentation for Linux on Hyper-V is hit and miss, depending on your distribution. Start here: Supported Linux and FreeBSD virtual machines for Hyper-V on Windows Server and Windows. The landing page contains links to specific distributions. Most importantly, ensure that you have enabled any software components that make your distribution aware of Hyper-V, sometimes marked as Azure components. The base Linux kernel includes all the necessary pieces, but the distributions don't always distribute them in their core packages. You might need to search off of Microsoft official docs for your distribution with Hyper-V.
After following any distro-specific steps, go to Best Practices for running Linux on Hyper-V. A lot of that is not terribly useful, but pay attention to the section on the I/O scheduler. You want to switch to the "noop" or "none" scheduler. You might need to look up directions for your specific distribution.