ZFS ögonblicksbilder: Hur man skapar, återställer och automatiserar dem

10 min läsning - 5 maj 2026

hero section cover
Innehållsförteckning
  • ZFS ögonblicksbilder: Hur man skapar, återställer och automatiserar dem
  • Hur ZFS-snapshots fungerar
  • Skapa ögonblicksbilder
  • Återställa från ögonblicksbilder
  • Hantera och beskära snapshots
  • Automatisera lagring med Sanoid
  • Replikering på annan plats med zfs send
  • En anmärkning om skydd mot utpressningstrojaner
  • Video-rekommendation
  • Avslutande tankar
Dela

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 zfs

Skapa en pool. För en enda disk (typiskt på en VPS):

sudo zpool create tank /dev/sdb

Fö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-DISK2

Aktivera komprimering (LZ4 är snabbt och effektivt):

sudo zfs set compression=lz4 tank

Skapa sedan datauppsättningar för dina arbetsbelastningar:

sudo zfs create tank/web
sudo zfs create tank/databases

Ta en ögonblicksbild

Det grundläggande kommandot:

sudo zfs snapshot tank/web@before-update

Fö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_backup

Verifiera 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-update

Detta 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_090000

En 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ällningHastighetRisk för dataförlustBäst för
Återställning av filer via .zfsBeror på filstorlekIngen återställningOavsiktlig radering, återställning av enstaka filer
Fullständig återställningOmedelbartHög (förlorar alla ändringar efter snapshot)Misslyckade uppgraderingar, systemomfattande problem
Klon för testningOmedelbarIngen (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,creation

Kolumnen 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-update

Du 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 arbetsbelastningVarje timmeDagligenVeckovisMånadsvis
Standardproduktion24-4830812
Databas (hög churn)72301224
Loggar / låg prioritet12-24703
Statisk media0703

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/web

Fö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/web

Sanoids 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.

Blogg

Utvalda denna vecka

Fler artiklar
ZFS ögonblicksbilder: Hur man skapar, återställer och automatiserar dem

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

Fler artiklar
background image

Har du frågor eller behöver du en anpassad lösning?

icon

Flexibla alternativ

icon

Global räckvidd

icon

Omedelbar driftsättning

icon

Flexibla alternativ

icon

Global räckvidd

icon

Omedelbar driftsättning