Сбой обновления V18

Чтобы предоставлять качественное ПО и сервисы, мы постоянно отслеживаем проблемы при с миграции клиентов с 3CX V16 (Debian 9) на V18 (Debian 10). Это необходимо для определения причин, вызывающих сбой обновления. В последнее время мы выдели две основные причины, вызывающие сбой – блокировка APT и неподдерживаемые сторонние списки источников ПО.

Блокировка APT

66% систем, на которых происходит корректное прерывание обновления, имеют зависший процесс APT. На них процесс apt-update был запущен еще в 2021 г. и с тех пор находится в зависшем состоянии. Решение весьма простое – перезапустить 3CX до начала обновления.

Узнать, попала ли ваша система в эти 66% случаев можно по первым строкам лог-файла, отправляемого администратору при сбое обновления. Если строки похожи на приведенные ниже, перезагрузка решит проблему, и вы сможете обновиться.

Пример лога при сбое обновления из-за блокировки APT

[19:06:24] Failed: Output of ps aux (apt lock)

/var/lib/apt/lists/lock:
root 15914 0.0 0.1 45940 7548 ? S 2021 14:40 | \_ apt-get update
root 11289 0.0 0.0 12780 916 ? S 19:06 0:0   | \_ grep 15914

[08:14:52] Failed: Output of ps aux (apt lock)

/var/lib/apt/lists/lock:
root 11550 0.0 0.1 45976 7816 ? S Sep24 4:24 | \_ apt-get update
root 28281 0.0 0.0 12780 928 ? S 08:14 0:00  | \_ grep 11550

[14:27:53] Failed: Output of ps aux (apt lock)

/var/lib/apt/lists/lock:
root 14734 0.0 0.4 46288 8336 ? S Sep26 6:04 | \_ apt-get update
root 26262 0.0 0.0 12780 984 ? S 14:27 0:00  | \_ grep 14734

Сторонние списки источников

18% прерванных обновлений связаны с наличием сторонних списков источников в каталоге /etc/apt/sources.list.d/. Чтобы гарантировать успешное обновление, 3CX минимизирует количество сторонних пакетов и списков источников. Мы допускаем только ограниченный набор списков, проверенных нашими инженерами. Поэтому, когда скрипт обновления обнаруживает сторонний список, он прекращает работу, оставляя систему без изменений.

Идентификация и удаление сторонних списков источников

Аналогично предыдущему случаю, определить сторонние списки также несложно. Если в первых строках лога присутствуют подобные строки, удалите все указанные списки.

  • Preparation: Found an uncommon source list in /etc/apt/sources.list.d/: 3xcpbx.list
  • Preparation: Found an uncommon source list in /etc/apt/sources.list.d/: 3cxpbx.listecho
  • Preparation: Found an uncommon source list in /etc/apt/sources.list.d/: hetzner-mirror.list

В этом примере содержатся три списка: hetzner-mirror.list и два, похожих на списки от 3CX, но с некорректными названиями (3xcpbx.list, 3cxpbx.listecho). В этом случае обновление прервется.

Разрешенные списки источников

  • google-cloud.list
  • google-cloud-sdk.list
  • backports.list gce_sdk.list
  • 3cxpbx.list
  • 3cxpbx-testing.list
  • rasp.list
  • digitalocean-agent.list
  • google_osconfig_managed.list
  • google-cloud-monitoring.list
  • google-cloud-logging.list
  • droplet-agent.list

Убедитесь, что все файлы в каталоге /etc/apt/sources.list.d/ включены в вышеуказанный список.

Сбой обновления не связан с этими причинами

Описанные причины покрывают 84% сбоев. Они не влияют на работоспособность системы, поскольку скрипт обновления прерывает работу до внесения каких-либо изменений. Если ваш случай попадает в оставшиеся 16%, ознакомьтесь с этой статьей.

Общие рекомендации

  • Планируйте обновление в нерабочее время.
  • Перед обновлением (это касается любого ПО) сделайте резервную копию конфигурации 3CX (и сохраните ее за переделами сервера 3CX), а также копию всей виртуальной машины.
  • Убедитесь, что система имеет достаточно свободных ресурсов (память и дисковое пространство).
  • Если вы запускаете 3CX на новом сервере, остановите старую систему перед восстановлением резервной копии. Иначе оба сервера будут перехватывать друг у друга привязку FQDN (FQDN будет постоянно менять IP-адрес).