Masalahnya
“Kesalahan checksum” dilaporkan saat menjalankan perintah LVM di server 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
Solusi
Checksum disimpan dalam metadata LVM2 sehingga keberadaan korupsi dapat dideteksi sebelum data benar-benar rusak. Masalah ini biasanya akan terjadi ketika checksum tersebut tidak cocok dengan checksum yang dihitung setelah metadata diproses.
Mungkin ada banyak penyebab error checksum yang berbeda, beberapa di antaranya adalah sebagai berikut:
- Jika 2 host secara independen mencoba memperbarui metadata LVM2 pada saat yang sama (mis. seperti situasi cluster) dan LVM cluster (clvm) tidak digunakan.
- Kesalahan I/O yang terjadi saat metadata sedang diperbarui (pembaruan LVM2 tidak dijurnal sehingga gangguan dalam pembaruan I/O dapat menyebabkan kerusakan).
- Ada beberapa masalah di lingkungan SAN jika jalur yang mendasarinya berasal dari SAN.
Untuk mengatasi kesalahan ini, ikuti langkah-langkah yang diberikan di bawah ini:
1. Cadangkan semua data Anda pada volume logis.
2. Hentikan semua layanan yang memiliki sumber daya LVM di dalamnya (sehingga volume dapat dilepas dan grup volume dinonaktifkan). Layanan tidak boleh berjalan di node mana pun di cluster (jika kesalahan dilaporkan di cluster).
3. Pulihkan metadata menggunakan perintah ‘vgcfgrestore '. File cadangan data meta LVM disimpan di /etc/lvm/backup dan /etc/lvm/archive. Perintah vgcfgrestore secara default menggunakan file cadangan di /etc/lvm/backup. Jalankan vgcfgrestore untuk memulihkan data meta LVM. Misalnya,
# vgcfgrestore vg_os /dev/mapper/cx0009_lun45: Checksum error /dev/mapper/cx0009_lun48: Checksum error Restored volume group vg_os
4. Aktifkan grup volume.
# vgchange -ay vg_os 1 logical volume(s) in volume group "vg_os" now active
5. Jalankan perintah “pvscan” untuk memverifikasi apakah Anda dapat melihat “checksum error” sekarang.
# pvscan
6. Aktifkan kembali semua layanan yang dihentikan sebelum vgcfgrestore.
Kesimpulan
Menggunakan vgcfgrestore dapat memulihkan cadangan metadata LVM ke volume fisik LVM sebelum kerusakan terjadi. Anda dapat menggunakan file cadangan default di /etc/lvm/backup untuk memulihkan data meta dari cadangan lama. Jika Anda memiliki file cadangan di lokasi lain, Anda juga dapat menentukan file cadangan dengan perintah vgcfgrestore seperti yang ditunjukkan di bawah ini.
# vgcfgrestore -f /path/to/backup/file vgname