Một hợp lưu phụ thuộc thực sự kỳ lạ đã dẫn đến sự cố cơ sở dữ liệu kỳ lạ. Bối cảnh:
- CentOS 7.9
- LVM2-2.02
- Postgresql 12, với khối lượng dữ liệu trên ổ đĩa LVM, định dạng XFS
- hệ thống
- dbus
Trong khi hệ thống đã hoạt động ổn định và cơ sở dữ liệu chạy bình thường, tôi đã thực hiện một cập nhật yum
. Trong quá trình cập nhật, một số ổ đĩa chưa được đếm, bao gồm cả ổ chứa cơ sở dữ liệu. Điều này dẫn đến thông báo hoảng loạn:
12-08-2021 21:12:35.418 CEST PANIC: không thể mở tệp ""/var/lib/pgsql/current/data/global/pg_control"": Không có tệp hoặc thư mục như vậy
Nhật ký nhật ký cho thấy khá nhiều gói đã được cập nhật trong vài phút trước sự cố này. Không có thông báo nhật ký trung gian nào từ postgresql có thể thu hẹp nó.
Rõ ràng một cái gì đó trong /etc/fstab
được định cấu hình không chính xác, nhưng có thể thấy thông báo sau rất lâu trước khi cập nhật yum:
Ngày 12 tháng 8 18:27:32 git.uibk.ac.at systemd-fstab-generator[19273]: Kiểm tra được yêu cầu cho "không", nhưng nó không phải là thiết bị.
và thường xuyên trong quá trình cập nhật. Vì vậy, tôi coi đây là một con cá trích đỏ.
Systemd được cập nhật và khởi động lại:
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đang thực hiện lại.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: systemd 219 đang chạy trong chế độ hệ thống. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
Đó là 45 giây trước khi va chạm. Ngay sau đó, chúng ta thấy:
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: [/etc/systemd/system/rsyslog.service.d/partof-journald.conf:2] Bài tập bên ngoài phần. phớt lờ.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đã dừng mục tiêu Hệ thống tệp từ xa.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Dừng Hệ thống Tệp Từ xa.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Bỏ đặt tự động đếm mnt-git\x2drepodata.automount.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đang dừng mnt-git\x2drepodata.automount.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Thiết lập tự động đếm mnt-git\x2drepodata.automount.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đã tiếp cận Hệ thống tệp từ xa mục tiêu.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Bỏ đặt tự động đếm Định dạng tệp thực thi tùy ý Điểm tự động đếm của hệ thống tệp.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Dừng các định dạng tệp có thể thực thi tùy ý Điểm tự động đếm của hệ thống tệp.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Thiết lập tự động đếm Định dạng tệp thực thi tùy ý Điểm tự động đếm của hệ thống tệp.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Hệ thống tệp cục bộ mục tiêu đã dừng.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Dừng hệ thống tệp cục bộ.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Bỏ đặt automount var-lib-pgsql.automount.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đang dừng var-lib-pgsql.automount.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: var-lib-pgsql.automount: Thư mục /var/lib/pgsql để gắn kết không trống, dù sao vẫn gắn kết.
Tại sao tại sao???? .... TẠI SAOYYYYYYYYY!!!! Ở bất kỳ giá nào, nó dường như không hoạt động bình thường.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Thiết lập automount var-lib-pgsql.automount.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Gắn /var/lib/pgsql/current/pg_stat_tmp...
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đã gắn /var/lib/pgsql/current/pg_stat_tmp.
Ngày 12 tháng 8 21:11:46 git.uibk.ac.at systemd[1]: Đã tiếp cận Hệ thống tệp cục bộ mục tiêu.
Tập này cũng không được gắn ngay sau đó và phải được đếm lại bằng tay trong quá trình khôi phục.
Một vài thông báo khác xuất hiện trước PANIC:
Ngày 12 tháng 8 21:12:32 git.uibk.ac.at yum[12642]: Đã cài đặt: kernel-3.10.0-1160.36.2.el7.x86_64
Ngày 12 tháng 8 21:12:33 git.uibk.ac.at yum[12642]: Đã cập nhật: 2:vim-enhanced-7.4.629-8.el7_9.x86_64
Ngày 12 tháng 8 21:12:33 git.uibk.ac.at systemd[1]: Đang tải lại.
Ngày 12 tháng 8 21:12:34 git.uibk.ac.at yum[12642]: Đã cập nhật: 7:lvm2-2.02.187-6.el7_9.5.x86_64
Ngày 12 tháng 8 21:12:34 git.uibk.ac.at yum[12642]: Đã cập nhật: 1:nfs-utils-1.3.0-0.68.el7.1.x86_64
Và rồi hai điều này, kỳ lạ thay, không theo đúng thứ tự:
Ngày 12 tháng 8 21:12:35 git.uibk.ac.at systemd[1]: postgresql-12.service: quá trình chính đã thoát, mã=đã thoát, trạng thái=1/THẤT BẠI
Ngày 12 tháng 8 21:12:35 git.uibk.ac.at kernel: XFS (dm-6): Unmounting Filesystem
dm-6 là hiện nay (sau khi khởi động lại) khối lượng hoán đổi, vậy ...?
Đây là danh sách các tập, không bao gồm các tập bị nghi ngờ thông thường:
/dev/mapper/vgdata-git--db trên /var/lib/pgsql gõ xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvroot bật / gõ xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvtmp trên /tmp gõ xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/mapper/vgroot-lvvar trên /var gõ xfs (rw,relatime,seclabel,attr2,inode64,noquota)
/dev/vda1 trên /boot gõ ext4 (rw,relatime,seclabel,data=ordered)
nfsshare:/git/qt-gitlab trên /mnt/git-repodata gõ 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)
không có trên /var/lib/pgsql/12/pg_stat_tmp gõ tmpfs (rw,relatime,seclabel,size=16384k,mode=770,uid=102,gid=26)
systemd-1 trên /mnt/git-repodata kiểu autofs (rw,relatime,fd=37,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13188)
systemd-1 trên /proc/sys/fs/binfmt_misc gõ autofs (rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13146)
systemd-1 trên /var/lib/pgsql gõ autofs (rw,relatime,fd=41,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13753)
Tôi chưa từng thấy điều này xảy ra trước đây trên bất kỳ hệ thống Linux hiện đại nào. Đây có phải là "hành vi dự kiến" của systemd khi nó được cập nhật hoặc thực hiện lại không?