Created attachment 22732 [details] Журнал загрузки Altlinux Server V p11, пакет openvswitch-3.3.8-alt1.x86_64 Шаги ==== При тестировании необходимо добавить OVS-бридж. 1. # apt-get install - y openvswitch 2. # systemctl enable --now openvswitch 3. Создать в PVE:8006 сетевой мост vmbr0 10.0.1.2/24 c типом "Open vSwitch", выбрать добавленные интерфейсы 5. Применить. 6. Проверить # ip -c a, # ip -c l, # ovs-vsctl show. 7. Перезагрузить систему. 8. Сеть не подымается После перезагрузки не подымается мост OVS. Т.к. в файлах /usr/lib/systemd/system/ovsdb-server.service /usr/lib/systemd/system/ovs-vswitchd.service /usr/lib/systemd/system/openvswitch.service указан network.service вместо networking.service [Unit] ... Before=network.target network.service В p11 юниты networking.service и OVS не упорядочены друг относительно друга . Networking.service на загрузке запускается одновременно с Open vSwitch и пытается создать vmbr3, когда ovsdb-server ещё не поднялся. Из-за этого vmbr0 не создаётся, адрес 10.0.1.2 не назначается
Версия пакетов: openvswitch-3.3.8-alt1.x86_64 ifupdown2-3.3.0.11-alt1.noarch Воспроизвести ошибку явным образом не удалось, поскольку сервис ovsdb-server достаточно быстро запускается при попытке воспроизведения на "свежей" ВМ Однако ошибку подтверждаю: В p11 юниты networking.service (ifupdown2) и OVS (ovsdb-server.service, ovs-vswitchd.service, openvswitch.service) не упорядочены друг относительно друга. В файлах OVS-юнитов указано Before=network.target network.service, но на ALT Server V с ifupdown2 юнит называется networking.service, а не network.service. Из-за этого при загрузке оба сервиса стартуют параллельно, и если ovsdb-server поднимается позже (на медленном железе), ifupdown2 не может создать OVS-мост. Шаги воспроизведения: 1. Для воспроизведения было выполнено искусственное замедление ovsdb-server (чтобы воспроизвести гонку на быстрой ВМ засчет добавления 5-секундной задержки перед стартом ovsdb-server): # mkdir -p /etc/systemd/system/ovsdb-server.service.d # cat > /etc/systemd/system/ovsdb-server.service.d/slowdown.conf << 'EOF' [Service] ExecStartPre=/bin/sleep 5 EOF # systemctl daemon-reload 2. Перезапустить систему: # reboot 3. Проверить статус сети после перезагрузки Ожидаемый результат: - После перезагрузки mост vmbr1 существует, IP-адрес назначен. - В логах видно, что ovsdb-server поднялся до того, как ifupdown2 попытался создать мост. Реальный результат: - После перезагрузки mост vmbr1 отсутствует, адрес не назначен. - В логах видно, что ifupdown2 попытался создать мост до того, как ovsdb-server стал готов. - Ошибка: ovs-vsctl: unix:/run/openvswitch/db.sock: database connection failed (No such file or directory) # ip -c a | grep -A3 vmbr1 (пусто — интерфейс не существует) Пояснение: Интерфейс vmbr1 не создан, адрес 192.168.0.100/24 не назначен. Сеть на OVS-мосте недоступна. # ovs-vsctl show 57a19386-82e8-4589-8827-fb7b4b45db10 ovs_version: "3.3.8" Пояснение: В базе данных OVS нет моста vmbr1 — только пустая БД с версией OVS. Мост не был создан при загрузке. # ip link show vmbr1 Device "vmbr1" does not exist. Пояснение: Подтверждение, что интерфейс vmbr1 отсутствует в системе. # journalctl -b | grep -E "networking|ovsdb|vmbr" ноя 03 14:41:24 pve01 systemd[1]: Starting networking.service - Network initialization... ноя 03 14:41:24 pve01 networking[868]: networking: Configuring network interfaces ноя 03 14:41:24 pve01 systemd[1]: Starting ovsdb-server.service - Open vSwitch Database Unit... ноя 03 14:41:24 pve01 ovs-vsctl[976]: ovs|00001|vsctl|INFO|Called as /usr/bin/ovs-vsctl -- --may-exist add-br vmbr1 ноя 03 14:41:24 pve01 networking[962]: error: cmd '/usr/bin/ovs-vsctl -- --may-exist add-br vmbr1' failed: returned 1 (ovs-vsctl: unix:/run/openvswitch/db.sock: database connection failed (No such file or directory) ноя 03 14:41:24 pve01 networking[962]: ) ноя 03 14:41:24 pve01 /usr/sbin/ifup[962]: error: cmd '/usr/bin/ovs-vsctl -- --may-exist add-br vmbr1' failed: returned 1 (ovs-vsctl: unix:/run/openvswitch/db.sock: database connection failed (No such file or directory) ноя 03 14:41:25 pve01 systemd[1]: Finished networking.service - Network initialization. ноя 03 14:41:29 pve01 ovs-ctl[1042]: Starting ovsdb-server. ноя 03 14:41:29 pve01 systemd[1]: Started ovsdb-server.service - Open vSwitch Database Unit. Пояснение по логу: 1. 14:41:24 — networking.service и ovsdb-server.service стартовали параллельно (нет упорядочивания). 2. 14:41:24 — ifupdown2 попытался создать мост: ovs-vsctl add-br vmbr1. 3. 14:41:24 — Команда упала с ошибкой: "database connection failed (No such file or directory)" — сокета /run/openvswitch/db.sock ещё нет, потому что ovsdb-server не поднялся. 4. 14:41:25 — networking.service завершился (с ошибкой, но systemd считает его успешным, т.к. ifupdown2 не возвращает код ошибки). 5. 14:41:29 — ovsdb-server поднялся только через 5 секунд (из-за искусственной задержки ExecStartPre=/bin/sleep 5). 6. Мост vmbr1 так и не был создан — ifupdown2 не повторяет попытку.