Runbook: コンテナが起動しない (FEATURE)¶
実行前提
config feature state <feature> disabled → enabled の toggle は当該機能(bgp / teamd / lldp 等)を 5~15 秒中断する。bgp / swss / syncd を disabled にすると data plane / control plane が落ちる ため絶対に redundant ToR がない状態で実施しない。実行前に sudo cp /etc/sonic/config_db.json /etc/sonic/config_db.json.bak.$(date +%s) で backup、show feature status > /tmp/feature.bak で現状保存。誤って必須 feature を disable してしまった場合は config feature state <feature> enabled で即時復旧、それで戻らなければ backup を戻して config reload -y。
症状¶
show feature statusで対象 feature がenabledだが state がfailed/exiteddocker psに該当コンテナが居ないsystemctl status <feature>.serviceがactivating/failedループ
確認コマンド¶
# feature の状態と CONFIG_DB / STATE_DB 整合
show feature status
sonic-db-cli CONFIG_DB hgetall "FEATURE|<name>"
sonic-db-cli STATE_DB hgetall "FEATURE|<name>"
# systemd unit (multi-asic は <name>@<asic> も確認)
sudo systemctl status <name>
sudo journalctl -u <name> -n 200
# docker image / リソース
docker images | grep -E "sonic-(bgp|swss|teamd|snmp|database|pmon|nat|dhcp)"
df -h / ; df -hi ; free -h
想定原因¶
FEATURE|<name>のstateがdisabled/always_disabled→ hostcfgd が起動を抑制- 対象 feature の sub-system 依存が満たされない (例:
bgpの起動にはswssが先に Ready) - イメージ pull / 展開失敗: docker image が存在しない or 破損
- 設定ファイル不備:
/etc/sonic/config_db.jsonの必須 key 欠落で起動スクリプトが abort - リソース不足: tmpfs 領域 / inode / shared memory 枯渇
切り分け手順¶
flowchart TD
A[docker container が起動しない] --> B{feature state = enabled?}
B -- No --> B1[config feature state <name> enabled]
B -- Yes --> C{systemd unit active?}
C -- No --> C1[journalctl -u <unit> でエラー確認]
C -- Yes --> D{docker image 存在?}
D -- No --> D1[image pull / load を実行]
D -- Yes --> E{依存サービス起動済み?}
E -- No --> E1[database / swss の起動順を確認]
E -- Yes --> F[hostcfgd / hostservice のログ確認]
1. feature 設定¶
show feature status
sonic-db-cli CONFIG_DB hgetall "FEATURE|bgp"
sonic-db-cli STATE_DB hgetall "FEATURE|bgp"
- 期待:
state: enabled,auto_restart: enabled - 異常:
always_disabled→ そのプラットフォームでサポート対象外
2. systemd ユニット状態¶
- 期待:
active (running) - 異常:
activating (start-pre)で stuck → start-pre script の確認
3. docker image 存在¶
- 期待: 該当 image がある
- 異常: 無い / 古い → イメージ再 install 必要 (
sonic-installer install <image>)
4. hostcfgd / hostservice の起動ログ¶
5. リソース状況¶
- 期待:
//varに空きあり、inode 残あり - 異常: 容量不足 → core file / 古い log / docker image を整理
対処方法¶
- 有効化:
sudo config feature state bgp enabled - 個別 unit restart:
sudo systemctl restart bgp(multi-asic はbgp@0) - イメージ修復:
sudo sonic-installer install <SONiC.bin>で再導入、または該当 docker image を再 load - 起動順序問題は
database→swss→syncd→ 他、の dependency を確認
確認¶
対処後の正常化を以下で裏取りする。
- 症状解消: 「症状」節で挙げた事象 (counter / log / state) が回復していること
- 再発監視: 数分〜数十分の間隔で同コマンドを再実行し、値がフラップしていないこと
- 副作用なし: 関連サブシステム (syslog /
show interfaces counters errors/show ip bgp summary等) に新規 error が出ていないこと - 永続化:
sudo config save -y済みでconfig_db.jsonに変更が反映されていること (恒久対処の場合)
短時間で再発する場合は「想定原因」リストの次候補に進む。
関連ページ¶
引用元¶
-
sonic-net/sonic-utilities @ 39732bceb — config feature state ↩