[libvirt] How to avoid failure of migration/restoring/starting if cdrom is ejected inside guest?

Osier Yang jyang at redhat.com
Tue Aug 9 01:58:10 UTC 2011


于 2011年08月09日 01:53, Eric Blake 写道:
> On 08/08/2011 09:22 AM, Dave Allan wrote:
>>> If the medium is ejected inside guest, and the source of the medium
>>> is removed or renamed. libvirt will still tries to do cgroup setting
>>> before starting the guest on dest side, that's the real problem. As
>>> one will think it's reasonable to remove the source if it's
>>> ejected. And we can't prevent one remove the source during the
>>> migration (supposing the removing is before libvirt tries to do
>>> cgroup setting on dest host.)
>>
>> Agreed, but that's a problem that I don't think we can solve except by
>> documenting the behavior.  The libvirt documentation has always
>> clearly stated that the storage configuration must be the same on the
>> src and dst hosts.  We are discussing altering that constraint here in
>> the case of medium that has been ejected, but I think we can be clear
>> that the constraint is not being removed and that a guest's storage
>> configuration must not be changed while a migration is in progress.
>
> I thought the qemu folks were working on a series of patches to make 
> cd tray state part of the migration information.  That is, if you 
> start a migration, then a guest ejects the cd, then the destination 
> will correctly see the ejected cd, even though the destination was 
> started with the tray closed.  That is, libvirt should not have to 
> poll on cd tray state in order to correctly migrate, but should be 
> able to poll on cd tray state in order to report tray state to the 
> curious user.
>

Agree. I don't known they are working out such patches yet. Only known they
are trying to work out some event for the tray state.

> The migration aspect of cd tray state generally has to be solved by 
> qemu - there's nothing libvirt can do if the guest changes cd tray 
> state after migration has started but before it has completed, unless 
> libvirt can poll the source after it has paused but before the 
> destination has been unpaused and issue appropriate monitor commands 
> on the destination to resync state; but that should only be necessary 
> if qemu doesn't migrate cd tray state in the first place, and requires 
> that qemu support tray state monitor commands for libvirt to use.
>

As far as I known, qemu still can only report the medium is ejected or
inserted soon via "info block", and without minitor commands to change
the tray state, or I missed something?

Osier




More information about the libvir-list mailing list