Hoeveel opslagoverhead voegt Home Assistant toe boven op de brongegevens?

Eva Wong is de Technisch Schrijver en en vaste knutselaar bij ZimaSpace. Een levenslange geek met een passie voor homelabs en open-source software, zij is gespecialiseerd in het vertalen van complexe technische concepten naar toegankelijke, praktische handleidingen. Eva gelooft dat zelf-hosting leuk moet zijn, niet intimiderend. Met haar tutorials stelt ze de community in staat om hardware-setup te ontrafelen, van het bouwen van hun eerste NAS tot het beheersen van Docker-containers.

Home Assistant voegt geen universele opslagfactor toe; de overhead hangt af van de gebeurtenisfrequentie, bewaarde geschiedenis, statistieken, indexen, logboeken, back-ups, add-ons en tijdelijke werkruimte.

Een temperatuursensor kan kleine waarden verzenden, maar wijzigingen daarin kunnen worden opgeslagen als toestanden met tijdstempels, attributen, indexvermeldingen, aggregaten, back-upkopieën en metadata van het bestandssysteem. Cameraclips of add-ongegevens kunnen om geheel andere redenen de meeste ruimte innemen. Een bruikbare schatting splitst elke opslagfunctie daarom afzonderlijk op en meet de dagelijkse groei op basis van het werkelijke aantal entiteiten in het huishouden, de updatesnelheid, bewaartermijn, logboekniveau en het back-upbeleid.

Bronwaarden worden gestructureerde Recorder-gegevens

Brongegevens zijn alleen de waarden die van een apparaat of integratie binnenkomen. Recorder slaat geselecteerde toestandswijzigingen en gebeurtenissen op, met tijdstippen, verwijzingen naar entiteiten, attributen en een relationele structuur, zodat de geschiedenis en andere functies deze kunnen opvragen. Een korte meting zoals 21.4 neemt daardoor meer ruimte in dan alleen de zichtbare tekens zodra databasepagina's en relaties worden meegerekend.

Home Assistant bewaart onbewerkte toestanden naast statistische vormen voor de korte en lange termijn. Deze gedetailleerde uitleg van het databasemodel en statistiekmodel laat zien waarom de bewaarde omvang wordt bepaald door de wijzigingsfrequentie en aggregatieregels, en niet door de nominale grootte van de sensorpayload.

Deze eerste laag wordt doorgaans door de frequentie bepaald: entiteiten die vaak veranderen genereren meer rijen dan stabiele entiteiten, en uitgebreide attributen kunnen het verschil vergroten. Duizend entiteiten betekenen niet in elk huis evenveel opslag. Voor het voorspellen van overhead zijn wijzigingen per dag, het aantal bewaarde dagen en de gemiddelde omvang van een opgeslagen rij nodig — niet alleen het aantal entiteiten.

Indexen en databasepagina's voegen structurele ruimte toe

Een relationele database heeft structuren nodig om rijen duurzaam op te slaan en doorzoekbaar te maken. Tabelpagina's, indexen, vrije pagina's, journals en write-ahead-logs kunnen extra ruimte innemen boven op de logische inhoud van rijen. Deze structuren verbeteren de consistentie en queryprestaties, maar hun bestandsgrootte neemt niet altijd onmiddellijk af wanneer oude geschiedenis wordt verwijderd.

SQLite slaat tabellen en indexen op in pagina's met een vaste grootte, waardoor de fysieke omvang de paginatoewijzing weerspiegelt en niet simpelweg de som van veldlengtes is. Een toegankelijke uitleg van de pagina-indeling van SQLite legt uit hoe records, indexen en vrije ruimte naast elkaar bestaan in het databasebestand.

Hierdoor ontstaan twee verschillende metingen: logisch bewaarde gegevens en fysiek toegewezen opslag. Een opschoning kan het eerste verminderen zonder het tweede onmiddellijk te verkleinen, terwijl een onderhoudsactie extra tijdelijke ruimte nodig kan hebben voordat ruimte wordt vrijgegeven. Bij capaciteitsplanning moet daarom voldoende werkruimte worden aangehouden, in plaats van het huidige databasebestand als de maximaal mogelijke behoefte te beschouwen.

Statistieken ruilen detail in voor langdurige bewaring

Kortetermijngeschiedenis bewaart gedetailleerde wijzigingen gedurende een beperkt venster, terwijl langetermijnstatistieken compacte aggregaten bijhouden voor ondersteunde numerieke entiteiten. Aggregatie verlaagt de groeisnelheid per entiteit ten opzichte van het voor altijd bewaren van elke onbewerkte toestand, maar creëert een extra permanente dataset met een andere levensduur dan gewone geschiedenis.

Een gegevensmodel van Home Assistant kan daardoor tegelijk onbewerkte toestanden, statistische metingen op korte termijn en uurlijkse samenvattingen voor de lange termijn bevatten. De praktische uitsplitsing in dit artikel over tijdreeksintegraties laat zien waarom historische analyse vaak een extra opslagfunctie introduceert naast de behoeften van de controller voor huidige toestanden.

Het resultaat hangt af van de situatie: een huis met veel stabiele binaire entiteiten kan bescheiden statistische overhead hebben, terwijl energiesensoren en omgevingssensoren langdurige aggregaten kunnen opbouwen. Langetermijnstatistieken zijn geen dubbele onbewerkte geschiedenis; ze bewaren analytische waarde op een lager detailniveau. Schat ze als een afzonderlijke dagelijkse groeisnelheid in, in plaats van ze op te nemen in één onverklaarde databasefactor.

Logboeken, back-ups en containerlagen vergroten de opslagvoetafdruk

De opslag van Home Assistant omvat meer dan Recorder. Logboeken kunnen groeien tijdens herhaalde fouten of foutopsporingssessies. Back-ups kunnen de database, configuratie, add-onstatus en geselecteerde gedeelde mappen kopiëren. Containerimplementaties bewaren daarnaast images, beschrijfbare lagen, volumes en soms oude versies of een buildcache op dezelfde systeemschijf.

Docker-schijfruimte is verdeeld over verschillende opslaglocaties en niet over één applicatiemap. Deze handleiding voor Docker-schijfruimte splitst images, containers, volumes en cache op en helpt verklaren waarom de groei van het bestandssysteem groter kan zijn dan de zichtbare gegevensmap van Home Assistant.

De bewaartermijn van back-ups vermenigvuldigt geselecteerde gegevens met het aantal kopieën, maar compressie en incrementeel gedrag kunnen de exacte verhouding veranderen. Een actieve database van 2 GB betekent niet dat elke back-up precies 2 GB toevoegt, en een kleine configuratiemap bewijst evenmin dat back-ups klein blijven. Meet de inhoud van het archief en het aantal bewaarde generaties afzonderlijk.

Tijdelijke ruimte zorgt voor een piek boven de stabiele toestand

Databaseonderhoud, het maken van back-ups, decompressie, updates, het ophalen van images en migraties kunnen tijdelijke ruimte vereisen terwijl de oude en nieuwe versies naast elkaar bestaan. Deze piek wordt gemakkelijk over het hoofd gezien omdat hij na een geslaagde bewerking verdwijnt. Dat wordt een betrouwbaarheidsprobleem wanneer een taak vrije blokken nodig heeft om te voltooien, maar de stabiele dataset het grootste deel van de schijf al heeft gevuld.

De hoofddatabase en WAL van SQLite kunnen toegewezen ruimte behouden totdat aan voorwaarden voor checkpointing of compactie is voldaan. Een prestatieanalyse van groei van SQLite-bestanden legt uit waarom de database en write-ahead-log anders kunnen groeien dan de logische gegevens die voor de applicatie zichtbaar zijn.

De vereiste piek hangt af van de bewerking. Voor het herschrijven van een database kan ruimte nodig zijn die verband houdt met de omvang van de database, terwijl een image-update tijdelijk zowel oude als nieuwe lagen kan bewaren. De ZimaSpace-richtlijnen voor vrije opslagruimte voor Home Assistant-taken geven operationele drempelwaarden nadat de onderdelen van de overhead zijn geïdentificeerd.

Waar één overheadverhouding tekortschiet

Een vast percentage schiet tekort wanneer één onderdeel de opslag domineert. Foutopsporingslogboeken kunnen Recorder overtreffen tijdens een foutlus; lokale cameramedia kunnen elke databasetabel overschaduwen; een grote add-on kan zijn eigen volume uitbreiden; of een lange bewaartermijn voor back-ups kan kopieën groter maken dan de actieve toestand. Veranderingen in de werklast maken de verhouding van gisteren bovendien verouderd.

Handleidingen over volle containeropslag splitsen images, beschrijfbare lagen, logboeken, volumes en buildcache precies op omdat elk onderdeel een ander groeimechanisme heeft. De vijfdelige inventaris in deze analyse van Docker-opslag laat zien waarom één totaalcijfer op hoofdniveau niet kan aangeven welke bron bepalend is.

De verhouding is ook misleidend tussen verschillende installatietypen. Home Assistant OS, een container, een virtuele machine en een pakketinstallatie op een beheerde host slaan systeemgegevens op verschillende manieren op. Vergelijk gelijke situaties en houd media of gegevens van niet-gerelateerde applicaties buiten de berekening, tenzij de back-up of runtime van Home Assistant deze daadwerkelijk beheert.

Maak een model voor zeven dagen opslaggroei

Neem één nulmeting op voor databasebestanden, configuratie, logboeken, back-ups, add-onvolumes, containerimages en -lagen, media en vrije ruimte. Houd de instellingen voor bewaartermijn en logboekregistratie zeven representatieve dagen constant. Registreer elk onderdeel dagelijks op hetzelfde tijdstip en noteer updates, herstarts, back-uptaken, ongebruikelijke fouten of toegevoegde apparaten.

Werk voor opslagbeheer begint met inzicht, omdat volumes, images, beschrijfbare lagen en cache afzonderlijke levenscycli hebben. Dit artikel over de interne werking van Docker-opslag helpt gemeten bytes toe te wijzen aan permanente applicatiegegevens versus overhead van de runtimeverpakking.

Bereken voor elke functie de dagelijkse groei, vermenigvuldig die met de bijbehorende bewaartermijn en tel vervolgens de grootste waargenomen tijdelijke piek en een herstelreserve op. Controleer dit opnieuw na het toevoegen van integraties of het wijzigen van logboeken, media of back-ups. Dit model per onderdeel levert een verdedigbare capaciteitsmarge op; een universele factor kan dat niet.

Tech & AI HUB

Meer om te lezen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.