Runbook: minigraph 適用後に reload が完了しない / 起動が固まる¶
実行前提
config load_minigraph -y は config_db.json を minigraph.xml から再生成する破壊的操作で、現行設定は丸ごと上書きされる。SSH session が切れる可能性が高いため、必ず console / mgmt から実施し、sudo cp /etc/sonic/config_db.json /etc/sonic/config_db.json.bak.$(date +%s) と sudo cp /etc/sonic/minigraph.xml /etc/sonic/minigraph.xml.bak.$(date +%s) を取得すること。最悪時は cp で戻し sudo config reload -y -f で復旧する。
症状¶
config load_minigraphが数十分経っても完了しないsystemctl status swssがactivatingのまま- リブート後
show interfaces statusが空
想定原因(優先度順)¶
- minigraph.xml 構文エラー: 解析失敗で
sonic-cfggenが exception - hwsku / platform 不整合: minigraph 内 hwsku が
/usr/share/sonic/device/<platform>/に存在しない - portmap (port_config.ini) との port 数不一致
hostcfgdが CONFIG_DB 待ちで block: 依存サービスが起動順を待っている- swss / syncd が初期化中に SAI エラー
切り分け手順¶
flowchart TD
A[load_minigraph が終わらない] --> B{updategraph 待ち?}
B -- Yes --> B1["/etc/sonic/updategraph.conf を確認"]
B -- No --> C{sonic-cfggen で minigraph parse OK?}
C -- No --> C1[minigraph.xml の XML 妥当性確認]
C -- Yes --> D{config reload 内部で stuck?}
D -- Yes --> D1[config-reload-stuck runbook へ]
D -- No --> E[hostcfgd ログを確認]
確認コマンド¶
1. minigraph 構文¶
sudo sonic-cfggen -m /etc/sonic/minigraph.xml -p /usr/share/sonic/device/<platform>/<hwsku>/port_config.ini --print-data | head
- 期待: JSON 出力
- 異常: Python traceback / XML parse error
2. systemd unit 状態¶
3. hostcfgd / hostcfgd の状態¶
4. config_db.json の生成確認¶
sudo jq '.PORT | keys | length' /etc/sonic/config_db.json
sudo jq '.DEVICE_METADATA.localhost' /etc/sonic/config_db.json
5. SAI 側のエラー¶
対処方法¶
- minigraph 修正後
sudo config load_minigraph -y再実行 - hwsku 差し替え:
sudo sonic-cfggen -H -m -k <hwsku> --write-to-db - 最悪時の復旧:
sudo cp config_db.json.bak.<ts> /etc/sonic/config_db.json && sudo config reload -y -f
関連ページ¶
引用元¶
-
sonic-net/sonic-utilities @ 39732bceb — config/main.py ↩
-
sonic-net/sonic-buildimage @ 4305596 — sonic-config-engine/minigraph.py ↩