El problema
Se informan "errores de suma de comprobación" cuando se ejecutan comandos LVM en el servidor CentOS/RHEL.
# vgs /dev/mapper/cx0009_lun45: Checksum error /dev/mapper/cx0009_lun48: Checksum error VG #PV #LV #SN Attr VSize VFree vg00 1 7 0 wz--n- 279.12G 159.12G vgcommrmandb 1 6 0 wz--n- 20.00G 44.00M vgcotsoracle 1 1 0 wz--n- 20.00G 4.00M vgcotsorapit 1 1 0 wz--n- 50.00G 4.00M ...
# lvs /dev/mapper/cx0009_lun45: Checksum error /dev/mapper/cx0009_lun48: Checksum error LV VG Attr LSize Origin Snap% Move Log Copy% Convert crashvol vg00 -wi-ao 64.00G homevol vg00 -wi-ao 4.00G oemagentvol vg00 -wi-ao 10.00G rootvol vg00 -wi-ao 10.00G swapvol vg00 -wi-ao 16.00G tmpvol vg00 -wi-ao 8.00G ...
# pvs /dev/mapper/cx0009_lun45: Checksum error /dev/mapper/cx0009_lun48: Checksum error PV VG Fmt Attr PSize PFree /dev/cciss/c0d0p2 vg00 lvm2 a-- 279.12G 159.12G /dev/mapper/cx0008_lun37 vgeflxwmq lvm2 a-- 5.00G 1.00G /dev/mapper/cx0009_lun30 vgeflxjvastb lvm2 a-- 40.00G 8.04G /dev/mapper/cx0009_lun31 vgeflxhdb1arch lvm2 a-- 60.00G 20.00M
Solución
Se almacena una suma de verificación en los metadatos de LVM2 para que se pueda detectar la presencia de corrupción antes de que los datos se dañen realmente. Este problema generalmente ocurrirá cuando esa suma de verificación no coincida con una suma de verificación calculada después de procesar los metadatos.
Puede haber muchas causas diferentes del error de suma de comprobación, algunas de ellas incluyen las siguientes:
- Si 2 hosts intentan actualizar los metadatos LVM2 al mismo tiempo de forma independiente (es decir, como una situación de clúster) y LVM agrupado (clvm) no está en uso.
- Errores de E/S que ocurren mientras se actualizan los metadatos (las actualizaciones de LVM2 no se registran, por lo que las interrupciones en las actualizaciones de E/S pueden causar daños).
- Hay algún problema en el entorno SAN en caso de que las rutas subyacentes provengan de SAN.
Para resolver este error, siga los pasos que se indican a continuación:
1. Haga una copia de seguridad de todos sus datos en los volúmenes lógicos.
2. Detenga todos los servicios que tengan recursos LVM (para que se puedan desmontar los volúmenes y desactivar los grupos de volúmenes). El servicio no debe ejecutarse en ningún nodo del clúster (si el error se informa en el clúster).
3. Restaure los metadatos usando el comando 'vgcfgrestore '. Los archivos de copia de seguridad de metadatos de LVM se almacenan en /etc/lvm/backup y /etc/lvm/archive. El comando vgcfgrestore por defecto usa el archivo de copia de seguridad en /etc/lvm/backup. Ejecute vgcfgrestore para restaurar los metadatos de LVM. Por ejemplo,
# vgcfgrestore vg_os /dev/mapper/cx0009_lun45: Checksum error /dev/mapper/cx0009_lun48: Checksum error Restored volume group vg_os
4. Activa el grupo de volumen.
# vgchange -ay vg_os 1 logical volume(s) in volume group "vg_os" now active
5. Ejecute el comando "pvscan" para verificar si puede ver los "errores de suma de comprobación" ahora.
# pvscan
6. Vuelva a habilitar los servicios que se detuvieron antes de vgcfgrestore.
Conclusión
El uso de vgcfgrestore puede restaurar una copia de seguridad de los metadatos de LVM en los volúmenes físicos de LVM antes de que ocurriera la corrupción. Puede usar el archivo de copia de seguridad predeterminado en /etc/lvm/backup para restaurar los metadatos de una copia de seguridad anterior. Si tiene un archivo de copia de seguridad en otra ubicación, también puede especificar el archivo de copia de seguridad con el comando vgcfgrestore como se muestra a continuación.
# vgcfgrestore -f /path/to/backup/file vgname