netapp的snapmirror可以提供基于卷或者qtree的数据镜像,在购买源和目标都支持snapmirror的license之后,
便可以使用。
snapmirror使用需要注意的是目的卷必须为受限(restricted)卷,而且目的卷的大小必须等于或者大于源卷;
目的qtree必须不存在(snapmirror自动创建目标qtree)。
对于异步镜像,接受数据的目的卷,定期请求镜像源以获取更新数据,请求的周期根据snapmirror.conf来设置
除了周期自动同步外,也可以用snapmirror update命令手动执行同步。在完成初始化同步之后,目的卷或者qtree
会进入snapmirrored状态,这时候便可以使用了,但是是只读的。
当然如果让客户可以写这些目的卷或者qtree,可以使用snapmirror break命令来中断和镜像源之间的关系,让镜像
目的卷或者qtree进入broken-off状态,这时候目的卷或者qtree便可以写了。
而snapmirror resync命令可以让之前进入broken-off的目的卷或者qtree恢复到snapmirrored状态,且重新进入
下一轮的数据镜像,如果给resync指定了之前的源,那么会将前面的镜像源设置为镜像目标,这样原来的源和目标
就颠倒了角色。
netapp 系统会追踪、记录每一个镜像目标(无论是直接镜像还是镜像的镜像),使用snapmirror destinations都
可以看到所有的镜像目标列表,而snapmirror release可以告诉netapp,某个直接镜像不在请求数据更新。
snapmirror destinations的输出结果可以作为snapmirror release的参数使用,比如在查看到镜像目标列表之后
希望停止其中一个镜像,可以使用该参数调用snapmirror release来达到目的,这两个命令都是在源filer上面执行的。
为了节省网络带宽,可以直接使用snapmirror store命令来dump镜像到磁带,然后使用snapmirror retrive把镜像从
磁带还原,当使用多个磁带保存镜像的时候,可以使用snapmirro use来切换磁带
镜像目的root卷中的snapmirror.conf控制目的netapp如何配置以及调度数据镜像,snapmirror的格式除了多一个源
和目标之外,以及镜像参数外,剩下的5个域的意义和crontab的格式一模一样。
而源filer的options设置中,snapmirror.access值则告诉netapp哪些镜像源的访问规则
增加snapmirror.conf
ds1.la.vclk.net:/vol/mezi_build_prd/build.mezimedia.com nss6-wl:/vol/mezi_build_beta/build.mezimedia.com – – – – – –
$ sudo rsh nss6.wl.vclk.net snapmirror status
Snapmirror is on.
Source Destination State Lag Status
……
……
ds1.la.vclk.net:/vol/mezi_build_prd/build.mezimedia.com nss6-wl:/vol/mezi_build_beta/build.mezimedia.com Uninitialized – Idle
……
……
$ sudo rsh nss6.wl.vclk.net snapmirror initialize nss6-wl:/vol/mezi_build_beta/build.mezimedia.com
Transfer started.
Monitor progress with ‘snapmirror status’ or the snapmirror log.
$
$ sudo rsh nss6.wl.vclk.net snapmirror status
Snapmirror is on.
Source Destination State Lag Status
……
……
ds1.la.vclk.net:/vol/mezi_build_prd/build.mezimedia.com nss6-wl:/vol/mezi_build_beta/build.mezimedia.com Uninitialized – Transferring (1715 MB done)
……
……
$ sudo rsh nss6.wl.vclk.net snapmirror status
Snapmirror is on.
Source Destination State Lag Status
……
……
ds1.la.vclk.net:/vol/mezi_build_prd/build.mezimedia.com nss6-wl:/vol/mezi_build_beta/build.mezimedia.com Snapmirrored 00:37:22 Idle
……
……
临时snapmirror,
$ sudo rsh nss6.wl.vclk.net snapmirror initialize -S nss6.la.vclk.net:/vol/mezi_shared_prd/httpd /vol/mezi_build_beta/httpd
Transfer aborted: could not read from socket.
被拒绝,查看日志
$$ tail log/snapmirror
……
dst Tue Apr 12 08:33:13 GMT nss6.la.vclk.net:/vol/mezi_shared_prd/httpd nss6-wl:/vol/mezi_build_beta/httpd Request (Initialize)
dst Tue Apr 12 08:33:16 GMT nss6.la.vclk.net:/vol/mezi_shared_prd/httpd nss6-wl:/vol/mezi_build_beta/httpd Abort (could not read from socket)
……
……
$ sudo rsh nss6.la.vclk.net options snapmirror.access
snapmirror.access host=ds1.sj2.vclk.net,ds2.sj2.vclk.net,filer3.sb.fastclick.net,nss4.sto.vclk.net,ds2.la.vclk.net,nss2.la.vclk.net,nas4.la1.cj.com,nss5.la.vclk.net,filer4.sb.fastclick.net,nss3.wl.vclk.net
$ sudo rsh nss6.la.vclk.net options snapmirror.access ‘host=ds1.sj2.vclk.net,ds2.sj2.vclk.net,filer3.sb.fastclick.net,nss4.sto.vclk.net,ds2.la.vclk.net,nss2.la.vclk.net,nas4.la1.cj.com,nss5.la.vclk.net,filer4.sb.fastclick.net,nss3.wl.vclk.net,nss6.wl.vclk.net’
$ sudo rsh nss6.la.vclk.net options snapmirror.access
snapmirror.access host=ds1.sj2.vclk.net,ds2.sj2.vclk.net,filer3.sb.fastclick.net,nss4.sto.vclk.net,ds2.la.vclk.net,nss2.la.vclk.net,nas4.la1.cj.com,nss5.la.vclk.net,filer4.sb.fastclick.net,nss3.wl.vclk.net,nss6.wl.vclk.net
OK,成功设置snapmirror.access,再次snapmirror initialize
$ sudo rsh nss6.wl.vclk.net snapmirror initialize -S nss6.la.vclk.net:/vol/mezi_shared_prd/httpd /vol/mezi_build_beta/httpd
Transfer started.
Monitor progress with ‘snapmirror status’ or the snapmirror log.
$
成功。过段时间查看查看snapmirror状态:
$ sudo rsh nss6.wl.vclk.net snapmirror status /vol/mezi_build_beta/httpd
Snapmirror is on.
Source Destination State Lag Status
nss6.la.vclk.net:/vol/mezi_shared_prd/httpd nss6-wl:/vol/mezi_build_beta/httpd Snapmirrored 00:01:28 Idle
镜像完成之后,中断镜像关系:
$ sudo rsh nss6.wl.vclk.net snapmirror break /vol/mezi_build_beta/httpd
snapmirror break: /vol/mezi_build_beta/httpd: The destination is not quiesced. Please run “snapmirror quiesce” on this destination before running “snapmirror break”.
$ sudo rsh nss6.wl.vclk.net snapmirror quiesce /vol/mezi_build_beta/httpd
snapmirror quiesce: in progress
This can be a long-running operation. Use Control – C (^C) to interrupt.
snapmirror quiesce: /vol/mezi_build_beta/httpd : Successfully quiesced
$ sudo rsh nss6.wl.vclk.net snapmirror status /vol/mezi_build_beta/httpd
Snapmirror is on.
Source Destination State Lag Status
nss6.la.vclk.net:/vol/mezi_shared_prd/httpd nss6-wl:/vol/mezi_build_beta/httpd Quiesced 00:06:45 Idle
$ sudo rsh nss6.wl.vclk.net snapmirror break /vol/mezi_build_beta/httpd
snapmirror break: Destination /vol/mezi_build_beta/httpd is now writable.
$ sudo rsh nss6.wl.vclk.net snapmirror status /vol/mezi_build_beta/httpd
Snapmirror is on.
Source Destination State Lag Status
nss6.la.vclk.net:/vol/mezi_shared_prd/httpd nss6-wl:/vol/mezi_build_beta/httpd Broken-off 00:18:48 Idle
break之后,记得在源执行snapmirror release,这样告诉源无需为snapmirror保留snapshot,同时会自动清理snapmirror创建
的snapshot。
如何删掉Broken-off状态的snapmirror relationship?
对于目的镜像卷或者qtree,只要删掉目标filer对应的snap shot即可,而镜像源使用snapmirror release即可:
$ sudo rsh nss6.wl.vclk.net snapmirror status
Snapmirror is on.
Source Destination State Lag Status
…….
…….
ds1.la.vclk.net:/vol/mezi_build_prd/build.mezimedia.com nss6-wl:/vol/mezi_build_beta/build.mezimedia.com Snapmirrored 03:02:59 Idle
nss6.la.vclk.net:/vol/mezi_shared_prd/httpd nss6-wl:/vol/mezi_build_beta/httpd Broken-off 01:13:46 Idle
ds2.la.vclk.net:/vol/mezi_dpstomcat_dev/amdfeed.mezimedia.com nss6-wl:/vol/mezi_dpstomcat_dev/amdfeed.mezimedia.com Snapmirrored 00:40:57 Idle
…….
…….
$ sudo rsh nss6.wl.vclk.net snap list mezi_build_beta
Volume mezi_build_beta
working…
%/used %/total date name
———- ———- ———— ——–
0% ( 0%) 0% ( 0%) Apr 12 08:42 nss6-wl(0118060994)_mezi_build_beta_httpd-dst.2
0% ( 0%) 0% ( 0%) Apr 12 08:20 ds1-la(0151702346)_mezi_build_prd_build_data-src.0 (snapmirror)
0% ( 0%) 0% ( 0%) Apr 12 08:00 hourly.0
0% ( 0%) 0% ( 0%) Apr 12 07:29 nss6-wl(0118060994)_mezi_build_beta_build.mezimedia.com-dst.2 (busy,snapmirror)
0% ( 0%) 0% ( 0%) Apr 12 00:00 nightly.0
0% ( 0%) 0% ( 0%) Apr 11 20:00 hourly.1
$ sudo rsh nss6.wl.vclk.net snap delete ‘mezi_build_beta nss6-wl(0118060994)_mezi_build_beta_httpd-dst.2’
deleting snapshot…
[ggou@fs1.vclk.net /netapp/nss6.wl.vclk.net/etc]$ sudo rsh nss6.wl.vclk.net snap list mezi_build_beta
Volume mezi_build_beta
working…
%/used %/total date name
———- ———- ———— ——–
0% ( 0%) 0% ( 0%) Apr 12 08:20 ds1-la(0151702346)_mezi_build_prd_build_data-src.0 (snapmirror)
0% ( 0%) 0% ( 0%) Apr 12 08:00 hourly.0
0% ( 0%) 0% ( 0%) Apr 12 07:29 nss6-wl(0118060994)_mezi_build_beta_build.mezimedia.com-dst.2 (busy,snapmirror)
0% ( 0%) 0% ( 0%) Apr 12 00:00 nightly.0
0% ( 0%) 0% ( 0%) Apr 11 20:00 hourly.1
$ sudo rsh nss6.wl.vclk.net snapmirror status
Snapmirror is on.
Source Destination State Lag Status
……
……
ds1.la.vclk.net:/vol/mezi_build_prd/build.mezimedia.com nss6-wl:/vol/mezi_build_beta/build.mezimedia.com Snapmirrored 03:07:06 Idle
ds2.la.vclk.net:/vol/mezi_dpstomcat_dev/amdfeed.mezimedia.com nss6-wl:/vol/mezi_dpstomcat_dev/amdfeed.mezimedia.com Snapmirrored 00:45:04 Idle
……
……
单个filer上,vol之间snapmirror:
$ sudo rsh nss6.wl.vclk.net snapmirror initialize -S mezi_mmfdb101_dev mezi_mmfdb102_dev
Transfer aborted: destination must be restricted for an initial transfer.
$ sudo rsh nss6.wl.vclk.net vol status mezi_mmfdb102_dev
Volume State Status Options
mezi_mmfdb102_dev online raid_dp, flex
Volume UUID: 95008ed6-6b26-11e0-93d5-00a0980cb33f
Containing aggregate: ‘aggr0’
$ sudo rsh nss6.wl.vclk.net vol restrict mezi_mmfdb102_dev
Volume ‘mezi_mmfdb102_dev’ is now restricted.
$ sudo rsh nss6.wl.vclk.net vol status mezi_mmfdb102_dev
Volume State Status Options
mezi_mmfdb102_dev restricted raid_dp, flex
Volume UUID: 95008ed6-6b26-11e0-93d5-00a0980cb33f
Containing aggregate: ‘aggr0’
$ sudo rsh nss6.wl.vclk.net snapmirror initialize -S nss6-wl:mezi_mmfdb101_dev mezi_mmfdb102_dev
Transfer aborted: destination volume too small; it must be equal to or larger than the source volume.
$ sudo rsh nss6.wl.vclk.net snapmirror initialize -S nss6-wl:mezi_mmfdb101_dev mezi_mmfdb102_dev
Transfer started.
Monitor progress with ‘snapmirror status’ or the snapmirror log.
$ sudo rsh nss6.wl.vclk.net snapmirror initialize -S nss6-wl:mezi_mmfdb101_dev mezi_mmfdb103_dev
Transfer started.
Monitor progress with ‘snapmirror status’ or the snapmirror log.
$ sudo rsh nss6.wl.vclk.net snapmirror status | grep mmfdb
ds2.la.vclk.net:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb101_dev Uninitialized 01:29:28 Idle
nss6-wl:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb102_dev Uninitialized – Transferring (1149 MB done)
nss6-wl:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb103_dev Uninitialized – Transferring (455 MB done)
$
中断正在传输数据的snapmirror。 snap abort:
$ sudo rsh nss6.wl.vclk.net snapmirror status | grep mezi_mmfdb
nss6-wl:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb102_dev Uninitialized – Transferring (203 GB done)
nss6-wl:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb103_dev Uninitialized – Transferring (203 GB done)
$ sudo rsh nss6.wl.vclk.net snapmirror abort mezi_mmfdb102_dev
$ sudo rsh nss6.wl.vclk.net snapmirror status | grep mezi_mmfdb
nss6-wl:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb102_dev Uninitialized – Idle with restart checkpoint (at 195 GB)
nss6-wl:mezi_mmfdb101_dev nss6-wl:mezi_mmfdb103_dev Uninitialized – Transferring (208 GB done)
在源上停止snapmirror,可以使用snapmirror release,这样会让源filer:
1. 删掉snapmirror自动建立的snapshot
2. 删掉snapm relastionship
可以直接使用snapmirror destinations的输出,作为给传递snapmirror release的参数。
$ sudo rsh ds2.la.vclk.net snapmirror destinations
Path Destination
……
mezi_mmdb101_dev nss6-wl:mezi_mmdb101_dev
mezi_mmfdb101_beta nss5-wl:mezi_mmfdb101_beta
mezi_mmfdb102_beta nss5-wl:mezi_mmfdb102_beta
mezi_mmfdb102_dev nss5-wl:mezi_mmfdb102_dev
……
$ sudo rsh ds2.la.vclk.net snap list mezi_mmfdb101_beta
Volume mezi_mmfdb101_beta
working…
%/used %/total date name
———- ———- ———— ——–
0% ( 0%) 0% ( 0%) Apr 18 09:40 nss5-wl(0118060459)_mezi_mmfdb101_beta.311 (snapmirror)
$ sudo rsh ds2.la.vclk.net snapmirror release mezi_mmfdb101_beta nss5-wl:mezi_mmfdb101_beta
$ sudo rsh ds2.la.vclk.net snap list mezi_mmfdb101_beta
Volume mezi_mmfdb101_beta
working…
No snapshots exist.
$ sudo rsh ds2.la.vclk.net snapmirror status | grep mmfdb101
$
最后这个问题,世界上很多人都在问,就用英语写了,方便中外朋友参考。
how to clear a unused snapmirror relationship:
1. dest filer: snapmirror break, vol status will changed to online from restricted
2. src filer: snapmirror relase( use the snapmirror destinations outputss as the arguments);
this will tell snapmirror to stop gennerate the snap shot , and delete the unused snap shouts generated by snapmirror
3. dest filer: snap delete -a -f vol_name; delete the snap shot generated automaticlly by snapmirror
4. dest filer: delete the schedule in snapmirror.conf if exists this setting