summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/README.snapshot
diff options
context:
space:
mode:
Diffstat (limited to 'sys/ufs/ffs/README.snapshot')
-rw-r--r--sys/ufs/ffs/README.snapshot112
1 files changed, 112 insertions, 0 deletions
diff --git a/sys/ufs/ffs/README.snapshot b/sys/ufs/ffs/README.snapshot
new file mode 100644
index 0000000..f3177c3
--- /dev/null
+++ b/sys/ufs/ffs/README.snapshot
@@ -0,0 +1,112 @@
+$FreeBSD$
+
+Soft Updates Status
+
+As is detailed in the operational information below, snapshots
+are definitely alpha-test code and are NOT yet ready for production
+use. Much remains to be done to make them really useful, but I
+wanted to let folks get a chance to try it out and start reporting
+bugs and other shortcomings. Such reports should be sent to
+Kirk McKusick <mckusick@mckusick.com>.
+
+
+Snapshot Copyright Restrictions
+
+Snapshots have been introduced to FreeBSD with a `Berkeley-style'
+copyright. The file implementing snapshots resides in the sys/ufs/ffs
+directory and is compiled into the generic kernel by default.
+
+
+Using Snapshots
+
+To create a snapshot of your /var filesystem, run the command:
+
+ mount -u -o snapshot /var/snapshot/snap1 /var
+
+This command will take a snapshot of your /var filesystem and
+leave it in the file /var/snapshot/snap1. Note that snapshot
+files must be created in the filesystem that is being snapshotted.
+I use the convention of putting a `snapshot' directory at the
+root of each filesystem into which I can place snapshots.
+You may create up to 20 snapshots per filesystem. Active snapshots
+are recorded in the superblock, so they persist across unmount
+and remount operations and across system reboots. When your
+are done with a snapshot, it can be removed with the `rm'
+command. Snapshots may be removed in any order, however you
+may not get back all the space contained in the snapshot as
+another snapshot may claim some of the blocks that it is releasing.
+Note that the `schg' flag is set on snapshots to ensure that
+not even the root user can write to them. The unlink command
+makes an exception for snapshot files in that it allows them
+to be removed even though they have the `schg' flag set, so it
+is not necessary to clear the `schg' flag before removing a
+snapshot file.
+
+Once you have taken a snapshot, there are three interesting
+things that you can do with it:
+
+1) Run fsck on the snapshot file. Assuming that the filesystem
+ was clean when it was mounted, you should always get a clean
+ (and unchanging) result from running fsck on the snapshot.
+ If you are running with soft updates and rebooted after a
+ crash without cleaning up the filesystem, then fsck of the
+ snapshot may find missing blocks and inodes or inodes with
+ link counts that are too high. I have not yet added the
+ system calls to allow fsck to add these missing resources
+ back to the filesystem - that will be added once the basic
+ snapshot code is working properly. So, view those reports
+ as informational for now.
+
+2) Run dump on the snapshot. You will get a dump that is
+ consistent with the filesystem as of the timestamp of the
+ snapshot. Note that I have not yet changed dump to set the
+ dumpdates file correctly, so do not use this feature in
+ production until that fix is made.
+
+3) Mount the snapshot as a frozen image of the filesystem.
+ To mount the snapshot /var/snapshot/snap1:
+
+ vnconfig -c vn0c /var/snapshot/snap1
+ mount -r /dev/vn0c /mnt
+
+ You can now cruise around your frozen /var filesystem
+ at /mnt. Everything will be in the same state that it
+ was at the time the snapshot was taken. The one exception
+ is that any earlier snapshots will appear as zero length
+ files. When you are done with the mounted snapshot:
+
+ umount /mnt
+ vnconfig -u vn0c
+
+ Note that under some circumstances, the process accessing
+ the frozen filesystem may deadlock. I am aware of this
+ problem, but the solution is not simple. It requires
+ using buffer read locks rather than exclusive locks when
+ traversing the inode indirect blocks. Until this problem
+ is fixed, you should avoid putting mounted snapshots into
+ production.
+
+
+Performance
+
+It takes about 30 seconds to create a snapshot of an 8Gb filesystem.
+Of that time 25 seconds is spent in preparation; filesystem activity
+is only suspended for the final 5 seconds of that period. Snapshot
+removal of an 8Gb filesystem takes about two minutes. Filesystem
+activity is never suspended during snapshot removal.
+
+The suspend time may be expanded by several minutes if a process
+is in the midst of removing many files as all the soft updates
+backlog must be cleared. Generally snapshots do not slow the system
+down appreciably except when removing many small files (i.e., any
+file less than 96Kb whose last block is a fragment) that are claimed
+by a snapshot. Here, the snapshot code must make a copy of every
+released fragment which slows the rate of file removal to about
+twenty files per second once the soft updates backlog limit is
+reached.
+
+
+How Snapshots Work
+
+For more general information on snapshots, please see:
+ http://www.mckusick.com/softdep/
OpenPOWER on IntegriCloud