Archive/XCP Beginners Guide
By following this beginners guide, you will learn the outline concept of XCP by installing it and doing basic tasks without prior knowledge of XCP. Some basic knowledge about Linux, virtualization, networks and working on the command-line is necessary.
This guide also includes daily tasks like creating a new VM, which are being used explaining XCP and it's components.
What is XCP all about
By installing XCP from a single ISO-image, you get a ready-to-use virtualization plattform that consists from:
- Xen Hypervisor: providing the low level virtualization
- XAPI: the XCP toolstack which is used internally to manage the hypervisor
- xe: the command-line tool to configure and operate the XCP plattform
- xsconsole: a text-based UI to do basic tasks and configurations
The OS hosting all those components is based on CentOS (see XCP_Release_Features for current versions in use.
- 64bit x86 computer with at least 1GB of RAM
- Storage (HDD) with at least 40(?)GB to install XCP and some basic VMs (XCP itself will take a 4GB chunk)
- CD/DVD-Drive (netboot is possible, but not covered here)
- The XCP ISO, see Downloads for the latest build. The ISO is ~450MB (1.6-release)
- Any guest OS (ISO-image suffices) you want to install
Just boot from the burned CD and follow the steps. For a quick trial&play installations, the defaults are fine. For a full explanation please refer to XCP_Installation.
While the system is coming up, you'll see the XCP logo with a progess bar. After loading and initializing the system has finished XCP will show xsconsole on screen including some basic information about the status of the system.
The second screen (Alt+F2) will get you a system log, which is usually empty after a clean boot.
On the third screen (Alt+F3) you get a login page with additional info about how to connect with externals tools (e.g. XenCenter) including the IP-address and the SSL certificate fingerprint.
To return to the xsconsole screen, press Alt+F1.
Choose 'Local Command Shell' from xsconsole, or type Alt+F3 and log into XCP. If you open a shell via xsconsole, type 'exit' to return and do not start xsconsole on your own again.
The main tool to manage XCP on this level is xe. A short overview of possible sub-commands can be listed by "xe help". A second tool availble on this level is xl(1), as before "xl help" to get a glimpse on possibilities. (TODO: xl wikipage). Both tools are leveraged by TAB-completion, for xe not only sub-commands are expandable, but also parameters and possible values.
To gather realtime information on the usage of the system by VMs, use 'xentop'.
Basic xe concept
The main tool to operate XCP is xe. In short terms xe takes on argument as a subcommand, and if this subcommand needs further arguments, they have to follow suit. Possible subcommands and further arguments/values can be TAB-completed. See Command_Line_Interface for some syntax examples.
The subcommands are grouped in means what component you will be operating on. The grouping is done just by the naming of the subcommand, such as all subcommands operating on a VM start with 'vm-', e.g. "xe vm-list". Unless it would not make sense, each group has a 'list' feature, e.g. "xe vm-list", "xe network-list", ... .
Below is a selected list of components for xe:
- vm: virtual machines
- sr: storage repositories
- pbd: physical block device
- vbd: virtual block device
- vdi: virtual disk image
- pif: physical network interface
- vif: virtual network interface
- network: virtual networks
Any component with parameters, usually have an according component-param-* subcommand. These are 'list','get','set','add','clear','remove'; e.g. "xe sr-param-list". Since these commands must target a certain object, you need a unique identifier as an argument (called UUID).
Example: Let's get all set parameters from a certain Storage_Repository:
# xe sr-list ..some output.. uuid ( RO) : 5bfbefea-9dc0-b541-93d0-fb2717f70752 name-label ( RW): Local storage name-description ( RW): host ( RO): your-xcp-hostname type ( RO): lvm content-type ( RO): user ..more output.. # xe sr-param-list uuid=5bfbefea-9dc0-b541-93d0-fb2717f70752 uuid ( RO) : 5bfbefea-9dc0-b541-93d0-fb2717f70752 name-label ( RW): Local storage name-description ( RW): host ( RO): your-xcp-hostname allowed-operations (SRO): VDI.create; VDI.snapshot; PBD.create; PBD.destroy; plug; update; VDI.destroy; scan; VDI.clone; VDI.resize; unplug ..more output..
The -list subcommand has an option "--minimal" which will only output the UUIDs. Also it can take any parameter to lock down the search results:
# xe sr-list name-label=Local\ storage uuid ( RO) : 5bfbefea-9dc0-b541-93d0-fb2717f70752 name-label ( RW): Local storage name-description ( RW): host ( RO): your-XCP-hostname type ( RO): lvm content-type ( RO): user # xe sr-list name-label="Local storage" --minimal 5bfbefea-9dc0-b541-93d0-fb2717f70752
So.. let's combine this to get a full parameter-list for an SR called "Local storage" (which is the default for any XCP install):
xe sr-param-list uuid=$(xe sr-list name-label="Local storage" --minimal) uuid ( RO) : 5bfbefea-9dc0-b541-93d0-fb2717f70752 name-label ( RW): Local storage name-description ( RW): host ( RO): your-XCP-hostname allowed-operations (SRO): VDI.create; VDI.snapshot; PBD.create; PBD.destroy; plug; update; VDI.destroy; scan; VDI.clone; VDI.resize; unplug ..more output..
Note: $(command) puts the output of 'command' in the given location