Действительно странное слияние зависимостей привело к странному падению базы данных. Контекст:
- ЦенОС 7.9
- ЛВМ2-2.02
- Postgresql 12, с томом данных на томе LVM, в формате XFS
- системад
- dbus
Пока система работала и работала стабильно, а база данных работала нормально, я выполнил ням обновление
. В ходе обновления было размонтировано несколько томов, в том числе и тот, на который была смонтирована база данных. Это привело к паническому сообщению:
2021-08-12 21:12:35.418 CEST PANIC: не удалось открыть файл ""/var/lib/pgsql/current/data/global/pg_control"": такого файла или каталога нет
Журналы journald показывают, что за несколько минут, предшествовавших этому сбою, было обновлено довольно много пакетов. Нет промежуточных сообщений журнала от 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]: настройте автомонтирование mnt-git\x2drepodata.automount.
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]: настройте автоматическое монтирование произвольных форматов исполняемых файлов, файловая система, точка автомонтирования.
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]: отключить автоматическое монтирование 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: Каталог /var/lib/pgsql для монтирования не пуст, все равно монтируется.
Почему, почему???? .... ПОЧЕМУУУУУУ!!!! Во всяком случае, похоже, что он не работал должным образом.
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/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]: достигнуты целевые локальные файловые системы.
Этот том также не был смонтирован вскоре после этого, и его пришлось перемонтировать вручную в процессе восстановления.
Перед PANIC появляется несколько других сообщений:
12 августа, 21:12:32
12 августа, 21:12:33
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
И вот эти два, как ни странно, не в том порядке:
12 августа, 21:12:35 git.uibk.ac.at systemd[1]: postgresql-12.service: основной процесс завершен, код = завершен, статус = 1/FAILURE
12 августа 21:12:35 git.uibk.ac.at ядро: XFS (dm-6): размонтирование файловой системы
дм-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 type 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 при его обновлении или повторном выполнении?