Чтобы предоставлять качественное ПО и сервисы, мы постоянно отслеживаем проблемы при с миграции клиентов с 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-адрес).