การบรรจบกันของการพึ่งพาที่แปลกประหลาดจริงๆ นำไปสู่การหยุดทำงานของฐานข้อมูลที่แปลกประหลาด บริบท:
- เซ็นโอเอส 7.9
- LVM2-2.02
- Postgresql 12 พร้อมปริมาณข้อมูลบนไดรฟ์ข้อมูล LVM จัดรูปแบบ XFS
- ระบบ
- ดีบัส
ในขณะที่ระบบพร้อมใช้งานและเสถียร และฐานข้อมูลทำงานตามปกติ ฉันได้ทำการ ยำปรับปรุง
. ในระหว่างการอัพเดต ไดรฟ์ข้อมูลหลายรายการถูกยกเลิกการต่อเชื่อม รวมถึงฐานข้อมูลที่เชื่อมต่อด้วย สิ่งนี้ส่งผลให้เกิดข้อความตื่นตระหนก:
2021-08-12 21:12:35.418 CEST PANIC: ไม่สามารถเปิดไฟล์ ""/var/lib/pgsql/current/data/global/pg_control"": ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
บันทึกของเจอร์นัลแสดงแพ็คเกจค่อนข้างน้อยที่ได้รับการอัปเดตในไม่กี่นาทีก่อนเกิดข้อผิดพลาดนี้ ไม่มีข้อความบันทึกสื่อกลางจาก postgresql ซึ่งอาจทำให้แคบลง
เห็นได้ชัดว่ามีบางอย่างใน /etc/fstab
ได้รับการกำหนดค่าไม่ถูกต้อง แต่สามารถเห็นข้อความต่อไปนี้ได้นานก่อนที่จะมีการอัปเดต yum:
12 สิงหาคม 18:27:32 git.uibk.ac.at systemd-fstab-generator[19273]: มีการร้องขอการตรวจสอบสำหรับ "ไม่มี" แต่ไม่ใช่อุปกรณ์
และบ่อยครั้งในระหว่างการอัพเดท ดังนั้นฉันคิดว่านี่เป็นปลาเฮอริ่งแดง
Systemd ได้รับการอัปเดตและรีสตาร์ท:
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: กำลังดำเนินการใหม่
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: systemd 219 ทำงานในโหมดระบบ (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
นั่นคือ 45 วินาทีก่อนการชน หลังจากนี้เราจะเห็น:
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: [/etc/systemd/system/rsyslog.service.d/partof-journald.conf:2] การมอบหมายนอกส่วน เพิกเฉย
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: หยุดเป้าหมายระบบไฟล์ระยะไกล
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: การหยุดระบบไฟล์ระยะไกล
12 ส.ค. 21:11:46 น. git.uibk.ac.at systemd[1]: ยกเลิกการตั้งค่าอัตโนมัติ mnt-git\x2drepodata.automount
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: หยุด mnt-git\x2drepodata.automount
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: ตั้งค่า automount mnt-git\x2drepodata.automount
12 ส.ค. 21:11:46 git.uibk.ac.at systemd [1]: ถึงเป้าหมายระบบไฟล์ระยะไกลแล้ว
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: Unset automount Arbitrary Executable File Formats File System Automount Point
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: การหยุดรูปแบบไฟล์ที่เรียกใช้งานได้โดยพลการ File System Automount Point
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: ตั้งค่าการต่อเชื่อมอัตโนมัติโดยพลการ รูปแบบไฟล์ที่ดำเนินการได้ ระบบไฟล์ จุดต่อเชื่อมอัตโนมัติ
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: หยุดระบบไฟล์ในเครื่องเป้าหมาย
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: การหยุดระบบไฟล์ในเครื่อง
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: Unset automount var-lib-pgsql.automount
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: หยุด var-lib-pgsql.automount
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: var-lib-pgsql.automount: Directory /var/lib/pgsql เพื่อเมานต์ไม่ว่างเปล่า เมานต์ต่อไป
ทำไมทำไม???? ....ทำไม๊ยยยยย!!!! ดูเหมือนว่าจะทำงานไม่ถูกต้อง
12 สิงหาคม 21:11:46 git.uibk.ac.at systemd[1]: ตั้งค่า automount var-lib-pgsql.automount
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: Mounting /var/lib/pgsql/current/pg_stat_tmp...
12 ส.ค. 21:11:46 git.uibk.ac.at systemd[1]: ติดตั้ง /var/lib/pgsql/current/pg_stat_tmp
12 ส.ค. 21:11:46 git.uibk.ac.at systemd [1]: ถึงเป้าหมาย Local File Systems แล้ว
ไดรฟ์ข้อมูลนี้ไม่ได้ติดตั้งหลังจากนั้นไม่นาน และต้องติดตั้งใหม่ด้วยมือในระหว่างกระบวนการกู้คืน
ข้อความอื่นๆ สองสามข้อความปรากฏขึ้นก่อนการประชุม PANIC:
12 ส.ค. 21:12:32 git.uibk.ac.at yum[12642]: ติดตั้งแล้ว: kernel-3.10.0-1160.36.2.el7.x86_64
12 ส.ค. 21:12:33 น. git.uibk.ac.at yum[12642]: อัปเดต: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
12 ส.ค. 21:12:33 น. git.uibk.ac.at systemd[1]: กำลังโหลดซ้ำ
12 ส.ค. 21:12:34 git.uibk.ac.at yum[12642]: อัปเดต: 7:lvm2-2.02.187-6.el7_9.5.x86_64
12 สิงหาคม 21:12:34 git.uibk.ac.at yum[12642]: อัปเดต: 1:nfs-utils-1.3.0-0.68.el7.1.x86_64
แล้วสองคนนี้ก็แปลกที่ไม่ได้อยู่ในลำดับที่ถูกต้อง:
12 ส.ค. 21:12:35 น. git.uibk.ac.at systemd[1]: postgresql-12.service: ออกจากกระบวนการหลักแล้ว, รหัส = ออก, สถานะ = 1 / ล้มเหลว
12 ส.ค. 21:12:35 น. git.uibk.ac.at เคอร์เนล: XFS (dm-6): ยกเลิกการต่อเชื่อมระบบไฟล์
dm-6 คือ ตอนนี้ (หลังจากรีบูต) ปริมาณการแลกเปลี่ยนดังนั้น ... ?
ต่อไปนี้เป็นรายการของปริมาณ ไม่รวมผู้ต้องสงสัยตามปกติ:
/dev/mapper/vgdata-git--db บน /var/lib/pgsql ประเภท xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvroot เปิด / พิมพ์ xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvtmp บน /tmp ประเภท xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvvar บน /var ประเภท xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/vda1 บน /boot ประเภท ext4 (rw,relatime,seclabel,data=ordered)
nfsshare:/git/qt-gitlab บน /mnt/git-repodata ประเภท nfs (rw,relatime,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec= sys,mountport=635,mountproto=udp,local_lock=ไม่มี)
ไม่มีใน /var/lib/pgsql/12/pg_stat_tmp ประเภท tmpfs (rw,relatime,seclabel,size=16384k,mode=770,uid=102,gid=26)
systemd-1 บน / mnt / git-repodata ประเภท autofs (rw,relatime,fd=37,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13188)
systemd-1 บน /proc/sys/fs/binfmt_misc ประเภท autofs (rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13146)
systemd-1 บน /var/lib/pgsql ประเภท autofs (rw,relatime,fd=41,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13753)
ฉันไม่เคยเห็นสิ่งนี้เกิดขึ้นมาก่อนในระบบ Linux ที่ทันสมัย นี่คือ "พฤติกรรมที่คาดหวัง" ของ systemd เมื่อมีการอัปเดตหรือดำเนินการใหม่หรือไม่