Very high SSD writes with Zenarmor + local SQLite — expected behavior?
I recently noticed unexpectedly high SSD wear on my OPNsense system and traced a large part of it back to Zenarmor.
I did a simple A/B test using the NVMe SMART Data Units Written counter, with both measurements running for exactly 16 minutes under otherwise comparable conditions:
Zenarmor OFF
212,834,990 → 212,837,079
= 2,089 data units
≈ 1.07 GB written in 16 min
≈ 96 GB/day
Zenarmor ON
212,837,079 → 212,845,277
= 8,198 data units
≈ 4.20 GB written in 16 min
≈ 378 GB/day
So with Zenarmor enabled, SSD writes increased by roughly 4x, or about 282 GB/day additional writes in this test.
I’m using the local SQLite reporting backend. While Zenarmor is running, the databases and WAL files under /usr/local/datastore/sqlite are continuously updated, especially:
conn_all.sqlite(-wal)dns_all.sqlite(-wal)tls_all.sqlite(-wal)alert_all.sqlite(-wal)http_all.sqlite(-wal)
What makes this concerning is SSD endurance. My SSD is rated for 320 TBW. At around 378 GB/day, that rated write endurance would be reached after only about 2.3 years of 24/7 operation. The Zenarmor-related additional writes alone amount to more than 100 TB/year.
I don’t actually need historical reporting at all - I mainly use Zenarmor for filtering/security. However, I couldn’t find a way to completely disable local reporting/database persistence while keeping the engine enabled.
Has anyone else measured similar write volumes with Zenarmor + SQLite?
Is this considered normal/expected behavior?
And is there any supported way to significantly reduce or completely disable the local reporting writes while keeping the Zenarmor engine active?
-
Official comment
Hi Frank,
Thank you for the detials. We got your request as a ticket as well and investigating it. We will get back to you as soon as possible.
Best regards
Comment actions
Please sign in to leave a comment.
Comments
1 comment