On 02/04/2016 04:53 AM, Ján Tomko wrote:
On Wed, Feb 03, 2016 at 03:51:30PM -0500, John Ferlan wrote:
>
>
> On 02/03/2016 03:23 AM, Ján Tomko wrote:
>> On Tue, Feb 02, 2016 at 11:14:01AM -0500, John Ferlan wrote:
>>>
>>>
>>> On 02/02/2016 08:30 AM, Pavel Hrdina wrote:
>>>> On Tue, Feb 02, 2016 at 09:11:51AM +0100, Ján Tomko wrote:
>>>>> A thin pool is another layer on top of some of the LVs in the VG.
>>>>> I think it deserves a separate pool type.
>>>>
>>>> I must agree with Jan, and also already wrote the same for v2 patch. The
thin
>>>> pool and thin LV shouldn't be mixed with normal logical pool even
they share the
>>>> same VG.
>>>>
>>>
>>> If LVM allows it, then who are we to say it cannot or shouldn't work or
>>> how it should be configured?
>>
>> Even if they are mixed in the same VG, we could show the "thick" LVs
>> in the type='logical' pool and the thin ones in type='thin'.
>>
>
> We could if our logic to create/build the pool was overhauled or perhaps
> support was added to have two volume groups use the same source device.
>
> Since it's possible to place a thin_pool in the same vg as a snapshot
> and a "thick" lv, should we be in the business of splitting hairs and
> trying to define how things should be viewed?
>
We already are. E.g. in the 'fs' pool, we ignore fifos and subdirectories.
True we don't follow any subdir for an 'fs' pool (or 'dir' pool);
however, a 'thin-pool' and 'thin' lv are both in a VG. The hierarchy is
managed by LVM. If you looked at the on disk structure you'd only find
the 'thin' subdir, but there is no 'thin-pool' subdir.
> I don't see the benefit behind requiring the user to decide
whether to
> have a libvirt pool view either thin lv's or non-thin lv's of their vg
> or requiring their vg to essentially be one thin-pool in order to
> support thin lv's, when we could support whatever configuration they've
> already developed.
>
The thin pool would view the thin volumes in a specific thin pool, not
all thin pools in that VG.
Sure I understand the goal - a 1-to-1 relationship between a thin-pool
in a volume group and the libvirt pool. Then a 1-to-n relationship
between the pool and it's thin lv's. If a VG had two thin-pools, then
each would have to be it's own libvirt pool.
Configuring the libvirt specific pool is an extra step or two. The
libvirt pool would list the thin-pool size as capacity and the
allocation could be based on the data_percent. Perhaps the one benefit I
can see from this model.
I do see a lot of extra code, documentation, and configuration steps.
> If more work is done in LV pools - are we going to create new
pool types
> for other lvm segtypes ("mirror", "stripe", "raid",
etc.)? In order to
> display/fetch interesting or specific things about them?
>
AFAIK none of these create another pool on top of the VG.
True - not in the same manner as a thin-pool and thin lv have an overt
relationship. However, thin lv's and thin-pool's are listed within a VG
not on top of a VG. The thin-pool is just the mechanism used to define
the physical storage extents from which the virtual 'thin' extents can
be drawn from. If the thin-pool runs out of extents, the admin must come
along and extend it. That is - libvirt is not involved. No different
than if a VG (without a thin-pool) ran out of space. The admin would
need to extend it via some LVM command. Again libvirt is hands off.
I see creating a separate pool as a needless hierarchical step for the
primary benefit of being able to display the capacity of the thin-pool.
I think it's easier to describe that a logical pool that contains thin
lv's can appear to be over-subscribed. Management of the thin-pool's
from which those thin lv's draw from is left to LVM similar to whatever
configuration steps are required to create a device path for an 'fs'
pool to use.
John