On Mon, May 19, 2008 at 12:29 PM, Mark Williamson
<mark.williamson@xxxxxxxxxxxx> wrote:
> Cool idea.
>
> Might be generally useful to people? Is anybody else using this with a
> NetApp? Any other features wanted in order to make this work?
>
> If it's valuable it would be worth looking at adding it, or something like it,
> into the Xen tree as an additional block script. We've still not exploited
> the ability to transparently support crazy networked block devices as much as
> we could :-)
I've been playing with adding extensions to phy: to handle dynamic
block devices. For iscsi, it's something like.
phy:iscsi:[static]/<targetid>/<lun>/[serverIpAddr]
e.g.
disk = ['phy:/dev/zvol/dsk/tank/guests/snv89,0,w',
'phy:iscsi:static/iqn.1986-03.com.sun:02:17f34578-00a9-ef69-f3e9-b8a2896a4915/0/192.168.0.70,1,w']
when the block hotplug script see's the phy:<ext>: it
looks for something like a block-<ext> script and runs
it if it can find it, else, defaults down normal path.
The iscsi hotplug script verifies/sets up the disk, then adds
a params-dynamic (equivalent to Stefan's node?) entry in
xenstore. A small change to the disk backend looks for a
dynamic entry first, then defaults back to param if it can't find it.
I currently have a small change to xend to handle this for non
boot disks. I still need to look at setting up the disks before pygrub
runs so you can boot off of it..
def _parse_uname(uname):
fn = taptype = None
if uname.find(":") != -1:
(typ, fn) = uname.split(":", 1)
- if typ == "phy" and not fn.startswith("/"):
- fn = "/dev/%s" %(fn,)
- if typ == "tap":
+ if typ == "tap" or typ == "phy":
(taptype, fn) = fn.split(":", 1)
The nice thing about this, is it's really easy to extend to other
block devices, etc.
e.g.
phy:fc:...
phy:npiv:...
MRJ
MRJ
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|