Originally solution 3618 on access.redhat.com
Issue
- How do I change a volume group to clustered or non-clustered?
- We need to mount the Clone LUN's onto another RHEL server so that we can write the data to tape from that server. While mounting the VG's on the RHEL server, I am getting the below error:
# vgimport /dev/mapper/mpath0
connect() failed on local socket: Connection refused
WARNING: Falling back to local file-based locking.
Volume Groups with the clustered attribute will be inaccessible.
Skipping clustered volume group vgname
- How to convert a volume group from clustered to non-clustered and vice-versa?
Environment
- Red Hat Enterprise Linux (RHEL) including
- Red Hat Enterprise Linux 4
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
- May or may not require Red Hat High Availability Cluster
- LVM2 volume management
- The volume group is clustered:
- There are 2 ways to determine; firstly using vgdisplay:
# vgdisplay vgtest --config 'global {locking_type = 0}' | grep Clustered WARNING: Locking disabled. Be careful! This could corrupt your metadata. Clustered yes
- Also,
vgs
will display the 'c' attribute for clustered volume groups:
# vgs --config 'global {locking_type = 0}' WARNING: Locking disabled. Be careful! This could corrupt your metadata. VG #PV #LV #SN Attr VSize VFree vgname 1 1 0 wz--nc 96.00M 76.00M <----- Attr includes the 'c' flag meaning clustered.
- It is undesirable that the volume group is clustered. Possible reasons include:
- The volume group is being converted to non-clustered permanently.
- The command
vgchange -cy
was accidentally run on the volume group or the volume group was accidentally made clusrered.- The cluster cannot form quorum, or clvmd cannot start and the volume group needs to be temporarily un-clustered to restore service.
Resolution
1. If the cluster can become quorate and the clvmd service can be started, the volume group can be changed back to non-clustered by running:
# vgchange -cn vgname
Volume group "vgname" successfully changed
2. If the cluster cannot achieve quorum, or clvmd is unable to function for whatever reason, clustered locking can temporarily be disabled with the following command, allowing us to convert the volume group from clustered to non-clustered:
# vgchange -cn vgname --config 'global {locking_type = 0}'
WARNING: Locking disabled. Be careful! This could corrupt your metadata.
Volume group "vgname" successfully changed
- Then, if required, the non-clustered volume group can be activated on a single node with the following command:
# vgchange -ay <volume_group_name>
- WARNING: After making this change, you must not activate the volume group on more than one server at a time or LVM metadata corruption can occur (even if no changes are made).
3. To temporarily activate the volume group, but leave it clustered, use the following command:
# vgchange -ay vgname --config 'global { locking_type = 0 }'
WARNING: Locking disabled. Be careful! This could corrupt your metadata.
1 logical volume(s) in volume group "vgname" now active
- WARNING You must not execute this command on more than one server at a time or LVM metadata corruption can occur (even if no changes are made).
- WARNING The
vgchange
using--config 'global {locking_type = 0}'
will not work on a mirrored Logical Volume. The user must restore the VG from a valid LVM backup file usingvgcfgrestore
. Optionally the user can runlvconvert -m0
on the mirrored LV and run the commands outlined in steps 1-3 above then remirror usinglvconvert
. Please note that the re-mirroring process can take a while depending on the size of the LV being re-mirrored.
Root Cause
- If the volume group is set to clustered (vgchange -cy vgname) then the volume group can only be activated if your Red Hat High Availability cluster is quorate, and Clustered LVM Daemon (CLVMD) is active.
- It is not possible to change a clustered volume group back using vgchange -cn vgname if CLVMD is not running because it needs to acquire a clustered lock in order to change the attribute.
- Executing LVM commands with the parameters
--config 'global { locking_type = 0 }'
allow that command to temporarily change the LVM configuration. This particular command sets locking_type to 0, which means basically "ignore locking".
Comments
Post a Comment