バグ #1016
nop_thread さんが26日前に更新
# DB 肥大化
```
/etc/step-ca/db# ls -lh
total 377M
-rw------- 1 root root 834M Apr 16 07:05 000005.vlog
...
```
同ディレクトリ内の sst というのが LSM tree で vlog が value log らしい。
で、この vlog ファイルが全然 gc されないようで、他のユーザの報告だと[数十〜数百 GB](https://github.com/smallstep/certificates/issues/159#issue-552269303) とかになる例もあるそう。
弊鯖でも一度この問題に気付いていない頃に disk full (quota exceeded) で CA が止まって大変なことになった。
ファイルが 834 MiB (と、加えて LSM tree で計数十〜数百 MiB) で "total 377M" 程度で済んでいるのは ZFS の透過的圧縮のおかげと思われる。
# 回避策
## badger ではどうしようもなさそう
デフォルトの badger V2 のバックエンドではこの問題が解決しそうな気配がない。
* [DB consumes lots of disk · Issue #159 · smallstep/certificates](https://github.com/smallstep/certificates/issues/159)
* [Database cleanup procedure for ACME data · Issue #473 · smallstep/certificates](https://github.com/smallstep/certificates/issues/473)
加えて、問題の調査や DB の中身を弄るのにもいちいち go でコードを書かないといけないので、トラブルシューティングが非常に面倒。
## 別のバックエンド (RDBMS)
* [Configuring open source step-ca | Smallstep](https://smallstep.com/docs/step-ca/configuration/#databases)
badger 以外のデータベースバックエンドにも対応しているようなので、 MySQL (というか MariaDB だが) などを使ってみるのが良いかもしれない。
そうすれば肥大化の問題が残るとしても SQL を直接叩いて不要そうなものを自動的かつ定期的に削ることができるはず。