ghettoVCBスクリプトを使用したESXi仮想マシンのバックアップ

この記事では、自動バックアップの構成と、無料のghettoVCBスクリプトを使用してESX(i)プラットフォームで実行されている仮想マシンを復元する例を説明します。 バージョンESXi 5.xに焦点を当てますが、同じツールはバージョン3.5-6.xでも機能しますが、以前のバージョンでは設定がわずかに異なります。 バックアップはNFSサーバーで実行されます。 レポートは郵便局に送信されます。 バックアップ中に、仮想マシンのスナップショット(作業中のものを含む)が取得され、マシンのVMDKディスクが保存され、画像が削除されます。

ghettoVCBプロジェクトは十分に文書化されていますが、実装の過程でこの指示をもたらす微妙な違いがありました。 この記事が初心者の管理者に役立つことを願っています。







  1. バックアップ設定
  2. ESXiサーバー構成の保存
  3. バックアップからのマシンの復元
  4. 参照資料




バックアップ設定



まず、バックアップを作成するNFSサーバーを好みに合わせて準備します。 私の場合、これらはFreeNAS(Freebsd 9.3)と重複排除と圧縮を有効にしたZFSデータセットであり、スペースを大幅に節約します。 ESXiサーバーでのセットアップは、SSHを介してrootとして実行されます。 管理者権限を持つ別のユーザーの下では可能ですが、コンソールから検証用のスクリプトを実行することはできません。 始めましょう。



1.設定するには、SSH経由でサーバーにアクセスし、vSphereクライアント経由で有効にする必要があります。

Configuration -> security profile -> properties -> SSH
      
      







2. githubリポジトリからスクリプトを取得し、コンテンツをサーバーに配置します。 必ず実行ビットを設定してください。設定しないと、スクリプトは機能しません。

 # chmod u+x /ghettoVCB-master/ghettoVCB.sh # chmod u+x /ghettoVCB-master/ghettoVCB-restore.sh
      
      







3. 1週間に1回、4週間のサイクルでバックアップします。 期限切れのバックアップは削除されます。 適切な構成ファイルを作成します。

 # cat /ghettoVCB-master/4week.conf VM_BACKUP_VOLUME=/vmfs/volumes/backup DISK_BACKUP_FORMAT=thin #   VM_BACKUP_ROTATION_COUNT=4 POWER_VM_DOWN_BEFORE_BACKUP=0 ENABLE_HARD_POWER_OFF=0 ITER_TO_WAIT_SHUTDOWN=3 POWER_DOWN_TIMEOUT=5 ENABLE_COMPRESSION=0 ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0 ENABLE_NON_PERSISTENT_NFS=1 UNMOUNT_NFS=1 # NFS ,     NFS_SERVER=10.1.3.101 NFS_MOUNT=/mnt/backup/vmware NFS_LOCAL_NAME=backup #   NFS  (  ESXi ) NFS_VM_BACKUP_DIR=autobackup/vm01 SNAPSHOT_TIMEOUT=15 #    EMAIL_LOG=1 EMAIL_SERVER=mail.core.local EMAIL_SERVER_PORT=25 EMAIL_DELAY_INTERVAL=1 EMAIL_TO=admins@mail.local EMAIL_FROM=ghettoVCB@vm01.core.local WORKDIR_DEBUG=0 VM_SHUTDOWN_ORDER= VM_STARTUP_ORDER=
      
      



主なパラメーターは次のとおりです。



ESXiサーバーに、同じ座標(サーバー/パス)のnfsディスクが既に接続されている場合、ディスクは接続されません。



レターの本文は、スクリプトの実行中に形成され、 nc



ユーティリティによって送信されます。 これにより、メールサーバー側で「 Recipient address rejected: Improper use of SMTP command pipelining



」という引数でエラーが発生する可能性があります。 ESXiサーバーの対応するチェックを除外する必要があります(後reject_unauth_pipelining



場合はreject_unauth_pipelining



になります)。



4.バックアップが必要なマシンのリストを作成します。 esxcli vm process list



コマンドを使用して取得できます。 リストの各行は1台のマシンです。

 # cat /ghettoVCB-master/week.list win7 win10 vCenterUpdate
      
      



頻度とパラメーターが異なる複数のバックアップ計画が必要な場合は、必要な数の構成を作成します。



5. cronを設定して、定期的なタスクを実行します。

 # cat /var/spool/cron/crontabs/root #min hour day mon dow command #………………………. 3 18 * * 6 /ghettoVCB-master/ghettoVCB.sh -g /ghettoVCB-master/4week.conf -f /ghettoVCB-master/week.list > /var/log/ghettoVCB-backup-week-$((($(date +\%d)-1)/7+1)).log
      
      





システム時刻はUTCになっているため、現在のタイムゾーンに合わせて調整する必要があります。 私の場合、+ 7時間-バックアップは日曜日の午前1時に開始されます。 ログを書き込む(または/ dev / nullにリダイレクトする)必要があります。そうしないと、ユーザーに割り当てられたバッファーがいっぱいになったときにスクリプトがフリーズする場合があります。 構文$((($(date +\%d)-1)/7+1))



は月の週番号を与えるので、ゴミを取得しません。



6. cronを再起動します。

 # kill $(cat /var/run/crond.pid) # crond
      
      







7.メールを送信するには、ESXiサーバーのファイアウォールに送信トラフィックの許可を追加する必要があります。





次のように、「vCenterUpdate」という名前のマシンのテストバックアップテストを実行できます。

 # /ghettoVCB-master/ghettoVCB.sh -g /ghettoVCB-master/4week.conf -d dryrun -m vCenterUpdate
      
      



結論:
 # /ghettoVCB-master/ghettoVCB.sh -g /ghettoVCB-master/4week.conf -d dryrun -m vCenterUpdate Logging output to "/tmp/ghettoVCB-2015-08-18_07-15-08-23516502.log" ... 2015-08-18 07:15:09 -- info: ============================== ghettoVCB LOG START ============================== 2015-08-18 07:15:09 -- info: CONFIG - USING GLOBAL GHETTOVCB CONFIGURATION FILE = /ghettoVCB-master/4week.conf 2015-08-18 07:15:09 -- info: CONFIG - VERSION = 2015_05_06_1 2015-08-18 07:15:09 -- info: CONFIG - GHETTOVCB_PID = 23516502 2015-08-18 07:15:09 -- info: CONFIG - VM_BACKUP_VOLUME = /vmfs/volumes/backup/autobackup/vm01 2015-08-18 07:15:09 -- info: CONFIG - ENABLE_NON_PERSISTENT_NFS = 1 2015-08-18 07:15:09 -- info: CONFIG - UNMOUNT_NFS = 1 2015-08-18 07:15:09 -- info: CONFIG - NFS_SERVER = 10.1.3.101 2015-08-18 07:15:09 -- info: CONFIG - NFS_VERSION = nfs 2015-08-18 07:15:09 -- info: CONFIG - NFS_MOUNT = /mnt/backup/vmware 2015-08-18 07:15:09 -- info: CONFIG - VM_BACKUP_ROTATION_COUNT = 4 2015-08-18 07:15:09 -- info: CONFIG - VM_BACKUP_DIR_NAMING_CONVENTION = 2015-08-18_07-15-08 2015-08-18 07:15:09 -- info: CONFIG - DISK_BACKUP_FORMAT = thin 2015-08-18 07:15:09 -- info: CONFIG - POWER_VM_DOWN_BEFORE_BACKUP = 0 2015-08-18 07:15:09 -- info: CONFIG - ENABLE_HARD_POWER_OFF = 0 2015-08-18 07:15:09 -- info: CONFIG - ITER_TO_WAIT_SHUTDOWN = 3 2015-08-18 07:15:09 -- info: CONFIG - POWER_DOWN_TIMEOUT = 5 2015-08-18 07:15:09 -- info: CONFIG - SNAPSHOT_TIMEOUT = 15 2015-08-18 07:15:09 -- info: CONFIG - LOG_LEVEL = dryrun 2015-08-18 07:15:09 -- info: CONFIG - BACKUP_LOG_OUTPUT = /tmp/ghettoVCB-2015-08-18_07-15-08-23516502.log 2015-08-18 07:15:09 -- info: CONFIG - ENABLE_COMPRESSION = 0 2015-08-18 07:15:09 -- info: CONFIG - VM_SNAPSHOT_MEMORY = 0 2015-08-18 07:15:09 -- info: CONFIG - VM_SNAPSHOT_QUIESCE = 0 2015-08-18 07:15:09 -- info: CONFIG - ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP = 0 2015-08-18 07:15:09 -- info: CONFIG - VMDK_FILES_TO_BACKUP = all 2015-08-18 07:15:09 -- info: CONFIG - VM_SHUTDOWN_ORDER = 2015-08-18 07:15:09 -- info: CONFIG - VM_STARTUP_ORDER = 2015-08-18 07:15:09 -- info: CONFIG - RSYNC_LINK = 0 2015-08-18 07:15:09 -- info: CONFIG - EMAIL_LOG = 1 2015-08-18 07:15:09 -- info: CONFIG - EMAIL_SERVER = mail.core.local 2015-08-18 07:15:09 -- info: CONFIG - EMAIL_SERVER_PORT = 25 2015-08-18 07:15:09 -- info: CONFIG - EMAIL_DELAY_INTERVAL = 2 2015-08-18 07:15:09 -- info: CONFIG - EMAIL_FROM = ghettoVCB@vm02.core.local 2015-08-18 07:15:09 -- info: CONFIG - EMAIL_TO = admins@mail.local 2015-08-18 07:15:09 -- info: CONFIG - WORKDIR_DEBUG = 0 2015-08-18 07:15:09 -- info: 2015-08-18 07:15:10 -- dryrun: ############################################### 2015-08-18 07:15:10 -- dryrun: Virtual Machine: vCenterUpdate 2015-08-18 07:15:10 -- dryrun: VM_ID: 588 2015-08-18 07:15:10 -- dryrun: VMX_PATH: /vmfs/volumes/ds3524_ds/vCenterUpdate/vCenterUpdate.vmx 2015-08-18 07:15:10 -- dryrun: VMX_DIR: /vmfs/volumes/ds3524_ds/vCenterUpdate 2015-08-18 07:15:10 -- dryrun: VMX_CONF: vCenterUpdate/vCenterUpdate.vmx 2015-08-18 07:15:10 -- dryrun: VMFS_VOLUME: ds3524_ds 2015-08-18 07:15:10 -- dryrun: VMDK(s): 2015-08-18 07:15:10 -- dryrun: vCenterUpdate.vmdk 40 GB 2015-08-18 07:15:10 -- dryrun: INDEPENDENT VMDK(s): 2015-08-18 07:15:10 -- dryrun: TOTAL_VM_SIZE_TO_BACKUP: 40 GB 2015-08-18 07:15:10 -- dryrun: ############################################### 2015-08-18 07:15:10 -- info: ###### Final status: OK, only a dryrun. ###### 2015-08-18 07:15:10 -- info: ============================== ghettoVCB LOG END ================================
      
      









マシンのリストを手動で実行します。

 # /ghettoVCB-master/ghettoVCB.sh -g /ghettoVCB-master/4week.conf -f /ghettoVCB-master/week.list
      
      





マシンの各コピーは、次の形式のディレクトリに保存されます。

 autobackup/vm01/VMNAME/VMNAME-FULL_DATE/
      
      





そして、 * .vmdk形式のマシンディスクとマシン構成ファイル* .vmxになります。



ESXiサーバー構成の保存



上記のESXi設定は、最初の再起動まで有効です。 構成を保存するには、いくつかのアクションを実行する必要があります。



1. cronスクリプトをブートスクリプトに変更するコマンドを追加します。

 # cat /etc/rc.local.d/local.sh #................... /bin/kill $(cat /var/run/crond.pid) /bin/echo "3 18 * * 6 /ghettoVCB-master/ghettoVCB.sh -g /ghettoVCB-master/4week.conf -f /ghettoVCB-master/week.list > /var/log/ghettoVCB-backup-week-$((($(date +\%d)-1)/7+1)).log" >> /var/spool/cron/crontabs/root /bin/busybox crond
      
      







2.ファイアウォール設定を保存するために、独自のVIBパッケージを作成し、サーバーにインストールします。 これを行うには、 VIB Authorユーティリティを使用します。 残念ながら、32ビットアーキテクチャ専用であるため、lxcコンテナを使用する必要がありました。 インストールするとき、フォームの依存関係を誓うのは怖いことがあります:

 # rpm -ivh vmware-esx-vib-author-5.0.0-0.0.847598.i386.rpm error: Failed dependencies: libc.so.6()(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libc.so.6(GLIBC_2.2.5)(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libc.so.6(GLIBC_2.3)(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libc.so.6(GLIBC_2.4)(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libdl.so.2()(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libdl.so.2(GLIBC_2.2.5)(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libpthread.so.0()(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386 libpthread.so.0(GLIBC_2.2.5)(64bit) is needed by vmware-esx-vib-author-5.0.0-0.0.847598.i386
      
      





しかし、これは重要ではありませんrpm --nodeps



キーで節約できます。



VIBパッケージをビルドするためのディレクトリツリーを準備します。

 # mkdir -p stage/payloads/payload1/etc/vmware/firewall/
      
      





そして、2つのファイルを作成します。 最初はパッケージの説明です:

 # cat stage/descriptor.xml <vib version="5.0"> <type>bootbank</type> <name>mailFirewall</name> <version>5.0.0-0.0.1</version> <vendor>Lelik.13a</vendor> <summary>Custom VIB from Lelik.13a</summary> <description>Adds custom firewall rule for mail sender to ESXi host</description> <relationships> <depends> </depends> <conflicts/> <replaces/> <provides/> <compatibleWith/> </relationships> <software-tags> </software-tags> <system-requires> <maintenance-mode>false</maintenance-mode> </system-requires> <file-list> </file-list> <acceptance-level>community</acceptance-level> <live-install-allowed>true</live-install-allowed> <live-remove-allowed>true</live-remove-allowed> <cimom-restart>false</cimom-restart> <stateless-ready>true</stateless-ready> <overlay>false</overlay> <payloads> <payload name="payload1" type="vgz"></payload> </payloads> </vib>
      
      



パラメータの詳細な手順は、ユーティリティのWebサイトで見つけることができます。



そして、2番目のファイルはemail.xmlで、その内容は上記に記載されています。 そして、それはパスstage/payloads/payload1/etc/vmware/firewall/email.xml



れます。「 payload1



」の後のパスは、ターゲットサーバー上の目的のパスです。



VIBパッケージを収集します。

 # vibauthor -C -t stage -v mailFirewall.vib
      
      





そして、その内容を確認してください
 # vibauthor -i -v mailFirewall.vib **** Info for VIB: mailFirewall.vib **** VIB Format: 2.0.0 VIB ID: Lelik.13a_bootbank_mailFirewall_5.0.0-0.0.1 VIB Type: bootbank Name: mailFirewall Version: 5.0.0-0.0.1 Vendor: Lelik.13a Summary: [Fling] Custom VIB from Lelik.13a Description: Adds custom firewall rule for mail sender to ESXi host Creation Date: 2015-08-12 09:47:07.199735+00:00 Provides: mailFirewall = 5.0.0-0.0.1 Depends: Conflicts: Replaces: mailFirewall << 5.0.0-0.0.1 Software Tags: [] MaintenanceMode: remove/update: False, installation: False Signed: False AcceptanceLevel: community LiveInstallAllowed: True LiveRemoveAllowed: True CimomRestart: False StatelessReady: True Overlay: False Payloads: Name Type Boot Size Checksums payload1 vgz 0 347 sha-256 69aa821faa4ccd5a5e34e487ecf6049aa6bf55652ffffbfaae1257e40610c405 sha-1 4d77e529c8da74e82d4aa4e816bcf193e29ab8de
      
      







必要に応じて、 私のパッケージを使用することができます (あなた自身の危険とリスクで)。



3.パッケージをESXiサーバーにコピーし、インストールして何が起こったかを確認します。

 # esxcli software vib install -v /tmp/mailFirewall.vib -f # esxcli software vib list | grep mail # esxcli network firewall refresh
      
      



パッケージはファイルをシステムに追加するため、「- -f



-f



必要です。

念のため、ファイアウォールのルールをもう一度お読みください。



したがって、他の有用なサーバー設定を収集して修正できます。



4.最後に、ESXiサーバー設定を手動でバックアップします。

 # /sbin/auto-backup.sh
      
      







バックアップからのマシンの復元



すぐに、リカバリ後にホットなマシンにバックアップされたマシンがクラッシュ後のようになることを考慮する必要があります-マシン内のデータ損失が発生する可能性があります。



1.バックアップストレージをNFSを介してターゲットESXiサーバーに接続するか、単にそこにあるデータをsshでコピーします。



2.この種類の構成ファイル「vms_to_restore」を作成します。

 # cat /ghettoVCB-master/vms_to_restore #"<DIRECTORY or .TGZ>;<DATASTORE_TO_RESTORE_TO>;<DISK_FORMAT_TO_RESTORE>" # DISK_FORMATS # 1 = zeroedthick # 2 = 2gbsparse # 3 = thin # 4 = eagerzeroedthick # eg "/vmfs/volumes/restore/autobackup/vm01/vCenterUpdate/vCenterUpdate-2015-08-13_07-55-50/;/vmfs/volumes/local_vm01/;3;vCenterUpdate-restore"
      
      



; 」を介して順番に:





3.テスト実行を実行します。

 # /ghettoVCB-master/ghettoVCB-restore.sh -c /ghettoVCB-master/vms_to_restore -d 1
      
      





そして戦闘:

 # /ghettoVCB-master/ghettoVCB-restore.sh -c /ghettoVCB-master/vms_to_restore -l /var/log/vms-restore.log ################## Restoring VM: vCenterUpdate-restore ##################### Start time: Fri Aug 14 06:05:06 UTC 2015 Restoring VM from: "/vmfs/volumes/restore/autobackup/vm01/vCenterUpdate/vCenterUpdate-2015-08-13_07-55-50/" Restoring VM to Datastore: "/vmfs/volumes/local_vm01/" using Disk Format: "thin" Creating VM directory: "/vmfs/volumes/local_vm01//vCenterUpdate-restore" ... Copying "vCenterUpdate.vmx" file ... Restoring VM's VMDK(s) ... Updating VMDK entry in "vCenterUpdate-restore.vmx" file ... Destination disk format: VMFS thin-provisioned Cloning disk '/vmfs/volumes/restore/autobackup/vm01/vCenterUpdate/vCenterUpdate-2015-08-13_07-55-50//vCenterUpdate.vmdk'... Clone: 100% done. Registering vCenterUpdate-restore ... 12 End time: Fri Aug 14 06:11:19 UTC 2015
      
      





4.喜ぶ。



2番目のオプション。 バックアップは構成ファイルを含むマシンのダンプであるため、次のことが簡単にできます。



1. ESXiサーバーのどこかにコピーします。



2.マシンディスクの名前と場所のフィールドを変更して、マシン構成ファイル(* .vmx)を修正します。

 displayName = vCenterUpdate-restore extendedConfigFile = "vCenterUpdate-restore.vmxf" scsi0:0.fileName = "vCenterUpdate-restore-0.vmdk" sched.swap.derivedName = "vCenterUpdate-ff0c3749.vswp"
      
      



ファイルへのパスは、マシンのディレクトリを基準に指定できます(指定する必要があります)。



3. vSphereClientを介して、ストレージにアクセスします。

 Configuration -> storage ->  -> "browse datastore"
      
      





リストに新しい車を追加します。

  -> "Add to inventory"   *.vmx
      
      





4.リカバリサーバーが異なる場合、マシンの設定で「ネットワーク接続」を変更します。



5.最初の起動時に、車の引き出された場所が尋ねられます。移動したものに答える必要があります。

複製したと答えると、ネットワークカードのMACアドレスを含む一意のデータが変更されます。



それだけです。 GhettoVCBスクリプトは、他の興味深いオプションとコピーオプションもサポートしているため、ドキュメントを読むと便利です。 この方法は理想とはほど遠いですが、安くて明るくしたい場合は、かなり実行可能です。



ご清聴ありがとうございました。



リンク集






All Articles