[libvirt-users] rebooting guests

Alexander Binun binun at cs.bgu.ac.il
Sun Jul 27 14:52:50 UTC 2014


Dear Friends, 
   Thanks for your suggestions. I have implemented them; all works!

Now the security module at the hypervisor (KVM)  analyzed the data coming from guest and decided that this guest malfunctions and must be rebooted. When rebooting I address the VM being rebooted by its name: first getting the domain by name (virDomainLookupByName) and then reboot the domain (virDomainReset). 

The problem is: how can I get the VM name, having the malfunctioning VCPU (struct kvm_vcpu) as the context ?

I retrieve VCPUs using the following loop:

raw_spin_lock(vm_lock);
list_for_each_entry(kvm, vms_list, vm_list) 
  {
    for (i = 0; i < kvm->online_vcpus.counter; i++) 
    {
      ...
    }        
  } 
  raw_spin_unlock(vm_lock);

Thanks in advance,
    Alex BInun







On Wed 28 May 21:44 2014 Dave Allan wrote:
> On Wed, May 28, 2014 at 11:28:19AM -0600, Eric Blake wrote:
> > On 05/28/2014 09:14 AM, Alexander Binun wrote:
> > 
> > [can you convince your mailer to wrap long lines?]
> > 
> > > 
> > > I have a program running on a VM guest. Its output is valuable (for VM introspection) so I want to let the host module know about it. I prefer to redirect  ' stdio" of a guest into a device at the host (a text file or my device that has the name "mydev" 
> > > and the driver is written for it). 
> > > 
> > > I have the XML definition file for my VM in /etc/libvirt/qemu. I have added the section:
> > > 
> > >     <serial type="file">
> > >       <source path="/var/log/vm/vml.log"/>
> > >       <target port="0"/>
> > >     </serial>
> > >   
> > > into the /devices section.
> > > 
> > > That is I want the stdio to be streamed into the file /var/log/vm/vml.log at the host.
> > > 
> > > Then I run simple textual commands at the guest (ls, pwd and so on).
> > 
> > How are you getting into your guest to run those commands?  Did you
> > connect to your guest's serial console, or is it in a gui window, or via
> > an ssh session, or...?  Are you sure the commands you are executing have
> > the guest's /dev/ttyS0 as their stdout?
> 
> Your xml is correct and I think Eric's suggestion is right: if I put
> that <serial> snippet into a guest's XML and then echo "foo" >
> /dev/ttyS0 in the guest, I see "foo" in the host vml.log.
> 
> > > But I do not see /var/log/vm/vml.log created at the host.
> > 
> > I'm not sure whether libvirt will pre-create the file, or whether it
> > insists that the file already exists. Maybe others can chime in.  I know
> > Dave Allan has done some work with python scripts that faithfully
> > capture all text output to the guest's serial console, although I don't
> > have a handy link to that sample script.
> 
> The example script is consolecallback.py[1] but it really deals more
> with auto connecting to a serial console when a VM is booted than with
> doing anything special with the output, although it's useful if you
> have a VM going up and down and you want all its console output.
> 
> Dave
> 
> [1]
> http://libvirt.org/git/?p=libvirt-python.git;a=blob;f=examples/consolecallback.py;hb=HEAD
> 
> > -- 
> > Eric Blake   eblake redhat com    +1-919-301-3266
> > Libvirt virtualization library http://libvirt.org
> > 
> 
> 







More information about the libvirt-users mailing list