And when I say 'the first time the template is used, we create an SR', I mean cloudstack does it automatically.
On Sat, Jan 25, 2014 at 10:29 PM, Marcus Sorensen <shadow...@gmail.com> wrote: > Not's not really what I was describing, or that's not how we do it at > least. The first time a template is used, we create an SR with one VDI > (using your terminology as we don't do it in Xen, but it should map to > essentially the same thing) and copy the template contents into it. > Then we remove the SR. When a root disk is requested, we send a clone > command to the SAN, and then register the new clone as a new volume, > then attach that as a new SR dedicated to that root volume. Every root > disk that makes use of that template is its own SR. > > On Sat, Jan 25, 2014 at 9:30 PM, Mike Tutkowski > <mike.tutkow...@solidfire.com> wrote: >> Thanks for your input, Marcus. >> >> Yeah, the SolidFire SAN has the ability to clone, but I can't use it in this >> case. >> >> Little note first: I'm going to put some words below in capital letters to >> stress some important details. All caps for some words can be annoying to >> some, so please understand that I am only using them here to highlight >> important details. :) >> >> For managed storage (SolidFire is an example of this), this is what happens >> when a user attaches a volume to a VM for the first time (so this is for >> Disk Offerings...not root disks): >> >> 1) A volume (LUN) is created on the SolidFire SAN that is ONLY ever used by >> this ONE CloudStack volume. This volume has QoS settings like Min, Max, and >> Burst IOPS. >> >> 2) An SR is created in the XenServer resource pool (cluster) that makes use >> of the SolidFire volume that was just created. >> >> 3) A VDI that represents the disk is created on the SR (this VDI essentially >> consumes as much of the SR as it can*). >> >> If the user wants to create a new CloudStack volume to attach to a VM, that >> leads to a NEW SolidFire volume being created (with its own QoS), a NEW SR, >> and a new VDI inside of that SR. >> >> The same idea will exist for root volumes. A NEW SolidFire volume will be >> created for it. A NEW SR will consume the SolidFire volume, and only ONE >> root disk will EVER use this SR (so there is never a need to clone the >> template we download to this SR). >> >> The next time a root disk of this type is requested, this leads to a NEW >> SolidFire volume (with its own QoS), a NEW SR, and a new VDI. >> >> In the situation you describe (which is called non-managed (meaning the SR >> was created ahead of time outside of CloudStack)), you can have multiple >> root disks that leverage the same template on the same SR. This will never >> be the case for managed storage, so there will never be a need for a >> downloaded template to be cloned multiple times into multiple root disks. >> >> By the way, I just want to clarify, as well, that although I am talking in >> terms of "SolidFire this an SolidFire that" that the functionality I have >> been adding to CloudStack (outside of the SolidFire plug-in) can be >> leveraged by any storage vendor that wants a 1:1 mapping between a >> CloudStack volume and one of their volumes. This is, in fact, how OpenStack >> handles storage by default. >> >> Does that clarify my question? >> >> I was not aware of how CLVM handled templates. Perhaps I should look into >> that. >> >> By the way, I am currently focused on XenServer, but also plan to implement >> support for this on KVM and ESX (although those may be outside of the scope >> of 4.4). >> >> Thanks! >> >> * It consumes as much of the SR as it can unless you you want extra space >> put aside for hypervisor snapshots. >> >> >> On Sat, Jan 25, 2014 at 3:43 AM, Marcus Sorensen <shadow...@gmail.com> >> wrote: >>> >>> In other words, if you can't clone, then createDiskFromTemplate should >>> copy template from secondary storage directly onto root disk every >>> time, and copyPhysicalDisk really does nothing. If you can clone, then >>> copyPhysicalDisk should copy template to primary, and >>> createDiskFromTemplate should clone. Unless there's template cloning >>> in the storage driver now, and if so put the createDiskFromTemplate >>> logic there, but you still probably need copyPhysicalDisk to do its >>> thing on the agent. >>> >>> This is all from a KVM perspective, of course. >>> >>> On Sat, Jan 25, 2014 at 3:40 AM, Marcus Sorensen <shadow...@gmail.com> >>> wrote: >>> > I'm not quite following. With our storage, the template gets copied >>> > to the storage pool upon first use, and then cloned upon subsequent >>> > uses. I don't remember all of the methods immediately, but there's one >>> > called to copy the template to primary storage, and once that's done >>> > as you mention it's tracked in template_spool_ref and when root disks >>> > are created that's passed as the source to copy when creating root >>> > disks. >>> > >>> > Are you saying that you don't have clone capabilities to clone the >>> > template when root disks are created? If so, you'd be more like CLVM >>> > storage, where the template copy actually does nothing, and you >>> > initiate a template copy *in place* of the clone (or you do a template >>> > copy to primary pool whenever the clone normally would happen). CLVM >>> > creates a fresh root disk and copies the template from secondary >>> > storage directly to that whenever a root disk is deployed, bypassing >>> > templates altogether. This is because it can't efficiently clone, and >>> > if we let the template copy to primary, it will then do a full copy of >>> > that template from primary to primary every time, which is pretty >>> > heavy since it's also not thin provisioned. >>> > >>> > If you *can* clone, then just copy the template to your primary >>> > storage as normal in your storage adaptor (copyPhysicalDisk), it will >>> > be tracked in template_spool_ref, and then when root disks are created >>> > it will be passed to createDiskFromTemplate in your storage adaptor >>> > (for KVM), where you can call a clone of that and return it as the >>> > root volume . There was once going to be template clone capabilities >>> > in the storage driver level on the mgmt server, but I believe that was >>> > work-in-progress last I checked (4 months ago or so), so we still have >>> > to call clone to our storage server from the agent side as of now, but >>> > that call doesn't have to do any work on the agent-side, really. >>> > >>> > >>> > On Sat, Jan 25, 2014 at 12:47 AM, Mike Tutkowski >>> > <mike.tutkow...@solidfire.com> wrote: >>> >> Just wanted to throw this out there before I went to bed: >>> >> >>> >> Since each root volume that belongs to managed storage will get its own >>> >> copy >>> >> of some template (assuming we're dealing with templates here and not an >>> >> ISO), it is possible I may be able to circumvent a new table (or any >>> >> existing table like template_spool_ref) entirely for managed storage. >>> >> >>> >> The purpose of a table like template_spool_ref appears to be mainly to >>> >> make >>> >> sure we're not downloading the sample template to an SR multiple times >>> >> (and >>> >> this doesn't apply in the case of managed storage since each root >>> >> volume >>> >> should have at most one template downloaded to it). >>> >> >>> >> Thoughts on that? >>> >> >>> >> Thanks! >>> >> >>> >> >>> >> On Sat, Jan 25, 2014 at 12:39 AM, Mike Tutkowski >>> >> <mike.tutkow...@solidfire.com> wrote: >>> >>> >>> >>> Hi Edison and Marcus (and anyone else this may be of interest to), >>> >>> >>> >>> So, as of 4.3 I have added support for data disks for managed storage >>> >>> for >>> >>> XenServer, VMware, and KVM (a 1:1 mapping between a CloudStack volume >>> >>> and a >>> >>> volume on a storage system). One of the most useful abilities this >>> >>> enables >>> >>> is support for guaranteed storage quality of service in CloudStack. >>> >>> >>> >>> One of the areas I'm working on for CS 4.4 is root-disk support for >>> >>> managed storage (both with templates and ISOs). >>> >>> >>> >>> I'd like to get your opinion about something. >>> >>> >>> >>> I noticed when we download a template to a XenServer SR that we >>> >>> leverage a >>> >>> table in the DB called template_spool_ref. >>> >>> >>> >>> This table keeps track of whether or not we've downloaded the template >>> >>> in >>> >>> question to the SR in question already. >>> >>> >>> >>> The problem for managed storage is that the storage pool itself can be >>> >>> associated with many SRs (not all necessarily in the same cluster >>> >>> even): one >>> >>> SR per volume that belongs to the managed storage. >>> >>> >>> >>> What this means is every time a user wants to place a root disk (that >>> >>> uses >>> >>> a template) on managed storage, I will need to download a template to >>> >>> the >>> >>> applicable SR (the template will never be there in advance). >>> >>> >>> >>> That is fine. The issue is that I cannot use the template_spool_ref >>> >>> table >>> >>> because it is intended on mapping a template to a storage pool (1:1 >>> >>> mapping >>> >>> between the two) and managed storage can download the same template >>> >>> many >>> >>> times. >>> >>> >>> >>> It seems I will need to add a new table to the DB to support this >>> >>> feature. >>> >>> >>> >>> My table would allow a mapping between a template and a volume from >>> >>> managed storage. >>> >>> >>> >>> Do you see an easier way around this or is this how you recommend I >>> >>> proceed? >>> >>> >>> >>> Thanks! >>> >>> >>> >>> -- >>> >>> Mike Tutkowski >>> >>> Senior CloudStack Developer, SolidFire Inc. >>> >>> e: mike.tutkow...@solidfire.com >>> >>> o: 303.746.7302 >>> >>> Advancing the way the world uses the cloud™ >>> >> >>> >> >>> >> >>> >> >>> >> -- >>> >> Mike Tutkowski >>> >> Senior CloudStack Developer, SolidFire Inc. >>> >> e: mike.tutkow...@solidfire.com >>> >> o: 303.746.7302 >>> >> Advancing the way the world uses the cloud™ >> >> >> >> >> -- >> Mike Tutkowski >> Senior CloudStack Developer, SolidFire Inc. >> e: mike.tutkow...@solidfire.com >> o: 303.746.7302 >> Advancing the way the world uses the cloud™