Saturday, March 8, 2014

Setting up direct access to a block device from VM in Xen XCP (Debian 7.4 (wheezy))

There is no good documentation for XCP at the moment. Amount of documentation for such a complicated project is close to nothing when it comes to XCP on Debian (project Kronos). Citrix XenServer has a better support but I don't use XenServer, I use Debian. Therefore almost any simple task starts with "hours" of search in internet.
Normally you don't need direct access to a block device from a virtual machine, but in some cases it is very to convenient to use one. One of such cases is a file/backup server which needs access to a raid or just a huge hard disk with an existing file system.
Here is what should be done in order to make it work.
1. Create a directory which will contain links to the block devices visible in XEN.
mkdir /srv/xen-devices

2. Create storage repository for the block devices
xe sr-create name-label="Block devices" name-description="Block devices which we want to use directly in XEN" type=udev content-type=disk device-config:location=/srv/xen-devices
assign displayed uuid to shell variable SR

3. [Optional] If step 2 fails with the error message:
The SR could not be connected because the driver was not recognised.
driver: udev

then you need to fix it. Do the following:
cd /usr/lib/xcp/sm/
ln -s udevSR.py udevSR
/usr/lib/xcp/bin/xe-toolstack-restart
And then try again step 2.

4. Find a device you want to make visible in the Xen, for example, like this:
ls -l /dev/disk/by-path

Link it
ln -s /dev/disk/by-id/ata-some-device /srv/xen-devices/some-device

5. Rescan our storage repository
xe sr-scan uuid=$SR

6. List VDIs of the storage repository and spot the one with "Unrecognised bus type"
xe vdi-list sr-uuid=$SR

assign VDI¨s uuid to the VDI variable in shell.

7. Set name and label for the VDI to whatever you like:
xe vdi-param-set uuid=$VDI name-description="A real disk" 
xe vdi-param-set uuid=$VDI name-label="R-disk"

8. Create VBD which assign the VDI to the VM
xe vbd-create device=1 vm-uuid=$VM vdi-uuid=$VDI bootable=false mode=RW type=Disk
assign display uuid to the VBD variable

9. Attach it to the VM
xe vbd-plug uuid=$VBD

That's all. Now you can log into the virtual machine and check with 'dmesg' that a new device is available.


5 comments:

  1. Please continue this great work and I look forward to more of your awesome blog posts. best vacuum for cat litter on tile

    ReplyDelete
  2. 1) If possible, have someone else change the litter box. If you have to clean it, wear disposable gloves and wash your hands thoroughly with soap and warm water afterwards. silica cat litter

    ReplyDelete
  3. Are Yorkies good for first time dog owners?
    teacup yorkie for sale
    The Yorkshire terrier is a great starter dog for those who want a little lap dog. This breed is affectionate towards its owner and may even act protective around strangers.
    The Yorkie has a moderate energy level and only needs basic exercise.

    yorkie puppies for sale good for first time owners?
    yorkie puppies for sale
    It is the ideal pet for people who don't want to deal with pet fur at home or in their cars. This is the ideal pet for first time dog owners, since it trains easily and needs only moderate grooming maintenance. Yorkie poos are good with kids. It will play with them, is energetic and affectionate.

    Are Yorkie hypoallergenic? Yes
    Are Yorkie Poo good for first time owners?
    yorkie for sale
    It is the ideal pet for people who don't want to deal with pet fur at home or in their cars. This is the ideal pet for first time dog owners, since it trains easily and needs only moderate grooming maintenance. Yorkie poos are good with kids. It will play with them, is energetic and affectionate.
    teacup chihuahuas for sale

    Are Yorkie Poos good dogs?
    yorkies for sale

    ReplyDelete