Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
hypervisor:base:xcp-xapi [2015/03/29 00:36]
admin [Create and plug a VBD for the VDI]
hypervisor:base:xcp-xapi [2015/03/29 04:46]
admin [kpartx for Mapping Partition Tables]
Line 162: Line 162:
 REPLACE: “openvswitch” with “bridge” (or vice-versa). REPLACE: “openvswitch” with “bridge” (or vice-versa).
  
-===== Reboot ​=====+==== Reboot ====
  
 After making those changes a reboot will be needed After making those changes a reboot will be needed
Line 174: Line 174:
 It is often interesting to setup at least one VM to autostart at boot time. It is often interesting to setup at least one VM to autostart at boot time.
  
-Do do so you can follow this next procedure:+Do do so you can follow this next procedure, that is also described [[http://​sysadmin.compxtreme.ro/​autostart-vm-in-free-version-of-xenserver-6-x/​|on this post]]:
  
 === Gather the UUIDs of the pools you wish to auto-start === === Gather the UUIDs of the pools you wish to auto-start ===
Line 206: Line 206:
  
 > xe vm-param-set uuid=b7e42681-56c1-24cc-db45-9577981000b1 other-config:​auto_poweron=true > xe vm-param-set uuid=b7e42681-56c1-24cc-db45-9577981000b1 other-config:​auto_poweron=true
 +</​code>​
 +
 +=== Modify rc.local ===
 +The previous steps are documented to be enough when using Citrix'​s XenServer. As we're using XCP/XAPI, one supplementary step is required, having a script to start at boot time all vms with "​auto_poweron"​ in their other-config. This can be achieved by editing the //​**/​etc/​rc.local**//​ file, adding the following code:
 +
 +<​code>​
 +> nano /​etc/​rc.local
 +
 +#!/bin/sh -e
 +#
 +# rc.local
 +#
 +# This script is executed at the end of each multiuser runlevel.
 +# Make sure that the script will "exit 0" on success or any other
 +# value on error.
 +#
 +# In order to enable or disable this script just change the execution
 +# bits.
 +#
 +# By default this script does nothing.
 +
 +[ -e /proc/xen ] || exit 0
 +
 +XAPI_START_TIMEOUT_SECONDS=240
 +
 +# wait for xapi to complete initialisation for a max of XAPI_START_TIMEOUT_SECONDS
 +/​usr/​lib/​xcp/​bin/​xapi-wait-init-complete ${XAPI_START_TIMEOUT_SECONDS}
 +
 +if [ $? -eq 0 ]; then
 +
 +pool=$(xe pool-list params=uuid --minimal 2> /dev/null)
 +
 +auto_poweron=$(xe pool-param-get uuid=${pool} param-name=other-config param-key=auto_poweron 2> /dev/null)
 +if [ $? -eq 0 ] && [ "​${auto_poweron}"​ = "​true"​ ]; then
 +logger "$0 auto_poweron is enabled on the pool-- this is an unsupported configuration."​
 +
 +# if xapi init completed then start vms (best effort, don't report errors)
 +xe vm-start other-config:​auto_poweron=true power-state=halted --multiple >/​dev/​null 2>/​dev/​null || true
 +fi
 +fi
 +</​code>​
 +
 +You can test that the code works using the following command, it is important to validate its function as line 19 may need to be adapted, i.e: YMMV for /​usr/​lib/​xcp/​bin/​xapi-wait-init-complete
 +
 +<​code>​
 +> /​etc/​rc.local
 </​code>​ </​code>​
  
 ---- ----
-===== Create and Access ​VDI from Dom0 =====+===== Create and Access ​File Based VDI from Dom0 ===== 
 +---- 
 + 
 +The following procedure is based on the one described [[http://​discussions.citrix.com/​topic/​334905-mount-vm-disk-image-as-file-system-in-xenserver-6/​|in this post]]. 
 ---- ----
 ==== Create the Virtual Hard Disk (VDI) ==== ==== Create the Virtual Hard Disk (VDI) ====
Line 231: Line 281:
 </​code>​ </​code>​
  
 +We'll now have a new vhd file at:\\
 +//​**/​run/​sr-mount/<​sr-uuid>/<​vdi-uuid>​.vhd**//​
 +
 +Which, in our example, translates to:\\
 +/​run/​sr-mount/​26b9d87b-f344-1c8d-c5c5-a155d4e4e2e0/​72e00fc6-98bb-48fe-ab4d-b52d1ef721b5.vhd
 ---- ----
 ==== Create a VBD for the VDI and plug it ==== ==== Create a VBD for the VDI and plug it ====
 ---- ----
  
-=== Create VBD ===+=== Create VBD (virtual block device) ​===
 The newly created VBD will link our Dom0 to the VDI we just created, first let's recover our Dom0 UUID: The newly created VBD will link our Dom0 to the VDI we just created, first let's recover our Dom0 UUID:
 <​code>​ <​code>​
Line 244: Line 299:
 </​code>​ </​code>​
  
-Then let's create and link the VBD (virtual block device) ​to our Dom:+Then let's create and link the VBD to our Dom:
 <​code>​ <​code>​
 > xe vbd-create vm-uuid=76868e4b-4d82-320e-dd46-41340e6a67f3 vdi-uuid=72e00fc6-98bb-48fe-ab4d-b52d1ef721b5 device=autodetect > xe vbd-create vm-uuid=76868e4b-4d82-320e-dd46-41340e6a67f3 vdi-uuid=72e00fc6-98bb-48fe-ab4d-b52d1ef721b5 device=autodetect
Line 255: Line 310:
 <​code>​ <​code>​
 > xe vbd-plug uuid=7472f458-ba3f-7344-99a7-6660a39037a6 > xe vbd-plug uuid=7472f458-ba3f-7344-99a7-6660a39037a6
 +</​code>​
 +
 +At this stage, a new device will get listed under //​**/​dev/​sm/​backend/<​sr-uuid>/<​vdi-uuid>​**//​ like:
 +
 +Before vdb-plug instruction:​
 +<​code>​
 +ls -l /​dev/​sm/​backend/​26b9d87b-f344-1c8d-c5c5-a155d4e4e2e0/​
 +total 0
 +brw------- 1 root root 253, 0 Mar 29 01:38 4ea98b0d-b3fc-4f62-86bd-19a80f7d356b
 +</​code>​
 +
 +After vdb-plug instruction:​
 +<​code>​
 +ls -l /​dev/​sm/​backend/​26b9d87b-f344-1c8d-c5c5-a155d4e4e2e0/​
 +total 0
 +brw------- 1 root root 253, 0 Mar 29 01:38 4ea98b0d-b3fc-4f62-86bd-19a80f7d356b
 +brw------- 1 root root 253, 1 Mar 29 01:59 72e00fc6-98bb-48fe-ab4d-b52d1ef721b5
 </​code>​ </​code>​
  
 ---- ----
 +==== kpartx for Mapping Partition Tables ====
 +----
 +The kpartx command creates device maps from partition tables. Each guest storage image has a partition table embedded in the file.
  
 +We'll first need to install the package if it is not already available.
 +<​code>​
 +> apt-get install kpartx
 +</​code>​
  
 +=== Inspect an .img file ===
 +kpartx lets you inspect an img file, showing its contained partitions using the -l command:
 +<​code>​
 +> kpartx -l /​opt/​xen/​X-Local-ISO/<​image_file_name>​.img
 +loop0p1 : 0 122880 /dev/loop0 8192
 +loop0p3 : 0 1536000 /dev/loop0 131072
 +loop deleted : /dev/loop0
 +</​code>​
 +----
 +
 +=== Add the partition mappings to the recognized devices in /​dev/​mapper/​ ===
 +<​code>​
 +> kpartx -av /​run/​sr-mount/​26b9d87b-f344-1c8d-c5c5-a155d4e4e2e0/​72e00fc6-98bb-48fe-ab4d-b52d1ef721b5.vhd
 +</​code>​
 +==== END ====
 +----
  
 ++++ X11 & VNC viewer | ++++ X11 & VNC viewer |