[linux-lvm] Converting existing thick LVs into thin LVs possible?

Zdenek Kabelac zkabelac at redhat.com
Mon Apr 14 08:01:00 UTC 2014


Dne 4.4.2014 18:50, Jeremy Smith napsal(a):
> On Mon, Feb 17, 2014 at 4:00 AM, Zdenek Kabelac <zkabelac at redhat.com> wrote:
>> Dne 14.2.2014 20:21, Jeremy Smith napsal(a):
>>>
>>> I have a system currently using LVM2 that was originally set up on
>>> RHEL5 (where thin provisioning was not supported).
>>> This system would greatly benefit from the newer thin provisioning
>>> features, and so I am investigating upgrading to RHEL6 so that I may
>>> take advantage. My question is this: Can I convert existing LVM2
>>> "thick" logical volumes into thinly-provisioned volumes on the fly?
>>>
>>> This page:
>>>
>>> https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/thinly_provisioned_volume_creation.html
>>>
>>> lead me to believe that it is possible:
>>>    "You can use the --thinpool parameter of the lvconvert command to
>>> convert an existing logical volume to a thin volume."
>>>
>>> with the following:
>>>
>>>    lvconvert --thinpool vg001/lv1 --poolmetadata vg001/lv2
>>
>>
>>
>> Sounds like misunderstanding which needs fix/enhancement of this doc page  -
>> we will need to enhance lvconvert command to write big warning about this
>> operation.
>>
>> This conversion is converting  volume to 'data' volume - but it's not about
>> preserving content of LV1 as  LV1 - it will serve as en empty pool.
>>
>> The primary purpose is - you can build 'any' type of LV for data volume
>> and 'any' type of LV for metadata volume (i.e. special layout for
>> raid/mirror)
>> and then you 'create' for these 2 volumes your thin pool - since normally
>> you can't create mirrored data & metadata volumes and thin pool in 1
>> command,
>> and you can't easily select where the metadata should be placed
>> (i.e. data on spindle, metadata on SSD).
>>
>>>
>>> Am I doing something wrong here?
>>> Or am I going to have to create a new thin pool, new thin logical
>>> volumes, and copy the data over?
>>
>>
>> There is not yet support for direct conversion of LV to thin-LV.
>> The only currently supported method is to use your  thick-LV as an external
>> origin LV for your  thin-LV volume.
>>
>> i.e. you create your  thin-pool  LV  + and then thin-LV volume with external
>> origin that will use original thick-LV  (external origin need to be
>> read-only volume)
>>
>> Here are the conversion steps:
>>
>> lvcreate -Lsize_of_data_pool -T vg/pool
>> lvconvert -T  vg/thick_LV --originname new_thick_LV_name --thinpool  vg/pool
>>
>> Disadvantage here is you cannot merge changes from thin volume back to
>> original thick volume. You can however remove  thin-LV and use again your
>> thick-LV as normal volume - i.e. thin-LV is basically snapshot.
>>
>> Now hint for recovery - if you have not yet written anything to thin-LV from
>> newly create thin-pool.  You could restore back to your previous
>> configuration
>> via   vgcfgrestore --force.
>>
>> Zdenek
>>
>
> Zdenek,
>
> Thank you. I was able to perform migration of some of my LVs, but now
> I have ran into a problem: the thin pool metadata has ran out of space
> :-(
> I am running LVM 2.02.98(2) (2012-10-15) on kernel 3.11.0-18-generic
> (Ubuntu server 13.10), which -- as I understand from your talk at
> https://www.youtube.com/watch?v=dGax09aw7WI -- does not support live
> resizing of the pool metadata.
> You mention in that talk that there is a manual offline pool metadata
> resize method that can be done on kernels prior to 3.14. I was not
> able to find details anywhere on how to accomplish this. Could you
> point me in the right direction on how to fix a thin pool (and its
> thin logical volumes) that has reached the metadata size limit? It
> would be greatly appreciated.

Offline resize is basically  metadata recovery into bigger LV.
So step for resize apply in the same way as for recovery.

1. create temp LV
2. replace temp LV with  metadata pool LV
3. now you can activate your metadata LV as regular LV
4. create bigger LV for restore
5. thin_restore  -i old_metadata_lv_path  -o  new_metadata_lv_path
6. swap new_metadata_lv  into your pool
7. activate pool

yep - about the time to integrate this offline resize into lvm2 I guess... :)

Zdenek




More information about the linux-lvm mailing list