はじめに
NSO 6.1 での CDB journal Compaction について説明します。
NSO 6.1 での CDB compaction に関する変更
NSO のデフォルトのデータストア、CDB は、コンフィグデータとオペレーショナルデータを XMLで記述保存し、write-ahead logging (WAL/ログ先行書き込み)により永続性 (Durability) を保証します。CDB compaction はデフォルトでは「自動」に設定されており、通常、ユーザーによるアクションは必要ありません。"compaction" とは、コンフィグ、オペレーションデータ、またはスナップショットに関する WAL をパージすることです。NSO が自動で compaction が必要か判断し必要に応じてトランザクション終了後に実施されます。NSO 6.1 から CDB journal compaction についていくつかユーザーによる設定 (パラメーター、function, notification ) が追加されました。 NSO Scheduler を使用した例が examples.ncs/development-guide/periodic-compaction にありますのでご参照下さい。
- コンフィグデータの compaction は NSO が内部の複数の要素をみて閾値を超えたらデフォルトで5秒後に(システムがidle状態であれば)実行されます。このデフォルトの 5秒を任意の値に変更できるようになりました。ncs-config/compaction/delayed-compaction-timeout
- /ncs-config/compactoin/journal-comapction を manual に設定することで、自動の compaction から手動に変更することが可能になりました。その場合、CDB API に追加された機能 (cdb_initiate_journal_compaction(), cdb_get_compaction_info())を利用して外部から管理します。 詳細は API ドキュメンテーションをご参照下さい。
- compaction に関する notification に subscribe 可能になりました。通知の内容は、どのデータストアが compact されたか、手動または自動によるものか、compaction の時間、データストアのサイズ、トランザクション数等があります。
- コンフィグ、オペレーション、スナップショットデータストア毎に compaction 実行のカウンターが追加されました。
- NSO 起動時に CDB compaction が実行されることがあります。任意で--disable-compaction-on-start フラグを付けて NSO を起動することで、起動時の compaction を無効にできます。