The fssnap Utility
Explain how to perform incremental, full, and remote backups to tape for an unmounted file system using the ufsdump command, or explain how to back up a mounted file system using UFS snapshot.
You can use the fssnap command to create a read-only snapshot of a file system while the file system is mounted. A snapshot is a point-in-time image of a file system that provides a stable and unchanging device interface for backups. This snapshot uses the backing-store file. A few important points about the backing-store:
Unlike ufsdump, fssnap enables you to keep the file system mounted and the system in multi-user mode during backups. The snapshot is stored to disk, and then you can use Solaris backup commands such as ufsdump, tar, and cpio to back up the UFS snapshot. The result is a more reliable backup than you get with ufsdump alone.
When you use the fssnap command to create a file system snapshot, you should observe how much disk space the backing-store file consumes. The backing-store file itself uses no space initially, and then it grows quickly. As activity increases on the original file system, the backing-store file grows. This is because the size of the backing-store is activity related and is not related to the size of the original file system. It holds the original version of blocks that changed while the fssnap was active. If the file system has heavy use, the backing-store file increases in size quickly. On a heavily used file system, you need to make sure the backing-store file has enough space to grow.
Disk Space for the Backing-Store File If the backing-store file runs out of disk space, the snapshot might delete itself, thus causing the backup to abort. If you are experiencing problems with the backup, you should examine the /var/adm/messages file for possible snapshot errors.
Step by Step 7.3 describes how to create snapshots.
Here's what happens after you create the snapshot by using the fssnap command. A file, the backing-store file, is created in the /var/tmp file system. It's a normal file that can be listed just like any other file, by using the ls command:
ls -l /var/tmp
The following backing-store file is listed:
-rw------- 1 root other 196665344 Mar 27 15:05 snapshot0
snapshot0 is the name of the backing-store file. The backing-store file is a bitmapped file that contains copies of presnapshot data that has been modified since the snapshot was taken. When you take the snapshot, the snapshot0 file is created. As the original file system changes, the snapshot's backing-store file is updated, and the backing-store file grows.
Limiting the Size of the Backing-Store File You can limit the size of the backing-store file by using the maxsize option, as follows:
fssnap -F ufs -o maxsize=600m,backing-store=/var/tmp /export/home
In this example, the size of the backing-store file is limited to 600MB; however, the backing-store file is a sparse file, which actually uses less disk space than the file system it represents
In addition, after you execute the fssnap command, two read-only virtual device files are created:
The virtual devices look and act like standard read-only devices, and you can use any of the existing Solaris commands with them. For example, you can mount the block virtual device by using the mount command, as follows:
mount -F ufs -o ro /dev/fssnap/0 /mnt
Mounting the Snapshot Because the virtual devices are read-only, you need to mount the snapshot as read-only by using the -o ro option to the mount command.
You can go into the mount point and view the contents of the snapshot with the following:
ls -l /mnt
The contents of the snapshot are displayed:
total 3810 drwxr-xr-x 2 wcalkins staff 512 Mar 12 14:14 bcalkins -rw------- 1 root other 1933312 Mar 27 10:15 dump drwx------ 2 root root 8192 Feb 26 15:33 lost+found
In this case, there wasn't much in the file system when the snapshot was created.
Now you can list the contents of the "real" file system named /export/home; remember that this is the live file system from which the snapshot was taken:
ls -l /export/home total 3810 drwxr-xr-x 2 wcalkins staff 512 Mar 12 14:14 bcalkins -rw------- 1 root other 1933312 Mar 27 15:05 dump -rw-r--r-- 1 root other 12 Mar 27 15:05 file1 drwx------ 2 root root 8192 Feb 26 15:33 lost+found
Notice in this example that things are changing. There is a new file named file1, and the dump file has a new time. The snapshot image, however, remains the way it wasnone of the dates have changed, and none of the new files show up. When you back up the snapshot, you get a backup of the file system the way it was when you made the snapshot. Here's how you back up the snapshot by using the ufsdump command:
ufsdump 0ucf /dev/rmt/0 /dev/rfssnap/0
Notice that you're backing up the virtual device named /dev/fssnap/0. The backup that was created from the virtual device is a backup of the original file system and represents the state of the file system when the snapshot was taken. If you ever need to restore a file system from the backup, restore the data using ufsrestore, as if you had taken the backup directly from the original file system. For this recovery procedure, refer to the section titled "The ufsrestore Facility" earlier in this chapter.
To remove the snapshot, you issue the following command:
fssnap -d /export/home
/export/home was the name of the file system you created the snapshot of. The system responds with the following:
Deleted snapshot 0
When you create a UFS snapshot, you can specify that the backing-store file be unlinked, which means the backing-store file is removed after the snapshot is deleted. Here's how you do this:
fssnap -F ufs -o unlink,backing-store=/var/tmp /export/home
When you use the unlink option, you cannot see the backing-store file. This might make administration more difficult because the file is not visible in the file system.
Earlier you did not specify the -o unlink option, so you have to delete the backing-store manually, as follows, after you run the fssnap -d command:
The backing-store file occupies disk space until the snapshot is deleted, whether you use the -o unlink option to remove the backing-store file or you remove it manually.