O confluență cu adevărat ciudată de dependențe a dus la o blocare ciudată a bazei de date. Context:
- CentOS 7.9
- LVM2-2.02
- Postgresql 12, cu volum de date pe un volum LVM, formatat XFS
- systemd
- dbus
În timp ce sistemul era activ și stabil, iar baza de date rula normal, am efectuat a yum actualizare
. În timpul actualizării, mai multe volume au fost demontate, inclusiv cel pe care a fost montată baza de date. Acest lucru a dus la mesajul de panică:
2021-08-12 21:12:35.418 CEST PANIC: Nu s-a putut deschide fișierul ""/var/lib/pgsql/current/data/global/pg_control"": Nu există un astfel de fișier sau director
Jurnalele jurnalului arată că câteva pachete au fost actualizate în minutele premergătoare acestui accident. Nu există mesaje de jurnal intermediare de la postgresql care ar putea să-l restrângă.
Aparent ceva în /etc/fstab
este configurat incorect, dar următorul mesaj poate fi văzut cu mult înainte de actualizarea yum:
Aug 12 18:27:32 git.uibk.ac.at systemd-fstab-generator[19273]: Verificarea a fost solicitată pentru „none”, dar nu este un dispozitiv.
și frecvent în timpul actualizării. Așa că consider asta un hering roșu.
Systemd este actualizat și repornit:
12 august 21:11:46 git.uibk.ac.at systemd[1]: Reexecutarea.
12 august 21:11:46 git.uibk.ac.at systemd[1]: systemd 219 rulează în modul sistem. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
Asta cu 45 de secunde înainte de accident. Imediat după aceasta, vedem:
12 august 21:11:46 git.uibk.ac.at systemd[1]: [/etc/systemd/system/rsyslog.service.d/partof-journald.conf:2] Atribuire în afara secțiunii. Ignorând.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Sistemele de fișiere la distanță țintă oprite.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Oprirea sistemelor de fișiere la distanță.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Unset automount mnt-git\x2drepodata.automount.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Oprirea mnt-git\x2drepodata.automount.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Configurați automount mnt-git\x2drepodata.automount.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Sistemele de fișiere de la distanță țintă atinse.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Unset automount Formate de fișiere executabile arbitrare Sistem de fișiere Punct de montare automată.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Oprirea punctului de montare automată a sistemului de fișiere cu formate de fișiere executabile arbitrare.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Configurați punctul de montare automată a sistemului de fișiere cu formate de fișiere executabile arbitrare.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Sistemele de fișiere locale țintă oprite.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Oprirea sistemelor de fișiere locale.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Dezactivați montarea automată var-lib-pgsql.automount.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Oprirea var-lib-pgsql.automount.
12 august 21:11:46 git.uibk.ac.at systemd[1]: var-lib-pgsql.automount: Directorul /var/lib/pgsql de montat nu este gol, se montează oricum.
De ce de ce???? .... DE CEYYYYYYYYY!!!! În orice caz, se pare că nu a funcționat corect.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Configurați montarea automată var-lib-pgsql.automount.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Se montează /var/lib/pgsql/current/pg_stat_tmp...
12 august 21:11:46 git.uibk.ac.at systemd[1]: Montat /var/lib/pgsql/current/pg_stat_tmp.
12 august 21:11:46 git.uibk.ac.at systemd[1]: Sistemele de fișiere locale țintă atinse.
De asemenea, acest volum nu a fost montat la scurt timp după aceea și a trebuit să fie remontat manual în timpul procesului de recuperare.
Alte câteva mesaje apar înainte de PANIC:
12 august 21:12:32 git.uibk.ac.at yum[12642]: Instalat: kernel-3.10.0-1160.36.2.el7.x86_64
12 august 21:12:33 git.uibk.ac.at yum[12642]: Actualizat: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
12 august 21:12:33 git.uibk.ac.at systemd[1]: Reîncărcare.
12 august 21:12:34 git.uibk.ac.at yum[12642]: Actualizat: 7:lvm2-2.02.187-6.el7_9.5.x86_64
12 august 21:12:34 git.uibk.ac.at yum[12642]: Actualizat: 1:nfs-utils-1.3.0-0.68.el7.1.x86_64
Și apoi acestea două, în mod ciudat, nu în ordinea corectă:
12 august 21:12:35 git.uibk.ac.at systemd[1]: postgresql-12.service: proces principal ieșit, cod=ieșit, stare=1/Eșec
12 august 21:12:35 git.uibk.ac.at kernel: XFS (dm-6): Demontarea sistemului de fișiere
dm-6 este în prezent (după repornire) volumul de schimb, deci...?
Iată o listă a volumelor, excluzând suspecții obișnuiți:
/dev/mapper/vgdata-git--db pe /var/lib/pgsql tip xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvroot pe / tip xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvtmp pe /tmp tip xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvvar pe /var tip xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/vda1 pe /boot type ext4 (rw,relatime,seclabel,data=ordered)
nfsshare:/git/qt-gitlab pe /mnt/git-repodata tip nfs (rw,relatime,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec= sys,mountport=635,mountproto=udp,local_lock=none)
niciunul pe /var/lib/pgsql/12/pg_stat_tmp tip tmpfs (rw,relatime,seclabel,size=16384k,mode=770,uid=102,gid=26)
systemd-1 pe /mnt/git-repodata tip autofs (rw,relatime,fd=37,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13188)
systemd-1 pe /proc/sys/fs/binfmt_misc tip autofs (rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13146)
systemd-1 pe /var/lib/pgsql tip autofs (rw,relatime,fd=41,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13753)
Nu am mai văzut așa ceva până acum pe niciun sistem Linux modern. Este acest „comportament așteptat” al systemd atunci când este actualizat sau re-executat?