This is an old revision of the document!
See also OpenXenManager
http://www.citrix.com/xenserver
http://www.xen.org/products/cloudxen.html
Quick Installation Guide:
http://www.citrix.com/site/resources/dynamic/salesdocs/XenServer_Quick_Installation_Guide.pdf
Other documentation:
http://updates.xensource.com/XenServer/6.0.0/XenCenter?pool_6.0.0=1
wget http://support.citrix.com/servlet/KbServlet/download/28993-102-680294/XS60E001.zip wget http://support.citrix.com/servlet/KbServlet/download/29185-102-680311/XS60E002.zip wget http://support.citrix.com/servlet/KbServlet/download/29609-102-680420/XS60E003.zip wget http://support.citrix.com/servlet/KbServlet/download/29484-102-680350/XS60E004.zip for x in XS*.zip; do unzip $x; done for x in *.xsupdate; do xe patch-upload file-name=$x; done
Then install the updates one at a time, in order, using the UUID's printed by the last command:
xe patch-pool-apply uuid=<uuid-of-update>
Then reboot the XenServer host:
reboot
For a single XenServer, the above commands would suffice when run from the commmand line of the XenServer.
To update multiple XenServers, you would download the updates once, then push them to multiple servers by running additional commands specifying server/user/password on the 'xe patch-upload' and 'xe patch-pool-apply' commands.
This page has lots of info clearly explained:
http://www.shermann.name/2011/07/quick-tip-for-installing-ubuntu-as.html
Remote Access is a weak spot in XenServer since the primary management tool is XenCenter on Windows. XenCenter is not NAT-friendly.
Most XenCenter-to-XenServer communications happen on ports 22 (SSH) and 443 (HTTPS). Linux guest consoles use VNC starting on port 5901.
Since standard SSH is available, the first management tool to grab is 'xsconsole', the built-in text-mode console.
As for XenCenter, you can get partial functionality by simply forwarding port 443.
The easiest way I've found to access the console of a VM running on a XenServer behind NAT is:
You can determine which VNC port is assigned to which VM like this:
Log into the XenServer via SSH:
ssh -p 22222 -l root <your-remote-xenserver>
Determine the VNC port of your target VM:
xe vm-list xe vm-list name-label="<target-vm-name>" params=dom-id --minimal netstat -lp|grep -w <domid> |awk '{print $4}'|cut -d: -f2
Now you can forward the port(s) and access the VNC console of the VM from other terminals on your remote workstation:
ssh -p 22222 -l root -L <local-vnc-port>:localhost:<vm-vnc-port> <your-remote-xenserver> vncviewer localhost:<last-vnc-port-digit>
xe sr-list xe pbd-list sr-uuid=your-SR-uuid xe pbd-unplug uuid=your-PBD-uuid xe pbd-destroy uuid=your-PBD-uuid xe sr-forget uuid=your-SR-uuid
http://www.schirmacher.de/display/INFO/How+to+add+additional+disks+to+XenServer+host
http://www.xendesktopmaster.com/how-to-add-an-additional-local-disk-to-your-xenserver-5-5-host/
http://www.peppercrew.nl/index.php/2012/03/adding-extra-local-storage-space-to-xenserver-6-0/
It is advisable to partition the new disk with one large partition as opposed to using the bare drive for LVM because many tools will report an unpartitioned drive as 'empty'.
Verify the new local disk is visible to the XenServer host OS and create a single large partition of type 8e (Linux LVM). Use
gdisk
to create a GPT partition table for disks over 2TB.
gdisk /dev/sdx #where x is your new drive cat /proc/partitions ll /dev/disk/by-id
Survey the existing storage repositories:
xe sr-list
xe sr-create content-type=user type=lvm device-config:device=/dev/disk/by-id/scsi-SATA_ST31000528AS_9VP1JTGC-part1 shared=false name-label="Local storage 2"
After partitioning the drive (x) as per above:
vgdisplay vgextend VG_XenStorage-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /dev/sdx1
CIFS → Centos CIFS ISO library → \\192.168.0.6\nas_vg_1.nas_vol_1.no_backup\Centos
Set username and password.
You can't set folders using NFS, only shares, so .iso files must be in the top-level folder with NFS:
No_Backup NFS ISO library → 192.168.0.6:/mnt/nas_vg_1/nas_vol_1/no_backup
This will only create a small SR to hold smallish (rescue?) images.
DO NOT FILL the Dom0 partition too full!
Note that this will probably break and have to be fixed after a version upgrade!
mkdir -p /var/opt/xen/iso_library xe sr-create name-label="ISO Repository" type=iso device-config:location=/var/opt/xen/iso_library/ device-config:legacy_mode=true content-type=iso
To create an ISO image from a physical CD/DVD:
dd
to create the image and place it in the SRdd if=/dev/dvd of=/var/opt/xen/iso_library/Windows_Server_2008_R2_OEM.iso
Start with 5.4 32-bit template and use mostly defaults.
Install from URL:
http://mirrors.easynews.com/linux/centos/5.5/os/i386/
http://mirrors.easynews.com/linux/centos/5.5/os/x86_64/
Do NOT start the VM automatically.
Adjust the Description and Storage Name and Storage Description as needed.
Start the VM - be patient because some large files are transferred over the 'net.
URL:
http://mirrors.easynews.com/linux/debian/
then:
debian.mirrors.easynews.com
apt-get install openssh-server
URL:
http://distro.ibiblio.org/pub/linux/distributions/smeserver/releases/testing/8.0beta6/smeos/i386/
http://burm.net/2012/01/28/xenserver-tips-and-tricks-auto-start-your-vm/
In a simple setup, you can configure VMs to auto-start from the CLI:
xe pool-list xe pool-param-set uuid=UUID other-config:auto_poweron=true xe vm-list xe vm-param-set uuid=UUID other-config:auto_poweron=true
xe vm-list
xe appliance-create name-label=<name-label> [name-description=<name-description>] xe appliance-list
xe vm-param-set uuid=<VM-UUID> appliance=<appliance-uuid> order=0 start-delay=45 xe vm-param-set uuid=<VM-UUID> appliance=<appliance-uuid> order=1 start-delay=45
appliance-destroy uuid=<appliance-uuid>
http://www.virtues.it/2012/01/howto-autostart-xs-vapp/
xe appliance-list
Append these lines to /etc/rc.local:
sleep 20 /opt/xensource/bin/xe appliance-start uuid=[uuid-vapp]
Don't bother installing the Tools on a Linux guest if you don't have a Xen kernel.
uname -a
In XenCenter, select xs-tools.iso for the DVD drive.
mount /dev/xvdd /mnt /mnt/Linux/install.sh wget -q http://updates.vmd.citrix.com/XenServer/5.6.0/GPG-KEY -O- | apt-key add - /etc/init.d/xe-linux-distribution start
mount /dev/xvdd /mnt mv /etc/redhat-release /etc/redhat-release-sme echo "CentOS release 5 (Final)" > /etc/redhat-release /mnt/Linux/install.sh /etc/init.d/xe-linux-distribution start ln -s /etc/rc.d/init.d/xe-linux-distribution /etc/rc7.d/S26xe-linux-distribution
http://blog.vhowto.info/2010/10/17/xenserver-5-6-network-configuration-part-3/
Design Guide: http://support.citrix.com/servlet/KbServlet/download/27046-102-666250/XS-design-network_advanced.pdf
Move a XenServer Pool to a Different IP Subnet: http://support.citrix.com/article/CTX123477
http://www.fatmin.com/2011/11/how-to-create-a-dedicated-storage-nic-in-xenserver.html
http://www.fatmin.com/2012/07/xenserver-how-to-build-and-configure-a-dedicated-nfs-storage-bond.html
Use tab-completion for
xe
commands.
First we need to get the uuid of the PIF (physical interface) that we want to use:
xe pif-list host-name-label=<your_hostname>
Next we reconfigure our PIF:
xe pif-reconfigure-ip mode=static IP=<your-ip-on-nfs-vlan> netmask=<your-mask> uuid=<pif-uuid> xe pif-param-set disallow-unplug=true uuid=<pif-uuid> xe pif-param-set other-config:ManagementPurpose="Storage" uuid=<pif-uuid>
We may want to enable Jumbo Frames:
xe vif-list xe-switch-network-backend openvswitch xe vif-param-set uuid=<vif_uuid> other-config:mtu=9000
Alternatively you can use xe pif-forget
to remove the interface from the Xencenter database and configure it manually via the XenServer CLI like you would any other interface in Linux, however this could be more confusing in the long run.
xe vm-disk-list vm=<name_of_VM>
xe vm-list xe vm-param-set HVM-boot-policy="BIOS order" uuid=UUID of VM
Next, on the “General” tab, select the “Edit” button. On the “Startup Options” tab, ensure that “DVD-Drive” is moved to the top.
Before starting VM, make sure that the ISO that you want is in the VM's DVD-Drive located on the “Console” tab.
Proceed to use SUSE CD-ROM (or DVD) to upgrade, or Linux Rescue media, etc. Once all changes have been made to the VM, you will need to revert back the change to the VM's parameter with the following command:
xe vm-param-set HVM-boot-policy="" uuid=UUID of VM
Reboot VM
Final caveat… mouse is unavailable as it is “HVM mode” and no device has been loaded.
http://support.citrix.com/article/CTX121875
http://linuxnet.ch/groups/linuxnet/wiki/51a8b/XenServer_HowTo_Convert_HVM_to_PV_RHELSuSE.html
http://djlab.com/2010/10/convert-xenserver-hvm-to-pv-paravirtual/
See XenServer Backup.
http://forums.citrix.com/message.jspa?messageID=1367138
* Bonded NICs * Separate network paths for * VMs * Storage * Management * 6 NICs per server! * SAN/NAS storage
XenCenter - Port 443
http://66.165.176.77/servlet/KbServlet/download/2389-102-647335/Citrix_TCP_Ports_0167.pdf
iptables -nL -v --line-numbers
iptables -I RH-Firewall-1-INPUT 13 -p udp --dport 123 -j ACCEPT service iptables save
This sample firewall allows NTP and limits access to ports 22, 80 and 443 by the sourde IP.
/etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Mon Apr 9 00:15:34 2012 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [135:25337] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -i xenapi -p udp -m udp --dport 67 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 694 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.104.9.32/255.255.255.240 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.193.64.248/255.255.255.248 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 72.200.111.140 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.193.64.2 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.104.9.32/255.255.255.240 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.193.64.248/255.255.255.248 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -s 72.200.111.140 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.193.64.2 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 123 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.104.9.32/255.255.255.240 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.193.64.248/255.255.255.248 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -s 72.200.111.140 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -s 209.193.64.2 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Mon Apr 9 00:15:34 2012
Assumes:
1. Running LVM in the guest (you can do this without it, but it's difficult). 2. You're using a filesystem such as Ext3 on the partition you wish to expand which supports online expansion. 3. You're able to perform a backup just in case something goes wrong.
Steps:
5-11. Run pvresize /dev/xvdX“ (replacing “X” with the disk identified in step 4). 1. Shut down the virtual machine from XenCenter.
2. Resize the VDI from XenCenter to the appropriate size
3. Start the VM up.
4. Run “fdisk -l” to locate the virtual disk by looking at the size.
5. Run “fdisk /dev/xvdX” (replacing “X” with the disk identified in step 4).
6. Create a new partition (usually primary) using all available space. The default options will be sufficient. To do this, type “n”, follow the instructions to create the partition, then type “p” to verify the changes and then “w” to write and then “q” to quit.
7. Reboot the VM again to allow udev to create the appropriate /dev/ node for the partition just created.
8. Create a new physical volume by running “pvcreate /dev/xvdXY” (replacing “X” with the disk identified in step 4).
9. Locate the Volume Group containing the partition by running “mount”. Look for the partition you wish to resize in the list. You should also see a reference to the Volume Group (e.g. “VolGroup00”) and the Logical Volume (e.g. “LogVol00”) take note of these two items.
10. Extend your Volume Group with the newly added Physical Volume by running vgextend as shown: “vgextend VolGroupXX /dev/xvdXY” (Replace “VolGroupXX” with the Volume Group as identified in step 9, and ”/dev/xvdXY“ as identified in steps 4 and 6).
11. Confirm the Volume Group has free storage by running “vgs”. This should indicate the total size and the amount of storage free for allocation to logical volumes.
12. Expand the Logical Volume using all available free extents by running: lvextend -l+100%FREE /dev/VolGroupXX/LogVolYY Remember to change VolGroupXX and LogVolYY as appropriate.
13. Assuming ext3 or ext2 is being used (other filesystems will have their own tools for this purpose), resize the filesystem by running: resize2fs /dev/VolGroupXX/LogVolYY
14. As a precaution, reboot the system again checking the filesystem for errors: shutdown -r now -F
15. Observe the output of the “fsck” execution during startup and monitor for any errors that may indicate corruption.
When you install Redhat on XenServer it does not by default enable a virtual video device. You are only given the text console by default.
Citrix's Virtual Machine Installation Guide does document how to enable the typical X console using VNC.
Check to make sure that vnc-server and gdm are installed.
rpm -q vnc-server gdm
If they are not, install them.
yum install vnc-server gdm
Modify /etc/gdm/custom.conf
so the default server is a VNC server:
[servers] 0=VNC [server-VNC] name=VNC Server command=/usr/bin/Xvnc -SecurityTypes None -geometry 1024x768 -depth 16 -BlacklistTimeout 0 flexible=true
When GDM is running it should be listening on port 5900. Make sure that the iptables firewall allows access to this port from any machine running XenCenter or wanting to connect.
iptables -N vnc iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 5900 -j vnc iptables -A vnc -s 134.114.0.0/255.255.0.0 -p tcp -m state --state NEW -m tcp --dport 5900 -j ACCEPT iptables -A vnc -p tcp -m tcp -m state --state NEW --dport 5900 -j REJECT
Now everything is set up, but by default Redhat on XenServer starts up into runlevel 3. This does not by default start GDM. So you can modify the default runlevel in /etc/inittab or as I would recommend, simply use telinit 5 to start it and telinit 3 to turn it off. This saves memory and CPU cycles.
http://www.gossamer-threads.com/lists/xen/api/266896
http://dsstos.blogspot.com/2008/01/nfs-and-oracle-mount-options-noac.html
In an NFS VHD storage repository, VM images are stored as thin-provisioned VHD format files on a shared NFS target.
XenServer requires NFS Version 3 over TCP for remote storage use.