Hur mycket lagringsutrymme lägger Home Assistant till utöver källdata?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Home Assistant lägger inte till någon universell lagringsmultiplikator; overhead beror på händelsefrekvens, sparad historik, statistik, index, loggar, säkerhetskopior, tillägg och tillfälligt arbetsutrymme.

En temperatursensor kan skicka mycket små värden, men ändringarna kan bli tidsstämplade tillstånd, attribut, indexposter, aggregat, säkerhetskopior och filsystemmetadata. Kameraklipp eller data från tillägg kan dominera av helt andra orsaker. En användbar uppskattning skiljer därför mellan varje lagringsroll och mäter dess dagliga tillväxt utifrån hushållets faktiska antal entiteter, uppdateringsintervall, lagringstid, loggnivå och säkerhetskopieringspolicy.

Källvärden blir strukturerade Recorder-data

Källdata är endast värdet som anländer från en enhet eller integration. Recorder lagrar utvalda tillståndsändringar och händelser med tid, entitetsreferenser, attribut och relationsstruktur, så att historik och andra funktioner kan söka i dem. En kort avläsning som 21.4 tar därför upp mer plats än de synliga tecknen när databassidor och relationer räknas med.

Home Assistant underhåller råa tillstånd tillsammans med kort- och långsiktiga statistikformat. Denna detaljerade förklaring av databas- och statistikmodellen visar varför den lagrade datamängden följer ändringsfrekvens och aggregeringsregler snarare än den nominella storleken på sensorinformationen.

Detta första lager är vanligtvis hastighetsdrivet: entiteter som ändras ofta genererar fler rader än stabila entiteter, och utförliga attribut kan förstärka skillnaden. Tusen entiteter innebär inte samma lagringsbehov i alla hem. Overheadprognosen behöver antal ändringar per dag, antal sparade dagar och den genomsnittliga lagrade radens storlek – inte bara antalet entiteter.

Index och databassidor kräver ytterligare strukturellt utrymme

En relationsdatabas behöver strukturer som gör rader beständiga och sökbara. Tabellsidor, index, lediga sidor, journaler och write-ahead-loggar kan ta upp plats utöver det logiska radinnehållet. Dessa strukturer förbättrar konsekvens och frågeprestanda, men filstorleken minskar inte alltid omedelbart när gammal historik tas bort.

SQLite lagrar tabeller och index på sidor med fast storlek, så den fysiska storleken återspeglar sidallokering snarare än en enkel summa av fältlängder. En lättillgänglig guide till SQLite-sidlayout förklarar hur poster, index och ledigt utrymme samexisterar i databasfilen.

Detta skapar två olika mått: logiskt lagrade data och fysiskt allokerad lagring. En rensning kan minska det första utan att omedelbart minska det andra, medan en underhållsåtgärd kan behöva ytterligare tillfälligt utrymme innan plats återlämnas. Kapacitetsplaneringen måste därför behålla arbetsmarginal och inte behandla den aktuella databasfilen som det maximala möjliga behovet.

Statistik byter detaljrikedom mot långsiktig lagring

Korttidshistorik bevarar detaljerade ändringar under en begränsad period, medan långsiktig statistik sparar kompakta aggregat för stödda numeriska entiteter. Aggregering minskar tillväxttakten per entitet jämfört med att behålla varje rått tillstånd för alltid, men skapar en annan beständig datamängd vars livslängd skiljer sig från den vanliga historiken.

En Home Assistant-datamodell kan därför samtidigt innehålla råa tillstånd, korttidsstatistik och timbaserade långtidssammanfattningar. Den praktiska genomgången i denna artikel om tidsserieintegrationer visar varför historisk analys ofta introducerar en lagringsroll utöver styrenhetens behov av aktuella tillstånd.

Resultatet beror på användningen: ett hem med många stabila binära entiteter kan ha måttlig statistikoverhead, medan energi- och miljösensorer kan samla långlivade aggregat. Långtidsstatistik är inte en dubblett av råhistoriken; den bevarar analytiskt värde med lägre upplösning. Uppskatta den som en separat daglig tillväxt i stället för att baka in den i en oförklarad databasfaktor.

Loggar, säkerhetskopior och containerlager mångdubblar lagringsavtrycket

Home Assistants lagring omfattar mer än Recorder. Loggar kan växa under upprepade fel eller felsökningssessioner. Säkerhetskopior kan kopiera databasen, konfigurationen, tilläggens tillstånd och utvalda delade mappar. Containerinstallationer behåller dessutom avbildningar, skrivbara lager, volymer och ibland gamla versioner eller byggcache på samma systemdisk.

Docker-diskanvändning är fördelad över flera lagringsplatser i stället för en enda programkatalog. Denna guide till diskutrymme i Docker skiljer mellan avbildningar, containrar, volymer och cache och hjälper till att förklara varför filsystemets tillväxt kan överstiga den synliga Home Assistant-datamappen.

Hur många säkerhetskopior som sparas mångdubblar utvalda data, men komprimering och inkrementellt beteende kan ändra den exakta kvoten. En aktiv databas på 2 GB innebär inte att varje säkerhetskopia tillför exakt 2 GB, och en liten konfigurationsmapp bevisar inte att säkerhetskopiorna förblir små. Mät arkivens innehåll och antalet sparade generationer separat.

Tillfälligt utrymme skapar en topp över normalnivån

Databasunderhåll, skapande av säkerhetskopior, dekomprimering, uppdateringar, hämtning av avbildningar och migreringar kan kräva tillfälligt utrymme medan de gamla och nya versionerna samexisterar. Denna topp är lätt att missa eftersom den försvinner efter en lyckad åtgärd. Den blir ett tillförlitlighetsproblem när ett jobb behöver lediga block för att slutföras, men den normala datamängden redan har fyllt större delen av disken.

SQLite-huvuddatabasen och WAL-filen kan behålla allokerat utrymme tills villkor för checkpoint eller komprimering är uppfyllda. En prestandaanalys av SQLite-filväxt förklarar varför databasen och write-ahead-loggen kan växa annorlunda än de logiska data som är synliga för programmet.

Den nödvändiga toppen beror på åtgärden. En omskrivning av databasen kan behöva utrymme som står i relation till databasens storlek, medan en uppdatering av en avbildning tillfälligt kan behålla både gamla och nya lager. ZimaSpaces vägledning om ledigt lagringsutrymme för Home Assistant-jobb anger praktiska tröskelvärden när overheadkomponenterna har identifierats.

När en enda overheadkvot inte fungerar

En fast procentsats fungerar inte när en komponent dominerar. Felsökningsloggar kan växa snabbare än Recorder under en felloop; lokal kameramedia kan överstiga alla databastabeller tillsammans; ett stort tillägg kan utöka sin egen volym; eller en lång lagringspolicy för säkerhetskopior kan göra kopiorna större än aktiva tillstånd. Förändringar i arbetsbelastningen gör dessutom gårdagens kvot inaktuell.

Guider om fulla containerdiskar skiljer mellan avbildningar, skrivbara lager, loggar, volymer och byggcache, just eftersom varje del har en annan tillväxtmekanism. Inventeringen i fem delar i denna analys av Docker-lagring visar varför en enda totalsiffra på toppnivå inte kan identifiera den avgörande källan.

Kvoten är också missvisande mellan olika installationstyper. Home Assistant OS, en container, en virtuell maskin och ett övervakat värdpaket hanterar systemdata på olika sätt. Jämför likvärdiga installationer och håll media eller orelaterade programdata utanför beräkningen, såvida Home Assistant-säkerhetskopian eller körmiljön faktiskt inte äger dem.

Skapa en modell för lagringstillväxt över sju dagar

Ta en baslinje för databasfiler, konfiguration, loggar, säkerhetskopior, tilläggsvolymer, containeravbildningar och lager, media samt ledigt utrymme. Håll inställningarna för lagringstid och loggning konstanta under sju representativa dagar. Registrera varje komponent dagligen vid samma tid och notera uppdateringar, omstarter, säkerhetskopieringar, ovanliga fel eller tillagda enheter.

Arbete med lagringshantering börjar med synlighet, eftersom volymer, avbildningar, skrivbara lager och cache har separata livscykler. Denna artikel om Docker-lagringens interna funktion hjälper till att fördela uppmätta byte mellan beständiga programdata och overhead från körmiljöns paketering.

Beräkna den dagliga tillväxten för varje roll, multiplicera med dess egen lagringstid och lägg sedan till den största observerade tillfälliga toppen samt en återhämtningsreserv. Kontrollera på nytt efter att du har lagt till integrationer eller ändrat loggning, media eller säkerhetskopior. Den komponentbaserade modellen ger ett försvarbart kapacitetsintervall; en universell faktor kan inte göra det.

Teknik- och AI-hubb

Mer att läsa

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.