2010년 6월 17일 목요일

Adding Disk, CDROM and DVD Devices to a Running Xen domainU Guest System

Requirements for Xen domainU Block Device Attachment

Before a block device can be attached to running domainU guest system there are a number of rules which must be observed. These important rules are as follows:

  • The device to be attached must be mounted on the domain0 host system.
  • The device must not already be attached in write mode to any other domainU systems.
  • The domainU system must possess the appropriate drivers to read the filesystem located on the device. This is not usually an issue for Linux filesystems and CD/DVD devices but may be an issue for more rare and exotic filesystems.
  • The device name by which the domainU system will access the device must begin with xdv (for example /dev/xvda1).

[edit] An Overview of xm block-attach

Devices are attached to domainU guest system using the xm block-attach command the syntax for which is as follows:

xm block-attach <Domain Id> <Backend Device> <Frontend Device> <Mode>

Each of the commandline arguments warrants a brief explanation:

  • <Domain Id> is the id of the domainU to which the device is to be attached (this can be obtained by running xm list)
  • <Backend Device> represents the device as it is represented on the domain0 host system prefixed with the type. For example:
phy:/dev/sr0
  • <Frontend Device> is the device name for access on the domainU guest system. This name must be prefixed with xvd otherwise the device will not be visible to the domainU guest. For example:
/dev/xvda2
  • <Mode> is the read/write mode under which the device is to be attached. Options are r for read-only, w for read/write and w! for read/write with sharing.

[edit] Attaching a Device to a domainU Guest

With the above information in mind we can now attach a device to a domainU guest. The first piece of information we need is the ID of the guest domain. This can be obtained using the xm list command. The following output shows only one guest running on our system and it has an ID of 3:

xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   875     1     r-----    790.2
XenGuest1                                    3   128     1     ------    190.5

Next we need to know the name by which the device to be added is accessed on the domain0 host (otherwise known as the backend device). For the purposes of this chapter we will assume that we are adding a DVD drive that is visible to the domain0 host system as /dev/sr0. This could equally be a disk drive partition such as /dev/hdb1 or /dev/sda3.

Before performing the attachment, we need to decide on a device name by which the device will be accessible on the domainU system (known as the frontend device). As mentioned previously the device name must be an xvd device (for example /dev/xvda2). Failure to use an xvd device type will result in the device not appearing in the domainU guest. For this chapter we will specify /dev/xvda2.

With the above information gathered we will attach the device. Since we are attaching a DVD drive we will specify read-only mode:

xm block-attach 3 phy:/dev/sr0 /dev/xvda2 r

The device is now attached the domainU system with an ID of 3 and should be accessible from within that guest environment as /dev/xvda2.

[edit] Mounting the Device in the domainU Guest

Once the device attachment has been performed the next step is to mount the device on the domainU system. Log into the domainU guest and check the new device is visible and configured:

ls -l /dev/xvda2
brw-r----- 1 root disk 202, 2 2008-05-02 15:46 /dev/xvda2

With the device attached it is ready to be mounted:

mkdir /tmp/mount
mount /dev/xvda2 /tmp/mnt

[edit] Detaching a Device from the domainU Guest

To detach a block device from the domainU first unmount it from the guest:

umount /tmp/mnt

Once unmounted from the domainU system move to the domain0 host and detach it using the xm block-detach specifying the domainU ID and the frontend device name (in this case /dev/xvda2):

xm block-detach 3 /dev/xvda2

댓글 없음:

댓글 쓰기