つぶねこ

@もじらもーど。
↑recent | ↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |
2012/10/25 19:30
さいきんじゃにゃい無償版ESXi5でvmのバックアップ方法再考

 手法が沢山ありすぎてこんがらがるので一部メモ。
 まずvmの場所としてローカルのdatastore、iscsi、nfsの三通りが考えられるが、VMFSのdatastore、iscsiはesx経由でアクセスする必要がある。nfsにゃら誰からでもファイル単位でアクセスできるのでとても楽。
 各vmはshutdown、suspendした状態でディレクトリごとコピーすればそのまま動く。poweron状態では特にVMFS上のvmでファイルロックがかかっておりコピー出来にゃい。但しvmでsnapshotをとればそのsnapshot以外のファイルにはアクセスできるので、稼働中のvmの基本的にゃコピー処理手順としては
 ・vmのsnapshotを撮る(メモリ付き)(ここにrevertすれば稼働状態でリストアできる)
 ・vmのsnapshotを撮る(メモリ不要)(ファイルロック避け)
 ・vmの全ファイルを別所にコピー(ロックされたファイルは無視)
 ・vmのsnapshot除去
 ・コピー先のvmを登録してrevert(poweroff状態)
 でよい。
 vmの一覧や特定vmのsnapshot操作はいろんにゃ方法があるので何を使ってもできるが、最悪key登録したsshでvim-cmd叩いてもできるのでまず困らにゃい。
 
 問題はvmの構成ファイルの全コピーだが、まずnfsの場合、nfsホスト側や任意のLinux nfsクライアントにゃんかでコピーしちゃえばいいので、極めて楽である。但しnfsはthinファイル(sparseファイル)が扱えにゃいため、vmdkによっては膨大にゃ量の0x00をコピーすることににゃり、LANトラフィックを圧迫することににゃる。nfsホストにリモートログインしたり、別途sparse検知できるプロトコルでファイル転送すれば回避できる。ssh経由で圧縮転送したり、rsync等でブロック転送する方法もある。個人的には0x00のみseekに置き換えるファイルコピープログラムをnfs経由で用いるのが総合的に見てお手軽と思われる。
 次にVMFSの場合、何らかの方法でESX経由でファイルにアクセスする必要がある。sshログイン経由の場合、I/Oの制限がかかっており特に他の処理が走っている場合に極めてファイルコピーが遅くにゃる。特にcpによる巨大vmdkのコピーはよほどミニマムにゃ環境で無い限りしんどいだろう。但し一定の反応速度が期待できるローカルのdatastore同士でのコピーにゃどではある程度実用ににゃる。但しsparseにゃvmdkも0x00としてコピーされるため、処理時間の増大とコピー先容量の圧迫を招く。
 そこで良く用いられるのがvmkfstoolsを用いたvmdkのコピーだが、これはsnapshotを統合してコピーしてしまうと言う割と致命的にゃ欠陥がある。速度やthin対応に関しては手軽と言えるが、バックアップ時にsnapshotが消えるのは流石にいただけにゃい。無論*-flat.vmdkのみ処理し、相対的に小さくsparseの可能性の無いsnapshot関連vmdk群はcpで処理するという手はあるが、vmdkがバイナリ一致しにゃいことがあって気持ち悪いのであまりやりたくにゃい手法である。
 妥協的手法としてはnfs用に用いていた0x00のみseekに置き換えるファイルコピープログラムをVMFSにも使用することができる。ssh経由ににゃるがpythonはほとんどフルに動作するため、pythonのファイルコピースクリプトを用いればsparse対応が可能ににゃる。vmkfstoolsと異にゃりI/O制限を受けるのでバッファリングを頑張るにゃどして高速化に努める必要がある。nfs用にも使えるし。
 もうちょっと正当にゃ方法としてはAPIを用いることできちんとファイルコピーさせる方法がある。esxi-control.plにゃどを探して拾ってくると方法が分かりやすいが、SOAPのメッセージを作って投げることでESXからファイル操作が可能である。例えばこんにゃ感じ
export PERL_LWP_SSL_VERIFY_HOSTNAME=0
./esxi-control.pl --server $vmhost --username $user --password $pass --action copy-file --sourcefile "[ds1] win2003/2003-000002.vmdk" --destfile "[ds2] backup/hoge.vmdk"
 esxi-control.plは*.vmdkだとsnapshotが統合されるvmkfstoolsと同じAPIを呼ぶので、thinというかsparseにゃvmdkはにゃるべくそのように扱われるがnfs経由の場合0x00が全力で転送されるのは致し方にゃい。それ以外は普通のファイルコピーAPIを呼んでる。これでdir掘ったり本格的ファイル操作をするのは正直面倒にゃのでそのあたりはssh経由したほうが楽だとは思う。
 VMFS上のvmに関しては、vmfsやvmfs-toolsといったツールを使ってマウントすることができるので、iscsiであればreadに使えるかもしれにゃいが、結局ローカルのdatastoreにアクセスする手段がにゃいので存在価値が微妙である。
 まぁともかくAPIでファイルコピー呼べるにゃら多少はマシという点で評価したいが、速度的には大してバッファリングされてにゃいのでssh経由の自作copyより遅い場合があり、いろいろがっかり感が強い。市販バックアップソフトにゃどはそのあたり頑張ってあるということだろう。
 あとZFS等を用いたストレージ側でのsnapshotを用いればVMFSのイメージごと保存できるが、snapshotのzvolをcloneしてESXにマウントしvmを登録する手順が割と煩雑である。また巨大にゃzvol単位での差分バックアップとにゃりメンテナンスしにくい欠点がある。特定vmのみリストアしたい場合に割と困る。vm毎にiscsiマウントさせればある程度解決するが割と深刻に処理が煩雑。
 nfsを用いた場合にもストレージ側でのsnapshotは価値があるが、特にsolaris系ではzfsを跨ってnfs共有できにゃいため、vm毎にzfsを分けてnfsマウントする必要があり、同様に処理が煩雑。Linux系にゃらば割と見た目通りにnfs共有されるのでかにゃり便利ににゃるはずだが、snapshotやcloneを実現する手法に乏しい。
 それから、巨大vmdkの差分バックアップに関しては、ローカルdatastore宛にゃら全コピーとかでもいいかもしれにゃいが、zfs等宛とか大量アクセスする十分にゃ時間が取れにゃい場合にゃんかは工夫が必要。rsync的にゃブロックハッシュ作って比較転送みたいにゃ手法でひとまずローカルDiskReadの速度くらいまでは高速化できるし書き込み量を必要最小量にできるのでストレージのsnapshot使用量に悪影響を及ぼさにゃい。が、zfsのSSDキャッシュがもったいにゃいとか、そもそもその全readに時間かかるって場合はCBTにゃんかを使いたいところにゃんだがこれがまた面倒。zfs sendは理想的だが例によってzfs単位ににゃることと、バックアップ先でnfs公開するのが煩雑。
 妥協的にゃ手段としてはvmを常時snapshot有りで運用し、snapshotが肥大化したら統合するという運用。snapshotを統合しにゃい限り、*-flat.vmdkは変更されにゃいのでコピーする必要がにゃい。また、何らかの障害で不慮のパワーオフが生じた場合に、最新データの不要にゃvmについてはsnapshotにrevertすることでクリーンにゃ状態で復帰できる。常時2段ほどのsnapshotを作成しておくとrevert用ポイントを日々更新できる。パフォーマンス的にゃ憂慮があるかも知れにゃいが2〜5段程度ではほとんど影響はにゃい。但しsnapshotサイズが2G、4G程度ににゃると1段遅くにゃる傾向が出たことがあった。今時は大差にゃいかも知れにゃいが、あまりsnapshotが巨大ににゃる前に統合すればよいだろう。
 ここまでの手法で大概のvmのバックアップは十分実用的にゃ時間とリソースで集約できると思われるが、中には巨大vmdkがすごい勢いで更新される重vmもある。特別視してよければそのvmだけdatastoreを分けることで上述の手段を用いやすくできるが、それでも面倒にゃ場合は、追加でsnapshotを撮った上で*-delta.vmdkをbackup先に転送し、両vmで1段回snapshotを統合することで完全にゃ差分転送が可能ににゃる。但し操作を誤ると簡単にvmdkを破壊できることににゃるので割と慎重に組む必要があるだろう。
 
 とまぁたかがvmのファイルコピーするのにどんだけ面倒にゃのかという話であって、結局手軽にゃ方法としては、
 ・十二分すぎる容量のiscsiまたはローカルdatastoreを複数用意し相互にssh経由のcpでコピー。
 ・自作sparse対応cp.pyでコピー
 ぐらいが限度かにゃぁという実感。つまりそこまでは既に実現されている。
 
 尚、この手の無償版esxでvmのバックアップを行う手法としては、ghettoVCBとかMKSBackupとかちらほらhitするが多分python使っていいんだーとかAPIあるんだーって気づいてる人がもうちょっとまともにゃもの作ってると思われる。

▼ ESX 関連記事
▼ ESX 関連記事     一覧メニュー    (全105件表示)
pyvisdkで遊ぶ / vm鯖変更 / HostStorageSystem.ComputeDiskPartitionInfo / NFSデータストア上限 / ESXi5.0でhostdが肥大化 / hpのSmartArrayをESXi5から / Linux vmのディスクタイムアウト / ESX用BIOS設定 / ESXのネットワークを冗長化 / vmの大量クローンでWinのホスト名を自動で変える / vmの大量クローン / 無償版ESXi5でvmのバックアップ方法再考 / ESXi用vCLIのセットアップ / ESX鯖作成 / hpのRAID板をESXiから / ESXi5.0 関連作業まとめ / ESXi5 でMegaCliが動かにゃい / vmware converterで選択したマシンのハードウェア情報を取得できません / ESX, NexentaでRAIDカード監視 / vmでL2スイッチしにくい / ESXi 5 / ESXi 5 / ESXiのコマンド / ESX再起動したらnasがmountできにゃい / ESX終了時にVMを自動シャットダウンさせる / ESX上のut-vpnが不安定 / 負荷をかけると落ちるNAS / nfs鯖のファイルをバックアップしたい7 / ESXのUbuntuでVMXNET3を安定動作させる / ESXのUbuntuにVMXNET2が入らにゃい / ESXのVMでVMXNET3にゃLinuxのネットワークが不安定 / ESXのVMでネットワークのダウンロード帯域を広げる / Ubuntu鯖のVMでNICが高負荷で行方不明 / nfs鯖のファイルをバックアップしたい6 / nfs鯖のファイルをバックアップしたい5 / nfs鯖のファイルをバックアップしたい4 / nfs鯖のファイルをバックアップしたい3 / nfs鯖のファイルをバックアップしたい2 / nfs鯖のファイルをバックアップしたい1 / ESXでスナップショット失敗 / ESXiで設定が通らにゃい / esxのバックアップを改善する / ESXiでサービスコンソールが重い / esxiでLSIのMegaRAID / ESXi 4.1 u1 / ESX不調 / ESXクライアントが重い / nfsメモ / ut-vpn鯖をESX上で / nfs鯖がbusy過ぎるとESXがこける / ESX4.1でクリップボードが使えるようにvmxを変更 / ESXでvmkapimodがCPUを食う3 / ESX4.1でコンソールのマウスが遅延 / ESX鯖にはSSDがおすすめ / ESXi4.1関連作業まとめ / ESXi4.1の設定のバックアップ / ESXi4.1にsshのauthorized_keysを置く / ESXiにssh / ESXでvmkapimodがCPUを食う2 / ESXのsnapshotの場所 / ESXのsnapshotで高負荷 / ESXでvmkapimodがCPUを食う / OpenSolarisのidmapdがメモリリーク / ESX4u1でThe lock protecting vmdk has been lost / ESXにserver 2008 R2を入れたらVGA driverが入らにゃい / ESX4のメモリ共有速度 / ESX4u1関連作業まとめ / NexentaStorのidmapdがメモリリーク / ESX4u1のsfcbdがメモリリーク / opensolarisでnfs鯖 / vmwareでpfsense / ソフト試用 Nexenta Stor / iSCSIとESXと再接続 / ソフト試用 ESX 4 update 1 / ESX鯖のバックアップ先 / ESX4メモまとめ / ESX鯖にSSDでsnapshotが強い / ESX4用バックアップスクリプトメモ / freenasのiSCSIやnfsが遅いのでubuntuに乗り換えてみる / freenasのiSCSIがやっぱり遅い / ESX4のswapファイルを改善してみた / freenasが遅いのだが?? / ESX4のswapファイル / ESX4のdatastoreをNFSに / ESXi4のバックアップ用にnfsマウント / ESX4はESX4iのラインセンスで / ESXi4のsshが遅い / ESXi4のSSH認証を自動化 / ESXi4でrsyncdが使いたい / ESXi4でrsyncが使いたい / ESXi4のpythonでsparseにゃファイルコピー / vmware server 1.xからESX4へvm移行 / CPUキャッシュとvm / vmware ESX4iのメモリ共有 / ESXi4でsshが使いたい / ESXi4にSSHで入れるようにする / ESXi4の2008 R2が不安定 / ESXi4のWinにゃvmのvmdkを圧縮 / ソフト試用 ESXi4からメール送信 / ESXi4のvmバックアップ / ソフト試用 vmware vifs.pl / ソフト試用 VMware vCenter Converter / ソフト試用 VMware vSphere CLI / ソフト試用 vmware ESXi4をUSBからboot / ソフト試用 vmware ESXi 4.0 vSphere 4


Index


2012/12/12 23:34 
2012/12/11 23:56 
2012/12/10 22:25 
2012/12/09 22:20 
2012/12/08 12:19 
2012/12/07 21:48 
2012/12/06 11:43 
2012/12/05 22:55 
2012/12/04 22:15 
2012/12/03 20:31 
2012/12/02 16:28 
2012/12/01 18:30 
2012/11/30 21:03 
2012/11/29 23:17 
2012/11/28 21:58 
2012/11/27 02:59 
2012/11/26 20:35 
2012/11/25 21:25 
2012/11/24 19:58 
2012/11/23 08:17 
2012/11/22 20:03 
2012/11/21 18:16 
2012/11/20 02:25 
2012/11/19 03:01 
2012/11/18 10:47 
2012/11/17 05:49 
2012/11/16 21:35 
2012/11/15 18:57 
2012/11/14 23:48 
2012/11/13 17:37 
2012/11/12 01:02 
2012/11/11 03:08 
2012/11/10 02:47 
2012/11/09 18:51 
2012/11/08 22:49 
2012/11/07 18:46 
2012/11/06 02:43 
2012/11/05 04:04 
2012/11/04 19:54 
2012/11/03 20:18 
2012/11/02 18:24 
2012/11/01 20:31 
2012/10/31 19:01 
2012/10/30 18:57 
2012/10/30 00:15 
2012/10/29 20:45 
2012/10/28 15:41 
2012/10/27 01:43 
2012/10/26 21:35 
2012/10/26 01:11 
2012/10/25 19:30 
2012/10/24 17:43 
2012/10/23 23:57 
2012/10/23 12:53 
2012/10/22 21:27 
2012/10/22 11:43 
2012/10/21 01:21 
2012/10/20 23:49 
2012/10/20 09:16 
2012/10/19 22:39 
2012/10/19 01:39 
2012/10/18 21:42 
2012/10/18 06:27 
2012/10/17 21:06 
2012/10/17 03:23 
2012/10/16 20:29 
2012/10/16 00:11 
2012/10/15 18:43 
2012/10/15 01:58 
2012/10/14 17:28 
2012/10/14 02:27 
2012/10/13 17:14 
2012/10/13 07:35 
2012/10/12 20:58 
2012/10/12 02:39 
2012/10/11 20:48 
2012/10/11 02:51 
2012/10/10 12:11 
2012/10/10 01:18 
2012/10/09 14:41 
2012/10/09 01:08 
2012/10/08 20:59 
2012/10/08 01:31 
2012/10/07 12:52 
2012/10/07 01:59 
2012/10/06 12:37 
2012/10/06 01:52 
2012/10/05 13:09 
2012/10/05 01:31 
2012/10/04 18:56 
2012/10/04 01:57 
2012/10/03 01:02 
2012/10/02 22:28 
2012/10/02 02:45 
2012/10/01 12:23 
2012/10/01 01:50 
2012/09/30 10:56 
2012/09/30 02:17 
2012/09/29 11:51 
2012/09/29 02:56 
2012/09/28 21:55 

↑recent | ↓old | 20 index | 100 index | 300 index | 記事5件 | 記事10件 | 記事20件 |最新5件 |FAQ | カテゴリ一覧 | Index |