FreeBSD biedt een mogelijkheid om samen met Soft Updates: snapshots van bestandssystemen.
Snapshots bieden de mogelijkheid om beelden van een gespecificeerd bestandssysteem te maken en ze als bestand te behandelen. Snapshotbestanden moeten aangemaakt worden in het bestandssysteem waarop de handeling wordt uitgevoerd en er mogen niet meer dan 20 snapshots per bestandssysteem worden aangemaakt. Actieve snapshots worden opgeslagen in het superblok zodat ze persistent zijn met afkoppel- en heraankoppelbewerkingen en met het opnieuw opstarten van het systeem. Als een snapshot niet langer nodig is, kan het met het standaardcommando rm(1) worden verwijderd. Snapshots kunnen in elke volgorde verwijderd worden, alhoewel misschien niet alle gebruikte ruimte teruggewonnen wordt omdat sommige vrijgegeven blokken mogelijk door een ander snapshot geclaimd worden.
De onveranderlijke bestandsvlag snapshot
wordt door mksnap_ffs(8)
ingesteld nadat het snapshotbestand initieel is aangemaakt. Het commando unlink(1) maakt een
uitzondering voor snapshotbestanden aangezien het toestaat dat ze verwijderd worden.
Snapshotbestanden worden aangemaakt met mount(8). Om een snapshot van /var in het bestand /var/snapshot/snap te plaatsen:
# mount -o -o snapshot /var/snapshot/snap /var
Als alternatief kan mksnap_ffs(8) gebruikt worden om een snapshot aan te maken:
# mksnap_ffs /var /var/snapshot/snap
Snapshotbestanden kunnen gezocht worden op een bestandssysteem (bijvoorbeeld /var) door gebruik te maken van het commando find(1):
# find /var -flags snapshot
Nadat een snapshot is aangemaakt, kan het voor een aantal dingen gebruikt worden:
Sommige systeembeheerders gebruiken een snapshotbestand voor back-updoeleinden, omdat het snapshot naar CD's of band overgezet kan worden;
De bestandssysteem integriteit controle, fsck(8) kan gebruikt worden op het snapshot. Ervan uitgaande dat het bestandssysteem schoon was toen het werd aangekoppeld, zou dit altijd een schoon (en onveranderlijk) resultaat moeten opleveren. Dit is in principe wat het fsck(8)-achtergrondsproces doet;
Het commando dump(8) draaien op het
snapshot. Er wordt een dump teruggegeven die consistent is met het
bestandssysteem en tijdsstempel van het snapshot. dump(8) kan ook in één
commando een snapshot maken, een dumpbeeld aanmaken en daarna het snapshot
verwijderen door gebruik te maken van de vlag -L
;
Het snapshot kan met mount(8) als bevroren beeld van het bestandssysteem worden aangekoppeld. Om het snapshot /var/snapshot/snap aan te koppelen:
# mdconfig -a -t vnode -f /var/snapshot/snap -u 4 # mount -r /dev/md4 /mnt
Het is nu mogelijk om door de structuur van het bevroren bestandssysteem /var te lopen dat aangekoppeld is op /mnt. Alles zal initieel in dezelfde toestand verkeren als op het moment dat het snapshot werd aangemaakt. De enige uitzondering hierop is dat eerdere snapshots als bestanden met lengte nul verschijnen. Als een snapshot niet meer nodig is, kan het als volgt afgekoppeld worden:
# umount /mnt # mdconfig -d -u 4
Meer informatie over softupdates
en snapshots van
bestandssystemen, inclusief technische documenten, staat op de website van Marshall Kirk
McKusick op http://www.mckusick.com/.