[ClusterLabs] LVMLockD Recipe for Fedora 37 PCS GFS2 Shared Storage Cluster

Reid Wahl nwahl at redhat.com
Fri Dec 30 20:19:49 EST 2022


On Fri, Dec 30, 2022 at 4:32 PM Gregory Carter <gjcarter2 at gmail.com> wrote:
>
> I recently had some time to read the documentation for LVM Shared Storage using PCS and found that there wasn't any documentation on how to set it up using lvmlockd/GFS2/Fencing in a shared configuration.  There are a couple replication scenarios out there that use DRDB/Cloning which I might try if this isn't possible.
>
> Everything I have found is CLVMD based or is incredibly old created way before LVMLockD deprecated CLVMD.  So I decided to take the guessing route:
>
> So this is how far I got:
>
> 1) I created a LVM volume with GFS2 physically formatted volumes.
> vgcreate "vmgfs2" /dev/sdb1 /dev/sdc1 /dev/sde1 /dev/sdg1 --shared
> lvcreate -n "smvms" -L 50G "vmgfs2"
>
> 2) I formatted a GFS2 file system on the smvs segment:
> mkfs.gfs2 -p lock_dlm -t vmgfs2:smvms -j 8 /dev/vmgfs2/smvms
>
> 3) I then fenced the block devices with stonith like so:
>
> pcs stonith create scsi-shooter fence_scsi pcmk_host_list="hyperv0001.cluster hyperv0002.cluster" devices=/dev/disk/by-id/wwn-0x6001405f0efeeeb51af42c09971344de,/dev/disk/by-id/wwn-0x6001405fbe61a5c9e234a81968805ac3,/dev/disk/by-id/wwn-0x60014055c9a285a61214064a7ad60ccd,/dev/disk/by-id/wwn-0x600140565c8b9cb3f874d7f89ef4afa1 meta provides=unfencing
>
>
> 4) Now for the lvm.conf configuration, that part wasn't obvious.  Since I do not have any lvm volumes on the hypervisors other than the block devices assigned specifically for shared storage I didn't have any filters setup.  (i.e. the hypervisors main block devices are nvme and the other block devices are not part of a shared volume.)
>
> That being said I set the following up in lvm.conf:
> use_lvmlockd = 1
> system_id_source = "none"
> volume_list = []
>
> Some more info:
>
> # vgs
>  VG     #PV #LV #SN Attr   VSize     VFree
>  vmgfs2   4   1   0 wz--ns <1023.91g <973.91g
> and
> # vgs
>  Reading VG vmgfs2 without a lock.
>  VG     #PV #LV #SN Attr   VSize     VFree
>  vmgfs2   4   1   0 wz--ns <1023.91g <973.91g
>
> I assume they both have to have a shared attribute set.
>
> Both machines boot with lvmlockd enabled at boot time.
>
> It also was suggested I setup my initrd on the hypervisors to load the lvm.conf file at startup with the proper configuration options more immediate.
>
> So I then updated my initrd like so:
> dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
>
> 5) Next I defined a activation resource, which I took from some relatively recent documentation I found out on the web:
> pcs resource create vmgfs2_pcs ocf:heartbeat:LVM-activate vgname=vmgfs2 vg_access_mode=lvmlockd --group vmgfs2
>
> This however leads to some issues:
>
> Cluster name: vmgfs2
> Cluster Summary:
>  * Stack: corosync
>  * Current DC: hyperv0001.aesgi.com (version 2.1.4-4.fc36-dc6eb4362e) - partition with quorum
>  * Last updated: Fri Dec 30 17:26:45 2022
>  * Last change:  Fri Dec 30 14:48:38 2022 by root via cibadmin on hyperv0001.aesgi.com
>  * 2 nodes configured
>  * 4 resource instances configured
>
> Node List:
>  * Online: [ hyperv0001.aesgi.com hyperv0002.aesgi.com ]
>
> Full List of Resources:
>  * Clone Set: dlm-clone [dlm]:
>    * Started: [ hyperv0001.aesgi.com hyperv0002.aesgi.com ]
>  * scsi-shooter        (stonith:fence_scsi):    Started hyperv0001.aesgi.com
>  * Resource Group: vmgfs2:
>    * vmgfs2_pcs        (ocf::heartbeat:LVM-activate):   Stopped
>
> Failed Resource Actions:
>  * vmgfs2_pcs_start_0 on hyperv0002.aesgi.com 'not configured' (6): call=16, status='complete', exitreason='lvmlockd daemon is not running!', last-rc-chan
> ge='Fri Dec 30 14:53:17 2022', queued=0ms, exec=1429ms
>
> Daemon Status:
>  corosync: active/enabled
>  pacemaker: active/enabled
>  pcsd: active/enabled
>
> I am not sure why I get a lvmlockd not running response as it is configured to run at bootup.

Is it in fact running? The LVM-activate resource agent runs `pgrep
lvmlockd` to check that.

    # Good: lvmlockd is running, and clvmd is not running
    if ! pgrep lvmlockd >/dev/null 2>&1 ; then
        if ocf_is_probe; then
            ocf_log info "initial probe: lvmlockd is not running yet."
            exit $OCF_NOT_RUNNING
        fi

        ocf_exit_reason "lvmlockd daemon is not running!"
        exit $OCF_ERR_CONFIGURED
    fi

You might find this helpful (written for RHEL 9 but should be
applicable to Fedora):
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_and_managing_high_availability_clusters/assembly_configuring-gfs2-in-a-cluster-configuring-and-managing-high-availability-clusters

>
> But since I used a variety of locations to put together this information, I was wondering if there wasn't a location that already has this specified?
>
>
>
>
>
>
>
> _______________________________________________
> Manage your subscription:
> https://lists.clusterlabs.org/mailman/listinfo/users
>
> ClusterLabs home: https://www.clusterlabs.org/



-- 
Regards,

Reid Wahl (He/Him)
Senior Software Engineer, Red Hat
RHEL High Availability - Pacemaker



More information about the Users mailing list