Virtualization in Grid'5000: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| mNo edit summary | |||
| Line 7: | Line 7: | ||
| = Usage = | = Usage = | ||
| === First submit the job | === First, submit the job using habitual oarsub command === | ||
|   jdoe@fnancy:~$ oarsub -I |   jdoe@fnancy:~$ oarsub -I | ||
| Line 37: | Line 37: | ||
| }} | }} | ||
| === Now, you can run the guest OS  | === Now, you can run the guest OS using kvm === | ||
|   jdoe@griffon-37:~$ screen kvm -m 512 -hda /tmp/squeeze-x64-base.img -net nic,macaddr=$MACADDR -net tap,ifname=tap0,script=no -nographic |   jdoe@griffon-37:~$ screen kvm -m 512 -hda /tmp/squeeze-x64-base.img -net nic,macaddr=$MACADDR -net tap,ifname=tap0,script=no -nographic | ||
| === Or, you can start the guest OS using libvirt === | |||
| * Edit the domain file | |||
| eg : <code class="file">domain.xml</code> | |||
|  <domain type='kvm'> | |||
|    <name>squeeze-vm1</name> | |||
|    <memory>524288</memory> | |||
|    <vcpu>1</vcpu> | |||
|    <os> | |||
|      <type arch="x86_64">hvm</type> | |||
|    </os> | |||
|    <clock sync="localtime"/> | |||
|    <devices> | |||
|      <disk type='file' device='disk'> | |||
|        <source file='/tmp/squeeze-x64-base.img'/> | |||
|        <target dev='hda'/> | |||
|      </disk> | |||
|      <interface type='ethernet'> | |||
|        <target dev='tap0'/> | |||
|        <script path='no'/> | |||
|        <mac address='00:16:3e:82:a6:ea'/> | |||
|      </interface> | |||
|      <graphics type='vnc' port='5900'/> | |||
|    </devices> | |||
|  </domain> | |||
| * Now, the guest OS can be started. | |||
|  jdoe@griffon-37:~$ virsh create domain.xml | |||
| * You can use <code class="command">virsh</code> to manage your guest OS. | |||
|  jdoe@griffon-37:~$ virsh list  | |||
| {{Note|text= Use the mac address generated with the script  | |||
| }} | |||
| = Misc notes  = | = Misc notes  = | ||
| * Manage console for all your guest OS with [[Screen]] | * Manage the console for all your guest OS with [[Screen]] | ||
| * Use <code class="command">tunctl</code> if you need to delete a Tun/Tap device. | * Use <code class="command">tunctl</code> if you need to delete a Tun/Tap device. | ||
|   jdoe@griffon-37:~$ /usr/sbin/tunctl -d tap0 |   jdoe@griffon-37:~$ /usr/sbin/tunctl -d tap0 | ||
Revision as of 14:16, 30 November 2011
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.img /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 5a:ff:a4:97:c6:a8  
          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:~$ MACADDR="00:16:3e:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\).*$/\1:\2:\3/')"; echo $MACADDR
|   | 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.img -net nic,macaddr=$MACADDR -net tap,ifname=tap0,script=no -nographic
Or, you can start the guest OS using libvirt
- Edit the domain file
eg : domain.xml
<domain type='kvm'>
  <name>squeeze-vm1</name>
  <memory>524288</memory>
  <vcpu>1</vcpu>
  <os>
    <type arch="x86_64">hvm</type>
  </os>
  <clock sync="localtime"/>
  <devices>
    <disk type='file' device='disk'>
       
      <target dev='hda'/>
    </disk>
    <interface type='ethernet'>
      <target dev='tap0'/>
      <script path='no'/>
      <mac address='00:16:3e:82:a6:ea'/>
    </interface>
    <graphics type='vnc' port='5900'/>
  </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
Misc notes
- Manage the console for all your guest OS with Screen
- Use tunctlif you need to delete a Tun/Tap device.
jdoe@griffon-37:~$ /usr/sbin/tunctl -d tap0