[lvm-devel] Question: the failure handling for sanlock
Leo Yan
leo.yan at linaro.org
Mon Feb 22 11:33:19 UTC 2021
Hi David,
On Mon, Feb 15, 2021 at 10:31:27AM -0600, David Teigland wrote:
> On Sun, Feb 14, 2021 at 06:13:03PM +0800, Leo Yan wrote:
> > 538 /*
> > 539 * FIXME: here is where we should implement a strong form of
> > 540 * blkdeactivate, and if it completes successfully, automatically call
> > 541 * do_drop() afterward. (The drop step may not always be necessary
> > 542 * if the lvm commands run while shutting things down release all the
> > 543 * leases.)
> > 544 *
> > 545 * run_strong_blkdeactivate();
> > 546 * do_drop();
> > 547 */
> >
> > My first question is why lvmlockctl comments out the failure handling code so
> > cannot automatically deactivate drives and cleanup VG/LV locks by default?
>
> Only because that forceful deactivate has not been implemented.
>
> > The second question is what's a suggested flow for failure handling for sanlock?
> > If I understand correctly, we can rely on the command "blkdeactivate" to
> > deactivates block devices; but if we deactivate the whole block device, it
> > might also hurt other VGs/LVs resident on the same drive. So should we firstly
> > deactivate VGs or LVs with "vgchange" or "lvchange" commands rather than
> > deactivate the whole block device? We might consider there have no chance to
> > access drive for the drive or fabric malfunction, so cannot make succuss for
> > commands "vgchange" and "lvchange".
>
> We only need to forcefully deactivate LVs in the failed VG. The lvmlockd
> man page section "sanlock lease storage failure" describes how this
> process can work manually, and mentions doing it automatically in the
> future. In the manual process you'd try to stop applications using the
> fs, unmount file systems on the LVs, then try to deactivate the LVs.
> Since there are storage issues, the unmount and deactivate might hang, in
> which case you could try dmsetup wipe_table on the LVs. You might just
> skip immediately to that last step since there's not a lot of time.
>
> There was a script written in 2017 to automate that final dmsetup step.
> It was finished or very close, but I don't remember what kept us from
> including it. An idea to make dmsetup do more of the work perhaps left us
> unsure what to do. Here is the script and some discussion:
> https://listman.redhat.com/archives/lvm-devel/2017-September/msg00011.html
>
> There was also a small lvmlockctl patch to replace the
> run_strong_blkdeactivate() comment with running the script.
Yes, I went through the two patches, one is for the script
blkdeactivate.sh and another is for lvmlockctl.
And I saw you suggested to use the dmsetup commands:
dmsetup info -c -S "uuid=~LVM && vgname=$VG && lv_layer=\"\"" \
-o name --noheadings | xargs dmsetup wipe_table
> If you can get this to work for your case I'd like to get it included in
> lvm.
I will verify the changes and share back the result.
Thank you for suggestions!
Leo
More information about the lvm-devel
mailing list