All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zdenek Kabelac <zkabelac@redhat.com>
To: LVM general discussion and development <linux-lvm@redhat.com>
Cc: Andres Toomsalu <andres@active.ee>
Subject: Re: [linux-lvm] how to recover after thin pool metadata did fill up?
Date: Thu, 18 Oct 2012 12:30:06 +0200	[thread overview]
Message-ID: <507FDA2E.8080301@redhat.com> (raw)
In-Reply-To: <CB12DB70-5C4F-4936-9EDE-BFF4096D064F@active.ee>

Dne 17.10.2012 22:21, Andres Toomsalu napsal(a):
> Hi,
>
> I'm aware that thin provisioning is not yet production ready (no metadata resize) - but is there a way to recover from thin pool failure when pool metadata was filled up?
>
> I did setup 1.95T thin pool and after some usage pool metadata (128MB) was filling up to 99,08% - so all pool thin volumes went into read-only state.
> Problem is that I cannot find a way in order to recover from this failure - eg also unable to delete/erase thin volumes and pool - only option seems to be full disk PV re-creation (eg OS re-install).
>
> Is there a way to recover or delete thin pool/volumes - without erasing other (normal) LVs in this Volume Group?
> For example dmsetup remove didn't help.
>
> Some diagnostic output:
>
> lvs -a -o+metadata_percent
>    dm_report_object: report function failed for field data_percent
>    --- REPEATABLE MSG ---
>    dm_report_object: report function failed for field data_percent
>    LV                       VG         Attr     LSize   Pool Origin       Data%  Move Log Copy%  Convert Meta%
>    pool                     VolGroupL0 twi-i-tz   1,95t                    75,28                          99,08
>    [pool_tdata]             VolGroupL0 Twi-aot-   1,95t
>    [pool_tmeta]             VolGroupL0 ewi-aot- 128,00m
>    root                     VolGroupL0 -wi-ao--  10,00g
>    swap                     VolGroupL0 -wi-ao--  16,00g
>    thin_backup              VolGroupL0 Vwi-i-tz 700,00g pool
>    thin_storage             VolGroupL0 Vwi---tz 900,00g pool
>    thin_storage-snapshot1   VolGroupL0 Vwi-i-tz 700,00g pool thin_storage
>    thin_storage-snapshot106 VolGroupL0 Vwi-i-tz 900,00g pool thin_storage
>    thin_storage-snapshot130 VolGroupL0 Vwi-i-tz 900,00g pool thin_storage
>    thin_storage-snapshot154 VolGroupL0 Vwi-i-tz 900,00g pool thin_storage
>    thin_storage-snapshot178 VolGroupL0 Vwi-i-tz 900,00g pool thin_storage
>    thin_storage-snapshot2   VolGroupL0 Vwi-i-tz 700,00g pool thin_storage
>    thin_storage-snapshot202 VolGroupL0 Vwi-i-tz 900,00g pool thin_storage
>
> dmsetup table
> VolGroupL0-thin_storage--snapshot2:
> VolGroupL0-thin_storage--snapshot178:
> VolGroupL0-swap: 0 33554432 linear 8:2 41945088
> VolGroupL0-thin_storage--snapshot1:
> VolGroupL0-root: 0 20971520 linear 8:2 20973568
> VolGroupL0-thin_storage--snapshot130:
> VolGroupL0-pool:
> VolGroupL0-thin_backup:
> VolGroupL0-thin_storage--snapshot106:
> VolGroupL0-thin_storage--snapshot154:
> VolGroupL0-pool-tpool: 0 4194304000 thin-pool 253:2 253:3 1024 0 0
> VolGroupL0-pool_tdata: 0 2097152000 linear 8:2 75499520
> VolGroupL0-pool_tdata: 2097152000 2097152000 linear 8:2 2172913664
> VolGroupL0-pool_tmeta: 0 262144 linear 8:2 2172651520
> VolGroupL0-thin_storage--snapshot202:
>
> lvremove -f VolGroupL0/pool
>    Thin pool transaction_id=640, while expected: 643.
>    Unable to deactivate open VolGroupL0-pool_tdata (253:3)
>    Unable to deactivate open VolGroupL0-pool_tmeta (253:2)
>    Failed to deactivate VolGroupL0-pool-tpool
>    Failed to resume pool.
>    Failed to update thin pool pool.
>


Unfortunately there is no 'easy' advice for now yet - you hit current 
Achilles heel of thinp support in lvm2 - we are thinking how to make recovery 
usable for user - but it's not easy task since many things are making it very 
complex - so it still needs some month of work.

As for now - you would need to download git source and disable certain 
security check directly in the source to allow activation of damaged pool.

I guess I could provide you some extra patch that would allow you to active 
thin pool in 'read-only' mode (but it's not yet ready for upstream).

Thus you should be able access 'some' data in this mode with a big note - 
since devices would be in read-only mode - you cannot even run  fsck on such 
partition - and since you have transaction_id mismatch - it would need
some analysis to see what actually happened - are you able to provide me
archive files for the history of your recent lvm commands -
it should not allow you to have difference bigger then 1 - so there is 
probably some bug (unless you are using some old version of lvm2 with initial 
thinp support)

Zdenek

  reply	other threads:[~2012-10-18 10:30 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-17 20:21 [linux-lvm] how to recover after thin pool metadata did fill up? Andres Toomsalu
2012-10-18 10:30 ` Zdenek Kabelac [this message]
2012-10-18 10:42   ` Andres Toomsalu
2012-10-18 10:55     ` Andres Toomsalu
2012-10-18 11:29     ` Zdenek Kabelac
2012-10-18 13:28   ` Spelic
2012-10-18 13:35     ` Andres Toomsalu
2012-10-18 13:43     ` Zdenek Kabelac
2012-10-18 13:47       ` Andres Toomsalu
2012-10-18 14:01     ` Joe Thornber
2012-10-18 13:35 ` Joe Thornber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=507FDA2E.8080301@redhat.com \
    --to=zkabelac@redhat.com \
    --cc=andres@active.ee \
    --cc=linux-lvm@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.