snapmirror status [ options ] [ volume | qtree ... ]
snapmirror initialize [ options ] destination
snapmirror update [ options ] destination
snapmirror quiesce destination
snapmirror resume destination
snapmirror break destination
snapmirror resync [ options ] destination
snapmirror destinations [ option ] [ source ]
snapmirror release source destination
snapmirror { store | retrieve } volume tapedevices
snapmirror use destination tapedevices
snapmirror abort [ options ] destination ...
snapmirror migrate [ options ] source destination
SnapMirror can be used to asynchronously replicate whole volumes or qtrees and synchronously replicate volumes. The processes and behaviors involved are slightly (and sometimes subtly) different between the kinds of data mirroring.
The SnapMirror process is destination-driven. The snapmirror initialize command starts the first transfer which primes the destination with all the data on the source. Prior to the initial transfer, the destination must be ready to be overwritten with the data from the source; destination volumes must be restricted (see na_vol(1)), and destination qtrees must not yet exist.
For asynchronous mirrors, the destination periodically requests an update from the source, accepts a transfer of data, and writes those data to disk. These update transfers only include changes made on the source since the last transfer. The SnapMirror scheduler initiates these transfers automatically according to schedules in the snapmirror.conf file.
Synchronous mirrors will initially behave as asynchronous mirrors but will trasition into synchronous at the first oportunity. These mirrors may fall back into asychronous mode on request of the user or error.
The snapmirror update command can be used to initiate individual transfers apart from the scheduled ones in snapmirror.conf.
After the initial transfer, the destination is available to NFS and CIFS clients, but in a read-only state. The status of a destination will show that it is snapmirrored (see na_vol(1) or na_qtree(1) for more details on displaying the destination state).
To use the destination volume or qtree for writing as well as reading, which is useful when a disaster makes the source volume or qtree unavailable or when you wish to use the destination as a test volume/qtree, you can stop mirroring and make the destination writable with the snapmirror break command. This command changes the destination's status from snapmirrored to broken-off, thus making it writable. The snapmirror resync command can change a former destination's status back to snapmirrored and will resynchronize its contents with the source. (When applied to a former source, snapmirror resync can turn it into a mirror of the former destination. In this way, the roles of source and destination can be reversed.)
A filer keeps track of all destinations, either direct mirrors or mirrors of mirrors, for each of its sources. This list can be displayed via the snapmirror destinations command. The snapmirror release command can be used to tell a filer that a certain direct mirror will no longer request updates.
To save network bandwidth, tape can be used to prime a new mirror volume instead of the snapmirror initialize command. The snapmirror store command dumps an image of the source volume to tape. The snapmirror retrieve command restores a volume image from tape and prepares the volume for update transfers over the network. If multiple tapes are used to create a volume image, the snapmirror use command is used to instruct a waiting store or retrieve process to write output or accept input to/from a new tape device. This the store and retrieve commands cannot be used with qtrees.
The snapmirror migrate command is used on an existing source and destination pair to make the destination volume a writable "mimic" of the source. The destination assumes the NFS filehandles of the source, helping the filer administrator to avoid NFS re-mounting on the client side.
The snapmirror.conf file on the destination filer's root volume controls the configuration and scheduling of snapmirror on the destination. See na_snapmirror.conf(5) for more details on configuration and scheduling of SnapMirror.
Access to a source is controlled with the snapmirror.access option on the source filer. See na_options(1) and na_protocolaccess (8) for information on setting the option.
(If the snapmirror.access option is set to "legacy", access is controlled by the snapmirror.allow file on the source filer's root volume. See na_snapmirror.allow(5) for more details.)
SnapMirror is a licensed service, and a license must be obtained before the snapmirror command can be used. SnapMirror must be licensed on both source and destination filers. See na_license(1) for more details.
Volumes are specified by their name:
vol1
/vol/vol1/qtree
/vol/vol1/-
The snapmirror subcommands are:
status [ -l | -q ] [ volume | qtree ... ]
Reports status of all the SnapMirror relationships with a source and/or destination on this filer. For each SnapMirror relationship, the status shows the state of the destination, how far behind from the source the destination is, whether a transfer is in progress, and the amount of data transferred so far if it is in progress. This command also reports whether SnapMirror is on or off.
If any volume or qtree arguments are given to the command, only the SnapMirror relationships with a matching source or destination will be reported. If the argument is invalid, there won't be any status in the output.
If the -l option is given, the output displays more detailed information for each SnapMirror relationship.
If the -q option is given, the output displays the volumes and qtrees that are quiesced or quiescing. See the quiesce command, below, for what this means.
See the Examples section for more information on snapmirror status.
initialize [ -S source ] [ -k kilobytes ] [ -s src_snap ] [ -c create_dest_snap ] [ -w ] [ -L ] destination
Starts an initial transfer over the network. An intial transfer--either over the network or from tape--is required before update transfers can take place. The initialize command must be issued on the destination filer. If the destination is a volume, it must be restricted (see na_vol(1) for information on how to examine and restrict volumes). If the destination is a qtree, it must not already exist (see na_qtree(1) for information on how to list qtrees). If a qtree already exists, it must be renamed or removed (using an NFS or CIFS client), or snapmirror initialize to that qtree will not work.
If the snapmirror status command reports that an aborted initial transfer has a restart checkpoint, the initialize commmand will restart the transfer where it left off.
The -S option specifies a source filer and volume or qtree path, in a format to destination arguments. The source must match the entry for the destination in the snapmirror.conf file. If it doesn't match, the operation prints an error message and aborts. If the -S option is not set, the source used is the one specified by the entry for that destination in the snapmirror.conf file. If there is no such entry, the operation prints an error message and aborts.
The -k option sets the maximum speed at which data is transferred over the network in kilobytes per second. It is used to throttle disk, CPU, and network usage. This option merely sets a maximum value for the transfer speed; it does not guarantee that the transfer will go that fast. If this option is not set, the filer transmits data as fast as it can. The effect of this option on initialize is similar to the effect of setting the kbs argument in the snapmirror.conf file (see na_snapmirror.conf(5)).
The -c option only works for an initialize to a qtree. With this option SnapMirror creates a snapshot named create_dest_snap on the destination after the initialize has successfully completed (so that it does not compete with any ongoing updates). SnapMirror does not lock or delete this snapshot. create_dest_snap cannot be hourly.x, nightly.x, or weekly.x, because these names are reserved for scheduled snapshots.
The -s option only works for an initialize to a qtree. It designates a snapshot named src_snap from which SnapMirror transfers the qtree, instead of creating a source snapshot and transferring the qtree from the new snapshot. This option is used to transfer a specific snapshot's contents; for example, it can transfer a snapshot that was taken while a database was in a stable, consistent state. SnapMirror does not lock or delete the src_snap. src_snap cannot be hourly.x, nightly.x, weekly.x, snapshot_for_backup.x or snapshot_for_volcopy.x.
The -w option causes the command not to return once the initial transfer starts. Instead, it will wait until the transfer completes (or fails), at which time it will print the completion status and then return.
The -L option allows the user to establish a SnapMirror relationship from a SnapLock source volume to a SnapLock destination volume. Note that the initialize operation to a SnapLock destination volume is otherwise not permitted, however, with this option SnapMirror converts the non SnapLock destination volume to a SnapLock volume provided that the source volume is SnapLock. This option is not available for qtrees.
update [ -S source ] [ -k kilobytes ] [ -s src_snap ] [ -c create_dest_snap ] [ -w ] destination
For asynchronous mirrors, an update is immediately started from the source to the destination to update the mirror with the contents of the source.
For synchronous mirrors, a snapshot is created on the source volume which becomes visible to clients of the destination volume.
The update command must be issued on the destination filer.
The -S option sets the source of the transfer, and works the same for update as it does for initialize.
The -k option sets the throttle, in kilobytes per second, of the transfer, and works the same for update as it does for initialize.
The -c option only works for an update to a qtree. With this option SnapMirror creates a snapshot named create_dest_snap on the destination after the update completes (so that it does not compete with any ongoing updates). SnapMirror does not lock or delete this snapshot. create_dest_snap cannot be hourly.x, nightly.x, or weekly.x, because these names are reserved for scheduled snapshots.
The -s option only works for an update to a qtree. It designates a snapshot named src_snap from which SnapMirror transfers the qtree, instead of creating a source snapshot and transferring the qtree from the new snapshot. This option is used to transfer a specific snapshot's contents; for example, it can transfer a snapshot that was taken while a database was in a stable, consistent state. SnapMirror does not lock or delete the src_snap. src_snap cannot be hourly.x, nightly.x, weekly.x, snapshot_for_backup.x or snapshot_for_volcopy.x.
The -w option causes the command not to return once the incremental transfer starts. Instead, it will wait until the transfer completes (or fails), at which time it will print the completion status and then return.
quiesce destination
Allows in-progress transfers to destination to complete
after which new transfers are not allowed to
start. Synchronous mirrors will be taken out of
synchronous mode. Any further requests to update
this volume or qtree will fail until the snapmirror
resume command is applied to it.
This command has special meaning to qtree destinations. A qtree destination which is being modified by SnapMirror during a transfer will have changes present in it. These changes will not be exported to NFS or CIFS clients. However, if a snapshot is taken during this time, the snapshot will contain the transitioning contents of the qtree. quiesce will bring that qtree out of a transitioning state, by either finishing or undoing any changes a transfer has made. snapmirror status can report whether a qtree is quiesced or not. The quiesce process can take some time to complete while SnapMirror makes changes to the qtree's contents. Any snapshot taken while a qtree is quiesced will contain an image of that qtree which matches the contents exported to NFS and CIFS clients.
resume destination
Resumes transfers to destination. The snapmirror
resume command can be used either to abort a snapmirror
quiesce in progress or undo a previously
completed snapmirror quiesce. The command restores
the state of the destination from quiescing or quiesced
to whatever it was prior to the quiesce operation.
break destination
Breaks a snapmirroring relationship by turning a
snapmirrored destination into a normal read/write
volume or qtree. This command must be issued on
the destination filer.
This command does not modify the snapmirror.conf file. Any scheduled transfers to a broken mirror will fail.
For volumes, this command has the same effect as the vol options snapmirrored off command, and will remove the snapmirrored option from a volume. The fs_size_fixed volume option will remain on; it must be manually removed from the volume to reclaim any disk space that SnapMirror may have truncated for replication. (See the Options section and na_vol(1) for more information on these two volume options.)
A destination qtree must be quiesced before it can be broken.
resync [ -n ] [ -f ] [ -S source ] [ -k kilobytes ] [ -w ]
destination
Resynchronizes a broken-off destination to its former
source, putting the destination in the snapmirrored
state and making it ready for update transfers.
The resync command must be issued on the
destination filer.
The resync command can cause data loss on the destination. Because it is effectively making desti_nation a replica of the source, any edits made to the volume or qtree after the break will be undone.
For formerly mirrored volumes, the resync command effectively performs a SnapRestore (see na_vol(1)) on the destination to the newest snapshot which is common to both the source and the destination. In most cases, this is the last snapshot transferred from the source to the destination, but it can be any snapshot which is on both the source and destination due to SnapMirror replication. If new data has been written to the destination since the newest common snapshot was created, that data will be lost during the resync operation.
For formerly mirrored qtrees, SnapMirror restores data to the file system from the latest SnapMirrorcreated snapshot on the destination volume. Unlike the volume case, it requires this last snapshot in order to perform a resync.
The resync command initiates an update transfer after the SnapRestore or qtree data restoration completes.
The -n option reports what execution of the resync command would do, but does not execute the command.
The -f option forces the operation to proceed without prompting for confirmation.
The -S option sets the source of the transfer, and works the same for resync as it does for initialize.
The -k option sets the throttle, in kilobytes per second, of the transfer, and works the same for resync as it does for initialize.
The -w option causes the command not to return once the resync transfer starts. Instead, it will wait until the transfer completes (or fails), at which time it will print the completion status and then return. This option has no effect if the -n option is also specified.
destinations [ -s ] [ source ]
Lists all of the currently known destinations for
sources on this filer. For volumes, this command
also lists any cascaded destinations; these are any
volumes which are replicas of direct destinations.
This command will list all such descendants it
knows about.
The -s option includes in the listing names of snapshots retained on the source volume for each destination.
If a specific source is specified, only destinations for that volume will be listed. The source may either be a volume name or a qtree path.
release source { filer:volume | filer:qtree } Tell snapmirror that a certain direct mirror is no longer going to request updates.
If a certain destination is no longer going to request updates, you must tell SnapMirror so that it will not longer retain a snapshot for that destination. This command will remove snapshots that are no longer needed for replication to that destination, and can be used to clean up SnapMirror-created snapshots after snapmirror break is issued on the destination side.
The source argument is the source volume or qtree that the destination is to be released from. The destination argument should be either the destination filer and destination volume name or the destination filer and destination qtree path. You can use a line from the output of the snapmirror destinations command as the set of arguments to this command.
store [ -g volumegeometry ] volume tapedevices Dumps an image of the volume to the tapedevices specified. This is much like the snapmirror initialize command, but from a source volume to a tape device. You can use the tapes and the retrieve command to perform the initial, priming transfer on any restricted volume.
Using the -g option on a snapmirror store will optimize the tape for a particular destination volume. The volumegeometry argument is a string which describes the volume geometry of the intended destination volume. It can be acquired by using the snapmirror retrieve -g command on that volume. Using this option can increase snapmirror retrieve performance dramatically.
This feature only works for volumes. Qtrees cannot be stored to or retrieved from tape.
The tapedevices field of this command is a commaseparated list of valid tape devices. See na_tape(4) for more information on tape device names.
retrieve { volume tapedevices | -h tapedevice | -g volume
}
Restores the image on the tapedevices to the volume
specified. This is much like the snapmirror initialize
command, but from a tape device to a destination
volume. If volume is part of a SnapMirror
relationship with the source volume from the store
performed to create these tapes, the two volumes
can be mirrored as if volume had been primed via a
initial transfer over the network.
You can use the -h flag to read the header off of the single tapedevice specified. This will provide information on the tape source and index.
The -g option provides the volume geometry string for the specified volume. This string, when given to the snapmirror store -g command, will dramatically improve snapmirror retrieve performance to this volume.
The tapedevices field of this command is a commaseparated list of valid tape devices. See na_tape(4) for more information on tape device names.
This feature only works for volumes. Qtrees cannot be stored to or retrieved from tape.
use destination tapedevices
Continues a tape transfer to destination with the
specified tapedevices.
If a store or retrieve operation runs out of tape, it will prompt the user to provide another tape. After another tape has been provided, the use command is invoked to tell the SnapMirror process where to find it.
The destination field is specified by filer:volume in the case of retrieve, and filer:tapedevices in the case of store.
The tapedevices field of this command is a commaseparated list of valid tape devices. See na_tape(4) for more information on tape device names.
abort [ -h ] destination ...
Aborts currently executing transfers to all specified
destinations. It may take a few minutes for a
transfer to clean up and abort. This does not stop
new updates from starting. If you are interested
in stopping further updates use the snapmirror quiesce
command.
Any transfer with a restart checkpoint (you can view this via the snapmirror status command) may be restartable; to clear out the restart checkpoint and force any subsequent transfer to start with a fresh snapshot on the source, you can use abort -h on the destination. The -h option specifies that this is a hard abort; the restart checkpoint will be cleared out in addition to the transfer being stopped.
The abort command can be invoked from either the source or the destination filer. However, the -h option is only effective on the destination filer. The option will be ignored if specified on the source filer.
migrate [ -n ] [ -f ] [ -k kilobytes ] [source_filer:]source_volume [destination_filer:]destina_tion_volume
snapmirror migrate is run on the filer which holds the source volume. It must be run on two volumes which are already the source and destination of a snapmirror pair.
migrate will transfer data and NFS filehandles from the source_volume to the destination_filer's desti_nation_volume (if no filer is specified, then migrate assumes the volume is local). If source_filer is specified, then the migrate destination will use that network interface to connect up to the source filer for the transfer of information.
The first thing migrate will do is check the source and destination sides for readiness. Then, it will stop NFS and CIFS service to the source. This will prevent changes to the source volume's data, which will make it appear to clients as though nothing has changed during the migration. It will run a regular SnapMirror transfer between the two volumes. At the end of the transfer, it will migrate the NFS filehandles, bring the source offline, and make the destination volume writable.
The -n flag will make a test run; that is, it will run all the pre-transfer checks, but stop short of transferring data. The -f flag will not prompt the user for confirmation. The -k flag will throttle the speed at which the transfer runs (at kilobytes kilobytes per second), in a manner similar to that used in the snapmirror update command.
The following example turns the scheduler on and off:
toaster> snapmirror on
toaster> snapmirror status
Snapmirror is on.
toaster> snapmirror off
toaster> snapmirror status
Snapmirror is off.
toaster>
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
fridge:home toaster:arc1 Snapmirrored 22:09:58 Idle
toaster:vol1 toaster:arc2 Snapmirrored 01:02:53 Transferring
toaster:vol2 icebox:saved Uninitialized - Transferring (128MB done)
fridge:users toaster:arc3 Snapmirrored 10:14:36 Idle with restart checkpoint (12MB done)
toaster>
toaster> snapmirror status -l arc1
Snapmirror is on.
Source: fridge:home
Destination: toaster:arc1
Status: Idle
Progress: -
State: Snapmirrored
Lag: 22:09:58
Mirror Timestamp: Wed Aug 8 16:53:04 GMT 2001
Base Snapshot: toaster(0001234567)_arc1.1
Current Transfer Type: -
Current Transfer Error: -
Contents: Replica
Last Transfer Type: Initialize
Last Transfer Size: 1120000 KB
Last Transfer Duration: 00:03:47
Last Transfer From: fridge:home
filer> snapmirror status -q
Snapmirror is on.
vol1 has quiesced/quiescing qtrees:
/vol/vol1/qt0 is quiesced
/vol/vol1/qt1 is quiescing
vol2 is quiescing
toaster> snapmirror store vol1 rst0a,rst1a
snapmirror: Reference Snapshot: snapmirror_tape_5.17.100_21:47:28
toaster>
SNAPMIRROR: store to toaster:rst0a,rst1a has run out of tape.
toaster> snapmirror use toaster:rst0a,rst1a rst0a
toaster>
Wed May 17 23:36:31 GMT [worker_thread:notice]: snapmirror: Store from volume 'vol1' to tape was successful (11 MB in 1:03 minutes, 3 tapes written).
toaster> snapmirror retrieve -h rst0a
Tape Number: 1
WAFL Version: 12
BareMetal Version: 1
Source Filer: toaster
Source Volume: vol0
Source Volume Capacity: 16MB
Source Volume Used Size: 11MB
Source Snapshot: snapmirror_tape_5.17.100_21:47:28
toaster>
toaster> snapmirror retrieve vol8 rst0a
SNAPMIRROR: retrieve from tape to toaster:vol8 has run out of tape.
toaster> snapmirror use toaster:vol8 rst0a
SNAPMIRROR: retrieve from tape to toaster:vol8 has run out of tape.
toaster> snapmirror use toaster:vol8 rst0a
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
toaster:rst1a,rst0a toaster:dst1 Unknown - Transferring (17MB done)
toaster>
Wed May 17 23:54:29 GMT [worker_thread:notice]: snapmirror: Retrieve from tape to volume 'vol8' was successful (11 MB in 1:30 minutes).
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
fridge:home toaster:volm1 Uninitialized - Transferring (10GB done)
fridge:mail toaster:volm2 Snapmirrored 01:00:31 Transferring (4423MB done)
toaster> snapmirror abort toaster:volm1 volm2
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
fridge:home toaster:volm1 Snapmirrored 00:01:25 Idle
fridge:mail toaster:volm2 Snapmirrored 01:03:11 Idle with restart checkpoint (7000MB done)
toaster> snapmirror abort toaster:volm2
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
fridge:home toaster:volm1 Snapmirrored 00:02:35 Idle
fridge:mail toaster:volm2 Snapmirrored 01:04:21 Idle
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
fridge:home toaster:volm1 Uninitialized - Transferring (10GB done)
fridge:mail toaster:volm2 Snapmirrored 01:00:31 Transferring (4423MB done)
toaster> snapmirror abort -h toaster:volm1 toaster:volm2
toaster> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
fridge:home toaster:volm1 Snapmirrored 00:02:35 Idle
fridge:mail toaster:volm2 Snapmirrored 01:04:21 Idle
toaster> snapmirror migrate home mirror
negotiating with destination....
As a result of this process, the source volume home will be taken offline, and NFS service to this filer will be stopped during the transfer. CIFS service on the source volume will be terminated and CIFS will have to be set up on the destination.
Are you sure you want to do this? yes
nfs turned off on source filer
performing final transfer from toaster:home to mirror....
(monitor progress with "snapmirror status")
transfer from toaster:home to mirror successful
starting nfs filehandle migration from home to mirror
source volume home brought offline
source nfs filehandles invalidated
destination toaster:mirror confirms migration
migration complete
toaster> vol status
Volume State Status Options
root online normal root, raidsize=14
mirror online normal
home offline normal
toaster> vol rename home temp
home renamed to temp
you may need to update /etc/exports
toaster> vol rename mirror home
mirror renamed to home
you may need to update /etc/exports
toaster> exportfs -a
The migrate command is only a partial step of the process. It is intended to work when an administrator desires to move the data of one volume to another, possibly because they want to move to a new set of disks, or to a larger volume without adding disks.
We intend that migrate be run in as controlled an environment as possible. It is best if there are no dumps or SnapMirror transfers going on during the migration.
The clients may see stale filehandles or unresponsive NFS service while migrate is running. This is expected behavior. Once the destination volume is made writable, the clients will see the data as if nothing has happened.
migrate will not change exports or IP addresses; the new destination volume must be reachable in the same way as the source volume once was.
CIFS service will need to be restarted on the migrate destination.
snapmirror.access
Controls SnapMirror access to a filer.
snapmirror.checkip.enable
Controls SnapMirror IP address checking using snapmirror.allow.
snapmirror.delayed_acks.enable
Controls a SnapMirror networking option.
snapmirror.enable
Turns SnapMirror on and off.
snapmirror.log.enable
Turns SnapMirror logging on and off.
Here are SnapMirror-related volume pseudo-options (see na_vol(1) for more details):
snapmirrored
Designates that the volume is read-only.
fs_size_fixed
Effectively truncates the filesystem on the destination
volume to the size of the source.
/etc/snapmirror.conf
This file controls SnapMirror schedules and relationships.
See na_snapmirror.conf(5) for details.
/etc/log/snapmirror
This file logs SnapMirror activity. See na_snapmirror(5)
for details.
na_options(1) na_protocolaccess(8) na_snapmirror(5) na_snapmirror.allow(5) na_snapmirror.conf(5)