ZFS ögonblicksbilder: Hur man skapar, återställer och automatiserar dem
10 min läsning - 5 maj 2026

Lär dig hur du skapar, återställer och automatiserar ZFS-snapshots på Linux. Omfattar kommandon, rollback, lagringspolicyer och off-site replikering med Sanoid
ZFS ögonblicksbilder: Hur man skapar, återställer och automatiserar dem
En ZFS-ögonblicksbild är en skrivskyddad, punktlig kopia av ditt filsystem. Den skapas direkt, tar inget utrymme i anspråk förrän data ändras och låter dig rulla tillbaka eller återställa filer på några sekunder. Om du hanterar servrar, VPS-instanser eller något annat med data som du inte har råd att förlora, bör ögonblicksbilder vara en del av ditt arbetsflöde.
Det här inlägget beskriver hur ZFS-snapshots fungerar, hur du använder dem och hur du automatiserar lagring så att de inte staplas på hög.
Hur ZFS-snapshots fungerar
ZFS använder en CoW-modell (copy-on-write). När du tar en ögonblicksbild duplicerar inte ZFS några data. Den registrerar helt enkelt det aktuella tillståndet i blockpekarträdet. Nya skrivningar går till lediga block, medan ögonblicksbilden fortsätter att referera till originalen.
Det innebär att ögonblicksbilder skapas på mikrosekunder oavsett datasetets storlek, och de förbrukar inget extra utrymme vid skapandet. De börjar bara använda utrymme när den aktuella datauppsättningen ändras, eftersom ögonblicksbilden håller fast vid de ursprungliga blocken som annars skulle ha frigjorts.
Detta skiljer sig fundamentalt från verktyg för säkerhetskopiering på filnivå som rsync eller tar, som skannar och kopierar hela filer. Om du ändrar 4KB av en 10GB-fil kopierar rsync hela filen. ZFS sparar bara 4KB-blocket.
Ögonblicksbilder är också oföränderliga. De är skrivskyddade på kärnnivå, så processer i användarutrymmet (inklusive ransomware) kan inte ändra dem. I kombination med ZFS:s inbyggda kontrollsumma innebär detta att du kan verifiera dataintegriteten vid återställning.
Skapa ögonblicksbilder
Förutsättningar
Du behöver ha ZFS installerat och en pool konfigurerad. På Ubuntu 20.04+:
sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfsSkapa en pool. För en enda disk (typiskt på en VPS):
sudo zpool create tank /dev/sdbFör en speglad installation på en dedikerad server, använd disk-ID:n istället för enhetsnamn för att undvika problem efter omstarter:
sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2Aktivera komprimering (LZ4 är snabbt och effektivt):
sudo zfs set compression=lz4 tankSkapa sedan datauppsättningar för dina arbetsbelastningar:
sudo zfs create tank/web
sudo zfs create tank/databasesTa en ögonblicksbild
Det grundläggande kommandot:
sudo zfs snapshot tank/web@before-updateFör tidsstämplade namn (användbart med cron):
sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)För att fånga alla underordnade dataset på en gång, använd den rekursiva flaggan:
sudo zfs snapshot -r tank@daily_backupVerifiera med:
sudo zfs list -t snapshotÅterställa från ögonblicksbilder
Återställa enskilda filer
Varje ZFS-dataset har en dold .zfs/snapshot-katalog vid sin monteringspunkt. Den visas inte i ls, men du kan navigera direkt till den:
ls /tank/web/.zfs/snapshot/before-update/Så här återställer du en enskild fil:
cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/Flaggan -p bevarar behörigheter och tidsstämplar.
Återställa en hel datauppsättning
Om du behöver återställa allt, t.ex. efter en misslyckad uppgradering:
sudo zfs rollback tank/web@before-updateDetta sker nästan omedelbart eftersom ZFS uppdaterar blockpekare i stället för att kopiera data. Men det är destruktivt: alla ändringar som gjorts efter ögonblicksbilden går förlorade permanent.
Om det finns nyare ögonblicksbilder mellan målet och det aktuella tillståndet kommer ZFS att blockera återställningen. Använd -r för att tvinga fram den och ta bort de mellanliggande ögonblicksbilderna:
sudo zfs rollback -r tank/db@20260426_090000En god vana: ta en ögonblicksbild av det aktuella (trasiga) tillståndet innan du rullar tillbaka, så att du har en reservlösning om det behövs.
| Metod för återställning | Hastighet | Risk för dataförlust | Bäst för |
|---|---|---|---|
Återställning av filer via .zfs | Beror på filstorlek | Ingen återställning | Oavsiktlig radering, återställning av enstaka filer |
| Fullständig återställning | Omedelbart | Hög (förlorar alla ändringar efter snapshot) | Misslyckade uppgraderingar, systemomfattande problem |
| Klon för testning | Omedelbar | Ingen (skapar en parallell datauppsättning) | Verifiera innan du gör en rollback |
Hantera och beskära snapshots
Snapshots börjar med noll storlek men växer i takt med att live-data ändras under dem. För att kontrollera utrymmesanvändningen:
zfs list -t snapshot -o name,used,refer,creationKolumnen USED visar hur mycket utrymme som är unikt för den ögonblicksbilden. REFER visar datasetets totala storlek när ögonblicksbilden togs.
Så här tar du bort en ögonblicksbild:
sudo zfs destroy tank/web@before-updateDu kan också radera efter mönster:
sudo zfs destroy tank/web@daily-2026-04-%Gör alltid en torrkörning först:
sudo zfs destroy -nv tank/web@daily-%ZFS kan tekniskt hantera miljontals ögonblicksbilder, men prestandan försämras efter några tusen per dataset. Kommandon som zfs list och zfs destroy saktar ner märkbart. Håll kvarhållningen stram.
Automatisera lagring med Sanoid
Sanoid är standardverktyget för att automatisera skapandet och beskärningen av ZFS-snapshots. Du definierar lagringspolicyer i sanoid.conf, och det hanterar resten.
En typisk produktionskonfiguration kan se ut så här:
| Typ av arbetsbelastning | Varje timme | Dagligen | Veckovis | Månadsvis |
|---|---|---|---|---|
| Standardproduktion | 24-48 | 30 | 8 | 12 |
| Databas (hög churn) | 72 | 30 | 12 | 24 |
| Loggar / låg prioritet | 12-24 | 7 | 0 | 3 |
| Statisk media | 0 | 7 | 0 | 3 |
Sanoid stöder också ögonblicksbilder under timmen via parametern frequently. Om du ställer in frequently = 96 och frequent_period = 15 får du en ögonblicksbild var 15:e minut.
Schemalägg Sanoid via cron för att köra varje minut eller var 15:e minut, så kommer den att skapa och beskära ögonblicksbilder automatiskt.
Replikering på annan plats med zfs send
Ögonblicksbilder på en enda server skyddar mot oavsiktliga ändringar och programvarufel, men inte mot hårdvaruförlust. Replikera därför på annan plats med hjälp av zfs send och zfs receive över SSH:
zfs send tank/web@backup | ssh user@remote zfs receive backup/webFör inkrementella överföringar (skickar bara det som ändrats sedan den senaste ögonblicksbilden):
zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/webSanoids följeslagarverktyg, syncoid, automatiserar denna process och hanterar inkrementella sändningar, felåterställning och loggning.
En anmärkning om skydd mot utpressningstrojaner
ZFS-snapshots är skrivskyddade på kärnnivå, vilket innebär att vanlig skadlig kod inte kan ändra eller kryptera dem. Det är ett starkt försvarslager. Men det är inte skottsäkert: om en angripare får root-åtkomst kan de ta bort ögonblicksbilder innan de krypterar dina data.
Snapshots bör vara ett lager i en bredare strategi. Kombinera dem med replikering på annan plats, begränsad root-åtkomst och säkerhet på nätverksnivå. Lita inte enbart på ögonblicksbilder.
Video-rekommendation
Avslutande tankar
ZFS-snapshots är snabba, utrymmeseffektiva och enkla att använda när du väl förstår grunderna. De ersätter inte säkerhetskopiering på annan plats, men de fyller en lucka som traditionella säkerhetskopieringsverktyg inte kan fylla: omedelbara återställningspunkter utan omkostnader som du kan ta så ofta du behöver.
Om du kör ZFS på en VPS eller dedikerad server kan du konfigurera Sanoid, definiera en lagringspolicy och automatisera replikering. Det tar 30 minuter att konfigurera och sparar timmar när något går fel. Testa det på en FDC VPS eller dedikerad server.

ZFS ögonblicksbilder: Hur man skapar, återställer och automatiserar dem
Lär dig hur du skapar, återställer och automatiserar ZFS-snapshots på Linux. Omfattar kommandon, rollback, lagringspolicyer och off-site replikering med Sanoid
10 min läsning - 5 maj 2026
Så här installerar och använder du Redis på en VPS
9 min läsning - 7 januari 2026

Har du frågor eller behöver du en anpassad lösning?
Flexibla alternativ
Global räckvidd
Omedelbar driftsättning
Flexibla alternativ
Global räckvidd
Omedelbar driftsättning