|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] PV DomU can't access disk from storage driver domain
On Fri, Sep 18, 2015 at 3:23 AM, Roger Pau Monnà <roger.pau@xxxxxxxxxx> wrote:
> El 17/09/15 a les 23.08, Alex Velazquez ha escrit:
>> Hi all,
>>
>> I've been trying to set up a storage driver domain that can provide a
>> disk to another DomU, but am having trouble getting it to work. If
>> anyone has experience with this and could provide some suggestions,
>> I'd be grateful.
>>
>> I'm running Xen 4.6.0-rc3. Both the storage driver domain
>> ("storagedd") and the other DomU ("client") are PV guests running
>> Ubuntu 14.04.3 (kernel 3.13.0-63-generic).
>>
>> To set up the storage domain, I followed instructions from the
>> "Storage driver domains" page on the wiki
>> (http://wiki.xenproject.org/wiki/Storage_driver_domains) and got some
>> additional ideas from "XCP storage driver domains"
>> (http://wiki.xenproject.org/wiki/XCP_storage_driver_domains). I'll
>> summarize my steps here:
>>
>> 1) clone xen.git repository (using the 4.6.0-rc3 release, same as Dom0)
>> 2) make tools & make install tools
>> 3) apt-get install blktap-utils
>> 4) mount -t xenfs xenfs /proc/xen
>> 5) modprobe xen-blkback & modprobe xen-gntalloc & modprobe xen-gntdev
>> (not sure if any/all of these are necessary, or if they're handled
>> automatically)
>>
>> My testing so far has been without PCI passthrough. I've tried with
>> files located on an NFS share mounted by storagedd (qcow2 and raw),
>> files located on storagedd's filesystem (again, qcow2 and raw), as
>> well a block device (loop device created using losetup).
>>
>> Here is the xl config file for "storagedd":
>>
>> xenuser@xenhost:~$ cat storagedd.cfg
>> name = "storagedd"
>> builder = "generic"
>> kernel = "/usr/local/lib/xen/boot/pv-grub-x86_64.gz"
>> extra = "(hd0,0)/boot/grub/menu.lst"
>> driver_domain = 1
>> vcpus = 1
>> memory = 2048
>> disk = [
>> "format=qcow2,vdev=xvda,access=rw,target=/var/lib/xen/images/storagedd.qcow2"
>> ]
>> vif = [ "mac=00:16:3e:36:00:01,bridge=xenbr0,script=vif-openvswitch" ]
>>
>> And here is the xl config file for "client":
>>
>> xenuser@xenhost:~$ cat client.cfg
>> name = "client"
>> builder = "generic"
>> kernel = "/usr/local/lib/xen/boot/pv-grub-x86_64.gz"
>> extra = "(hd0,0)/boot/grub/menu.lst"
>> vcpus = 1
>> memory = 1024
>> disk = [
>> "format=raw,backendtype=phy,backend=storagedd,vdev=xvda,target=/dev/loop0"
>> ]
>> vif = [ "mac=00:16:3e:37:00:02,bridge=xenbr0,script=vif-openvswitch" ]
>>
>> storagedd starts up and runs normally. Here are the Xen kernel modules
>> that are loaded:
>>
>> admin@storagedd:~$ sudo lsmod | grep xen
>> xen_gntalloc 13626 0
>> xen_gntdev 18675 0
>> xen_blkback 37209 0
>> xenfs 12978 1
>> xen_privcmd 13243 1 xenfs
>>
>> Initially, there are no backend entries in xenstore:
>>
>> admin@storagedd:~$ sudo xenstore-ls /local/domain/1/backend
>> xenstore-ls: xs_directory (/local/domain/1/backend): No such file or
>> directory
>>
>> Then I start the client. Here are some excerpts of the output of "xl
>> -vvv create client.cfg":
>>
>> xenuser@xenhost:~$ sudo xl -vvv create client.cfg
>> Parsing config from xlcfg/client.cfg
>> libxl: debug: libxl_create.c:1556:do_domain_create: ao 0x21d46d0:
>> create: how=(nil) callback=(nil) poller=0x21d3b10
>> libxl: debug: libxl_device.c:269:libxl__device_disk_set_backend: Disk
>> vdev=xvda spec.backend=phy
>> libxl: debug: libxl_device.c:201:disk_try_backend: Disk vdev=xvda, is
>> using a storage driver domain, skipping physical device check
>> libxl: debug: libxl_create.c:944:initiate_domain_create: running bootloader
>> libxl: debug: libxl_bootloader.c:330:libxl__bootloader_run: no
>> bootloader configured, using user supplied kernel
>> libxl: debug: libxl_event.c:691:libxl__ev_xswatch_deregister: watch
>> w=0x21d19b0: deregister unregistered
>> domainbuilder: detail: xc_dom_allocate:
>> cmdline="(hd0,0)/boot/grub/menu.lst", features="(null)"
>> libxl: debug: libxl_dom.c:623:libxl__build_pv: pv kernel mapped 0
>> path /usr/local/lib/xen/boot/pv-grub-x86_64.gz
>> domainbuilder: detail: xc_dom_kernel_file:
>> filename="/usr/local/lib/xen/boot/pv-grub-x86_64.gz"
>> [....]
>> domainbuilder: detail: launch_vm: called, ctxt=0x7f9631c10004
>> domainbuilder: detail: xc_dom_release: called
>> libxl: debug: libxl_device.c:269:libxl__device_disk_set_backend: Disk
>> vdev=xvda spec.backend=phy
>> libxl: debug: libxl_device.c:201:disk_try_backend: Disk vdev=xvda, is
>> using a storage driver domain, skipping physical device check
>> libxl: debug: libxl_event.c:639:libxl__ev_xswatch_register: watch
>> w=0x21d2df0 wpath=/local/domain/1/backend/vbd/3/51712/state token=3/0:
>> register slotnum=3
>> libxl: debug: libxl_create.c:1573:do_domain_create: ao 0x21d46d0:
>> inprogress: poller=0x21d3b10, flags=i
>> libxl: debug: libxl_event.c:576:watchfd_callback: watch w=0x21d2df0
>> wpath=/local/domain/1/backend/vbd/3/51712/state token=3/0: event
>> epath=/local/domain/1/backend/vbd/3/51712/state
>> libxl: debug: libxl_event.c:884:devstate_callback: backend
>> /local/domain/1/backend/vbd/3/51712/state wanted state 2 still waiting
>> state 1
>> libxl: debug: libxl_event.c:576:watchfd_callback: watch w=0x21d2df0
>> wpath=/local/domain/1/backend/vbd/3/51712/state token=3/0: event
>> epath=/local/domain/1/backend/vbd/3/51712/state
>> libxl: debug: libxl_event.c:880:devstate_callback: backend
>> /local/domain/1/backend/vbd/3/51712/state wanted state 2 ok
>> libxl: debug: libxl_event.c:677:libxl__ev_xswatch_deregister: watch
>> w=0x21d2df0 wpath=/local/domain/1/backend/vbd/3/51712/state token=3/0:
>> deregister slotnum=3
>> libxl: debug: libxl_device.c:938:device_backend_callback: calling
>> device_backend_cleanup
>> libxl: debug: libxl_event.c:691:libxl__ev_xswatch_deregister: watch
>> w=0x21d2df0: deregister unregistered
>> libxl: debug: libxl_device.c:993:device_hotplug: Backend domid 1,
>> domid 0, assuming driver domains
>> libxl: debug: libxl_device.c:996:device_hotplug: Not a remove, not
>> executing hotplug scripts
>> libxl: debug: libxl_event.c:691:libxl__ev_xswatch_deregister: watch
>> w=0x21d2ef0: deregister unregistered
>> libxl: debug: libxl_event.c:639:libxl__ev_xswatch_register: watch
>> w=0x21d6010 wpath=/local/domain/0/backend/vif/3/0/state token=3/1:
>> register slotnum=3
>> [....]
>>
>> Meanwhile, client's console prints the following:
>>
>> xenuser@xenhost:~$ sudo xl console client
>> Xen Minimal OS!
>> start_info: 0xba4000(VA)
>> nr_pages: 0x40000
>> shared_inf: 0xa166c000(MA)
>> pt_base: 0xba7000(VA)
>> nr_pt_frames: 0xb
>> mfn_list: 0x9a4000(VA)
>> mod_start: 0x0(VA)
>> mod_len: 0
>> flags: 0x0
>> cmd_line: (hd0,0)/boot/grub/menu.lst
>> stack: 0x9630e0-0x9830e0
>> MM: Init
>> _text: 0x0(VA)
>> _etext: 0x75374(VA)
>> _erodata: 0x90000(VA)
>> _edata: 0x95d20(VA)
>> stack start: 0x9630e0(VA)
>> _end: 0x9a36e0(VA)
>> start_pfn: bb5
>> max_pfn: 40000
>> Mapping memory range 0x1000000 - 0x40000000
>> setting 0x0-0x90000 readonly
>> skipped 1000
>> MM: Initialise page allocator for dad000(dad000)-40000000(40000000)
>> MM: done
>> Demand map pfns at 40001000-0x2040001000.
>> Heap resides at 2040002000-4040002000.
>> Initialising timer interface
>> Initialising console ... done.
>> gnttab_table mapped at 0x40001000.
>> Initialising scheduler
>> Thread "Idle": pointer: 0x0x2040002050, stack: 0x0xfc0000
>> Thread "xenstore": pointer: 0x0x2040002800, stack: 0x0xfd0000
>> xenbus initialised on irq 1 mfn 0x240fa5
>> Thread "shutdown": pointer: 0x0x2040002fb0, stack: 0x0xfe0000
>> main.c: dummy main: start_info=0x9831e0
>> Thread "main": pointer: 0x0x2040003760, stack: 0x0xff0000
>> "main" "(hd0,0)/boot/grub/menu.lst"
>> vbd 51712 is hd0
>> ******************* BLKFRONT for device/vbd/51712 **********
>>
>>
>> backend at /local/domain/1/backend/vbd/3/51712
>>
>>
>> And it never advances beyond this point. "xl list" indicates that
>> client is blocked and waiting, and it remains at 0.1s of CPU time:
>>
>> xenuser@xenhost:~$ sudo xl list
>> Name ID Mem VCPUs State Time(s)
>> Domain-0 0 13024 8 r-----
>> 123.6
>> storagedd 1 2048 1 -b----
>> 23.4
>> client 3 1024 1 -b----
>> 0.1
>>
>> "xl block-list client" yields an empty list of block devices on the
>> client. In xenstore, the storage domain does, however, have a backend
>> entry for this disk:
>>
>> admin@storagedd:~$ sudo xenstore-ls /local/domain/1/backend
>> vbd = ""
>> 3 = ""
>> 51712 = ""
>> frontend = "/local/domain/3/device/vbd/51712"
>> params = "/dev/loop0"
>> script = "/etc/xen/scripts/block"
>> frontend-id = "3"
>> online = "1"
>> removable = "0"
>> bootable = "1"
>> state = "2"
>> dev = "xvda"
>> type = "phy"
>> mode = "w"
>> device-type = "disk"
>> discard-enable = "1"
>
> Hello,
>
> Thanks for the detailed description, AFAICT you don't have 'xl devd'
> running in the driver domain right?
>
> You will need to install the Xen tools inside of the driver domain, and
> then either launch 'xl devd' manually, or use the init script
> xendriverdomain.
>
> Roger.
Hi Roger,
Thanks for your reply. I got a bit further now, but still hit some errors.
First, as you suggested, I started the xendriverdomain service via the
init script (and have it start automatically on boot). "xl devd"
starts as expected and creates a log file at /var/log/xen/xldevd.log.
When I start the client DomU, it receives the disk and is able to boot
from it. I can even log in, if I do it quickly. However, after a few
seconds, the client locks up and I see this printed to the console:
[ 9.938197] vbd vbd-51712: 16 Device in use; refusing to close
[ 9.938524] vbd vbd-51712: failed to write error node for
device/vbd/51712 (16 Device in use; refusing to close)
When I destroy the client from Dom0:
xenuser@xenhost:~$ sudo xl destroy client
libxl: error: libxl_device.c:953:device_backend_callback: unable to
remove device with path /local/domain/2/backend/vbd/3/51712
libxl: error: libxl.c:1654:devices_destroy_cb: libxl__devices_destroy
failed for 3
And finally, in storagedd, I see the same error in xldevd.log:
admin@storagedd:~$ cat /var/log/xen/xldevd.log
libxl: error: libxl_device.c:953:device_backend_callback: unable to
remove device with path /local/domain/2/backend/vbd/3/51712
Any ideas on what's causing this or how to proceed?
Thanks,
Alex
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxx
http://lists.xen.org/xen-users
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |