[libvirt-users] Can a VM tell what host it's on?

Whit Blauvelt whit.virt at transpect.com
Thu Feb 2 19:43:56 UTC 2012


Thanks Eric and Bryan. 

What I'm interested in is an unconventional failover arrangement. Say there
are hosts 1 and 2, with guest A in a DRBD-mirrored partition on each. Then
when guest A starts, as it happens, on host 1, it initiates a ucarp instance
locally, and also causes a linked ucarp instance to run on host 2. In the
event host 2 sees that guest A has become unavailable (with diverse checks
to be positive) it starts it on host 2. It gets more elaborate, but that's
the rough outline.

Obviously this could be done by the guest, on starting, causing both hosts
to run a script whose logic is: if I'm _not_ the host of this VM at present,
start my side of the ucarp link with it. Thus my question whether the guest
already has enough internal knowledge to simply address the other host,
rather than broadcast to both. If so, it would be the simplest route to
implementation.

I'm sure there are many arguments to be made for not doing it this way at
all. Still this way may have an advantage of simplicity, if done right,
compared to the more-usual Pacemaker/OpenAIS setups, at least in the
limited, well-defined context where I want to run it.

A related question to my first one: The design here is for resurrection
rather than live migration. But live migration would have to be dealt with.
When a guest is live-migrated, is there any internal clue that the migration
has occurred? This is not the question of whether the guest knows _which_
host it's on. It's the question of whether the guest knows, or can know,
"Hey, I've just changed hosts!"

I get it that nothing that a guest is doing by way of its normal tasks
should depend on its state vis-a-vis the host of the moment. Still, there
may be exceptional tasks like this where it can be useful if it knows its
context. For instance, I'm expecting that within a year we may be using
Gluster's geo-replication for some VMs in a DR context. If a critical VM
comes up on a host on the other coast, it could be useful for some of the
processes running there to know this is the context. It's not that they
should _depend_ on knowing, but if they do know, it may well be we'd like
them to adjust their behavior automatically according to location.

Whit

On Thu, Feb 02, 2012 at 11:52:37AM -0700, Eric Blake wrote:
> On 02/02/2012 11:33 AM, Whit Blauvelt wrote:
> > Is there a way internal to a KVM VM to know which host it's running on? 
> 
> No.  The ideal hypervisor is one where the guest doesn't even know it is
> running as a virtual machine.  And consider live migration - a guest
> might not be running on the same host over its lifetime.  Therefore,
> there should be nothing that requires a guest to know which host it is
> running on.
> 
> > 
> > It could send a command via ssh to virsh on a host, and learn from that
> > whether the host currently has it running. But is there something within the
> > VM itself which will reveal this? 
> 
> Why do you think you need it?  Perhaps if you ask a better question
> about what you are really trying to solve, we can give a better answer.





More information about the libvirt-users mailing list