NetAppを利用した安くできるボリュームバックアップ 筐体間も出来るはずよ?
あまり日本語の記事を見かけなかったので備忘録代わりに投稿しておく。
参考にしたURLは以下の通り。
My journy with NetApp : Which is faster, NDMPcopy or vol copy?
NetApp FASシリーズを利用したバックアップというのを考えたとき、バックアップと一言で言っても案外人によって感覚が異なったりする。
- 単にファイルを戻せる断面が欲しいだけでデータの保管という意味ではない場合⇒Snapshot
- データの永続保管が目的の場合⇒SnapVault
- 有事にRPOを短縮するためのミラー⇒SnapMirror
さて、上記のSnapVaultとSnapMirrorは有料で、入れないと困ると考えがちだが、NetAppのCLIなど利用してよいのであればボリュームの別シェルフ等へのバックアップを行う方法はちゃんとある。筐体間でちょっとまだ試せてないが出来るはず。大体ボリュームやファイルを指定する際にファイラーのIPやホスト名を付ければOKのはず。ただhosts書き換えろとかいろいろあるようだが・・・。
「vol copy」を利用したボリューム全体のコピー
vol copy start {ソースボリューム} {デスティネーションボリューム}
上記コマンドを利用することで、ブロックレベルコピーを行うことができる。ただし、宛先ボリュームは完全にソースボリュームのコピーボリュームになるので元のデータは消去されるし、転送中は宛先ボリュームをオフラインにしておく必要がある。
また、ブロックレベルコピーのため毎回フルコピーを行うのでそれ相応に時間がかかることに注意。
実行例 FAS01> vol copy start aggr0_mig01 aggr0_mig01_bkup This can be a long-running operation. Use Control - C (^C) to interrupt. Copy Volume: aggr0_mig01 on machine 127.0.0.1 to Volume: aggr0_mig01_bkup VOLCOPY: Starting on volume 1. Volume 'aggr0_mig01_bkup' is now restricted. 11:13:49 JST : vol copy restore 0 : begun, 32204 MB to be copied. Fri Feb 21 11:13:49 JST [FAS01:volcopy.dst.autoRestrictMsg:notice]: Vol copy automatically restricting destination volume aggr0_mig01_bkup (currently offline). 11:14:33 JST : vol copy restore 0 : 5 % done. Estimate 15 minutes remaining. 11:14:59 JST : vol copy restore 0 : 10 % done. Estimate 11 minutes remaining. ... 11:21:33 JST : vol copy restore 0 : 95 % done. Estimate 1 minutes remaining. 11:22:20 JST : vol copy restore 0 : 100% done, 32204 MB copied.
「ndmpcopy」コマンドを利用したコピー
ndmpcopy [-l 0|1|2 ] {ソースパス} {デスティネーションパス}
ndmpcopyコマンドを利用することで、ファイル単位での筐体間、ボリューム間コピーが可能。「vol copy」コマンドと異なるのは宛先ボリュームがオンラインの状態で可能なこと、そしてインクリメンタルコピーが可能なこと。「-l 0」と指定するとフルバックアップを取得し、「-l 1」を指定するとフルバックアップとの差分のバックアップを取得する。「-l 2」は「-l 1」との差分となる。
実行例 ※フルダンプ FAS01> ndmpcopy /vol/aggr0_mig01 /vol/aggr0_mig01_bkup Ndmpcopy: Starting copy [ 2 ] ... Ndmpcopy: dcdapst01: Notify: Connection established Ndmpcopy: dcdapst01: Notify: Connection established Ndmpcopy: dcdapst01: Connect: Authentication successful Ndmpcopy: dcdapst01: Connect: Authentication successful Ndmpcopy: dcdapst01: Log: DUMP: creating "/vol/aggr0_mig01/../snapshot_for_backup.5" snapshot. Ndmpcopy: dcdapst01: Log: DUMP: Using Full Volume Dump Ndmpcopy: dcdapst01: Log: DUMP: Date of this level 0 dump: Fri Feb 21 12:00:48 2014. Ndmpcopy: dcdapst01: Log: DUMP: Date of last level 0 dump: the epoch. Ndmpcopy: dcdapst01: Log: DUMP: Dumping /vol/aggr0_mig01 to NDMP connection Ndmpcopy: dcdapst01: Log: DUMP: mapping (Pass I)[regular files] Ndmpcopy: dcdapst01: Log: DUMP: mapping (Pass II)[directories] Ndmpcopy: dcdapst01: Log: DUMP: estimated 80826044 KB. Ndmpcopy: dcdapst01: Log: DUMP: dumping (Pass III) [directories] Ndmpcopy: dcdapst01: Log: DUMP: dumping (Pass IV) [regular files] Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:00:50 2014: Begin level 0 restore Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:00:50 2014: Reading directories from the backup Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:00:50 2014: Creating files and directories. Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:00:51 2014: Writing data to files. Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:05:49 2014 : We have read 33475649 KB from the backup. Ndmpcopy: dcdapst01: Log: DUMP: Fri Feb 21 12:05:49 2014 : We have written 33476563 KB. Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:10:49 2014 : We have read 68779944 KB from the backup. Ndmpcopy: dcdapst01: Log: DUMP: Fri Feb 21 12:10:49 2014 : We have written 68781186 KB. Ndmpcopy: dcdapst01: Log: ACL_START is '80485616640' Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:12:09 2014: Restoring NT ACLs. Ndmpcopy: dcdapst01: Log: DUMP: dumping (Pass V) [ACLs] Ndmpcopy: dcdapst01: Log: RESTORE: RESTORE IS DONE Ndmpcopy: dcdapst01: Log: DUMP: 78599242 KB Ndmpcopy: dcdapst01: Log: DUMP: DUMP IS DONE Ndmpcopy: dcdapst01: Notify: restore successful Ndmpcopy: dcdapst01: Log: DUMP: Deleting "/vol/aggr0_mig01/../snapshot_for_backup.5" snapshot. Ndmpcopy: dcdapst01: Log: DUMP_DATE is '5687918944' Ndmpcopy: dcdapst01: Notify: dump successful Ndmpcopy: Transfer successful [ 0 hours, 11 minutes, 28 seconds ] Ndmpcopy: Done ※レベル1のインクリメンタルダンプ 1Gだけ更新して行ったが1分で終わった FAS01> ndmpcopy -l 1 /vol/aggr0_mig01 /vol/aggr0_mig01_bkup Ndmpcopy: Starting copy [ 3 ] ... Ndmpcopy: dcdapst01: Notify: Connection established Ndmpcopy: dcdapst01: Notify: Connection established Ndmpcopy: dcdapst01: Connect: Authentication successful Ndmpcopy: dcdapst01: Connect: Authentication successful Ndmpcopy: dcdapst01: Log: DUMP: creating "/vol/aggr0_mig01/../snapshot_for_backup.7" snapshot. Ndmpcopy: dcdapst01: Log: DUMP: Using inowalk incremental dump for Full Volume Ndmpcopy: dcdapst01: Log: DUMP: Date of this level 1 dump: Fri Feb 21 12:57:08 2014. Ndmpcopy: dcdapst01: Log: DUMP: Date of last level 0 dump: Fri Feb 21 12:00:48 2014. Ndmpcopy: dcdapst01: Log: DUMP: Dumping /vol/aggr0_mig01 to NDMP connection Ndmpcopy: dcdapst01: Log: DUMP: mapping (Pass I)[regular files] Ndmpcopy: dcdapst01: Log: DUMP: mapping (Pass II)[directories] Ndmpcopy: dcdapst01: Log: DUMP: estimated 6476070 KB. Ndmpcopy: dcdapst01: Log: DUMP: dumping (Pass III) [directories] Ndmpcopy: dcdapst01: Log: DUMP: dumping (Pass IV) [regular files] Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:57:11 2014: Begin incremental restore Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:57:12 2014: Reading directories from the backup Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:57:12 2014: Creating new files and directories. Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:57:12 2014: Writing data to files. Ndmpcopy: dcdapst01: Log: ACL_START is '6605280256' Ndmpcopy: dcdapst01: Log: RESTORE: Fri Feb 21 12:58:07 2014: Restoring NT ACLs. Ndmpcopy: dcdapst01: Log: DUMP: dumping (Pass V) [ACLs] Ndmpcopy: dcdapst01: Log: RESTORE: RESTORE IS DONE Ndmpcopy: dcdapst01: Log: DUMP: 6450476 KB Ndmpcopy: dcdapst01: Log: DUMP: DUMP IS DONE Ndmpcopy: dcdapst01: Notify: restore successful Ndmpcopy: dcdapst01: Log: DUMP: Deleting "/vol/aggr0_mig01/../snapshot_for_backup.7" snapshot. Ndmpcopy: dcdapst01: Log: DUMP_DATE is '9982889620' Ndmpcopy: dcdapst01: Notify: dump successful Ndmpcopy: Transfer successful [ 0 hours, 1 minutes, 7 seconds ] Ndmpcopy: Done
これらをスクリプトやジョブ管理ソフトウェアで回せるのであれば、SnapMirrorライセンスに頼らずともそこまで時間と手間のかからないボリューム全体バックアップを維持できると思う。
RPO1週間とかでいい環境であれば、このような仕組みを作った方がコスト対効果が出るのではないだろうか。バックアップソフトも要らない。
勿論SnapMirrorはボリュームのSnapshotをSnapshot容量分の転送だけで素早く簡単にコピーできて、いいことづくめ。「ndmpcopy」や「vol copy」もそれなりにCPUやDiskUtil値を高めるし、SnapMirrorには同期モードもあるし。なので適材適所ではある。ただSnapMirrorがないと筐体間のコピーができない、ミラーが組めない、と思い込むのはちょっとした損になるなぁと思う。