Some thoughts on enhancing High Availability in oVirt
Caitlin Bestler
Caitlin.Bestler at nexenta.com
Wed Feb 15 17:08:35 UTC 2012
Perry Myers wrote:
>> As long as you expect the VM to enforce reliability on the raw storage
>> devices then you are going to have problems with restarting HA VMs. If
>> you switch your thinking to making the storage operations HA, then all
>> you need is a response cache.
>>
>> A restarted VM replays the operation, and the cached response is
>> retransmitted (or the operation is benignly re-applied). Without
>> defining the operations so that they can be benignly re-applied or
>> adding a response cache you will always be able to come up with some
>> order of failure that won't work. There is no cost-effective way to
>> guarantee that you snapshot the VM only when there is no in-flight
>> storage activity.
> How is this any different than a bare metal host crashing while writes are
> in flight either to a local disk or FC disk? When something crashes (be it
> physical or virtual) you're always going to lose some data that was in flight
> but not committed to disk (network has same issue). It's up to individual
> applications to be resilient to this.
Don't think of a storage write as being a write to a device. It is a request to
a service made in the context of a session. The session protocol includes the
necessary logic to complete the transaction even when a TCP connection is
broken. Examples of this include multi-connection iSCSI and NFSv4. Both of
which can be used to back a virtual disk.
When a VM is migrated you break the connections by it or were made on its
behalf. The pre-existing session logic will make in-progress operations retry
until they are successful.
The key is thinking of block storage as a service, rather than as a device.
More information about the Arch
mailing list