Virtualization in Grid'5000
		
		
		
		Jump to navigation
		Jump to search
		
See also:  KVM | KVM_on_production_environment
Purpose
This page presents ways to use KVM on production image.
Usage
First, submit the job using habitual oarsub command
jdoe@fnancy:~$ oarsub -I
Copy the kvm disk image to /tmp on the node
jdoe@griffon-37:~$ cp /grid5000/images/KVM/squeeze-x64-base.qcow2 /tmp/
Create Tun/Tap interface for your guest OS
jdoe@griffon-37:~$ sudo create_tap
- Tun/Tap interfaces are listed by issuing the command /sbin/ifconfig.
jdoe@griffon-37:~$ /sbin/ifconfig
[...]
tap0      Link encap:Ethernet  HWaddr 00:16:3e:db:c6:41  
          inet6 addr: fe80::58ff:a4ff:fe97:c6a8/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:29435 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Generate a random mac address for the Tun/Tap interface
- Use the following script
jdoe@griffon-37:~$ export MACADDR=`random_mac`
|   | Note | 
|---|---|
| The first three octets are important (identification for the virtualized network). Don't change it. | |
Now, you can run the guest OS using kvm
jdoe@griffon-37:~$ screen kvm -m 512 -hda /tmp/squeeze-x64-base.qcow2 -net nic,macaddr=$MACADDR-net tap,ifname=tap0,script=no -nographic
|   | Note | 
|---|---|
| In this example,  | |
Or, you can start the guest OS using libvirt
- Edit the domain file
eg : domain.xml
 <domain type='kvm'>
  <name>squeeze</name>
  <memory>524288</memory>
  <vcpu>1</vcpu>
  <os>
    <type arch="x86_64">hvm</type>
  </os>
  <clock sync="localtime"/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver type='qcow2'/>
      <source file='/tmp/squeeze-x64-base.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='ethernet'>
      <target dev='tap0'/>
      <script path='no'/>
      <mac address='00:16:3e:78:b8:04'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/ttyS0'/>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <source path='/dev/ttyS0'/>
      <target port='0'/>
    </console>
  </devices>
 </domain>
- Now, the guest OS can be started.
jdoe@griffon-37:~$ virsh create domain.xml
- You can use virshto manage your guest OS.
jdoe@griffon-37:~$ virsh list jdoe@griffon-37:~$ virsh console squeeze
Misc notes
- For the deployment of an important number of guest OS, you can use the subnet reservation. See also the virtual network interlink.
- Manage the console for all your guest OS with Screen
- Account: root:grid5000
- Use tunctlif you need to delete a Tun/Tap device.
jdoe@griffon-37:~$ /usr/sbin/tunctl -d tap0
- Some clusters don't have virtualization support in the BIOS. To check :
jdoe@griffon-37:~$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo