A method of live migration of virtual machines on nodes interconnected via a computer network in a distributed computing system, the method comprising: suspending a source virtual machine on a first node, upon being suspended, the source virtual machine having blocks of data contained in a source virtual disk on the first node; instantiating and starting a destination virtual machine on a second node, characterised in that the destination virtual machine includes a destination virtual disk having a base caching disk as a parent and a differencing disk as a child of the base caching disk; receiving, at the second node, a request from the started destination virtual machine for one of the blocks of data of the source virtual machine; and in response to receiving the request from the started destination virtual machine, determining whether the requested block of data is available at the differencing disk; and in response to determining that the requested block of data is not available at the differencing disk, determining whether the base caching disk on the second node contains the requested block of data; in response to determining that the base caching disk does not contain the requested block of data: retrieving, via the computer network, the requested block of data from the source virtual disk of the first node, the source virtual disk is a parent to the base caching disk of the started destination virtual machine; writing the retrieved block of data to one or more empty sectors of the base caching disk; upon completion of writing the retrieved block of data, marking the one or more sectors containing the written block of data as read-only on the base caching disk; and providing a copy of the retrieved block of data from the base caching disk to the destination virtual machine, thereby enabling operation of the destination virtual machine without waiting for retrieving other blocks of data of the source virtual machine. suspending a source virtual machine on a first node, upon being suspended, the source virtual machine having blocks of data contained in a source virtual disk on the first node; instantiating and starting a destination virtual machine on a second node, characterised in that the destination virtual machine includes a destination virtual disk having a base caching disk as a parent and a differencing disk as a child of the base caching disk; receiving, at the second node, a request from the started destination virtual machine for one of the blocks of data of the source virtual machine; and in response to receiving the request from the started destination virtual machine, determining whether the requested block of data is available at the differencing disk; and in response to determining that the requested block of data is not available at the differencing disk, determining whether the base caching disk on the second node contains the requested block of data; in response to determining that the base caching disk does not contain the requested block of data: retrieving, via the computer network, the requested block of data from the source virtual disk of the first node, the source virtual disk is a parent to the base caching disk of the started destination virtual machine; writing the retrieved block of data to one or more empty sectors of the base caching disk; upon completion of writing the retrieved block of data, marking the one or more sectors containing the written block of data as read-only on the base caching disk; and providing a copy of the retrieved block of data from the base caching disk to the destination virtual machine, thereby enabling operation of the destination virtual machine without waiting for retrieving other blocks of data of the source virtual machine. retrieving, via the computer network, the requested block of data from the source virtual disk of the first node, the source virtual disk is a parent to the base caching disk of the started destination virtual machine; writing the retrieved block of data to one or more empty sectors of the base caching disk; upon completion of writing the retrieved block of data, marking the one or more sectors containing the written block of data as read-only on the base caching disk; and providing a copy of the retrieved block of data from the base caching disk to the destination virtual machine, thereby enabling operation of the destination virtual machine without waiting for retrieving other blocks of data of the source virtual machine.