当前位置: 首页 > 工具软件 > Bareos > 使用案例 >

Bareos VMware vSphere CBT备份插件

巫马玉堂
2023-12-01

VMware插件可用于在VMware vSphere上运行的虚拟机的无代理备份。它利用CBT(更改块跟踪)来进行空间高效的完整备份和增量备份,有关强制性要求,请参见下文。

自从它被包含在Bareos中以来 版本> = 15.2.0

状态

该插件可以执行VM磁盘的完整,差异和增量备份和还原。

当前的局限性包括:

限制-VMware插件:无法从备份中排除普通VM磁盘。

尚无法从备份中排除普通(从属)VM磁盘。但是,独立磁盘被隐式排除,因为它们不受基于CBT备份所需的快照的影响。

限制-VMware插件:不备份VM配置。

虚拟机配置未备份,因此尚无法重新创建完全删除的虚拟机。

限制-VMware插件:虚拟磁盘必须小于2TB

虚拟磁盘必须小于2 TB,请参阅问题#670

限制-VMware插件:只能对同一VM或本地VMDK文件进行还原。

Bareos版本15.2.2之前,只能对具有现有虚拟磁盘的相同现有VM进行还原。以来版本> = 15.2.3 ** bareos-vadp-dumper **版本> = 15.2.2-15和%** bareos-vmware-plugin **版本> = 15.2.2-27 ,还可以还原到本地VMDK文件,有关更多详细信息,请参见下文。

要求

由于该插件基于用于数据保护的VMware vSphere存储API,因此至少需要VMware vSphere Essentials许可证。已针对用于VMware 5.x的数据保护的VMware vSphere Storage API进行了测试。它不适用于独立的未经许可的VMware ESXi™

Bareos 版本> = 17.2.4该插件使用的是Virtual Disk Development KitVDDK6.5.2,从VDDK 6.5发行说明开始,它应与vSphere 6.5和下一主要版本(新功能除外)兼容,并向后兼容对于vSphere 5.56.0,请参见https://code.vmware.com/web/sdk/65/vddk上的 VDDK发行说明以了解详细信息。

安装

通过使用适当的软件包管理工具(例如yumzypperapt),安装包括其要求的包aredos-vmware-plugin

FAQ可能有其他有用信息。

组态

首先,通过在vCenter中添加具有完全特权的用户帐户,方法是将该帐户分配给管理员角色,或者将该帐户添加到分配给管理员角色的组中。尽管可以使用具有完全特权的任何用户帐户,但更好的做法是创建一个单独的用户帐户,以便可以清楚地区分此帐户在vSphere中登录的操作。将来可能会定义一组更详细的必需角色特权。

vCenter Appliance与嵌入式SSO一起使用时,用户帐户通常具有<username> @ vsphere.local结构,在vCenter中将Active Directory用作SSO时,该用户帐户可能会有所不同。对于此处的示例,我们将使用bakadm@vsphere.local和密码Bak.Adm-1234

有关vSphere中用户和权限的更多详细信息,请参见

确保在Bareos File Daemon配置中添加或启用以下设置:

nudeos-fd.d / client / myself.conf

Client {

  ...

  Plugin Directory = /usr/lib/bareos/plugins

  Plugin Names = python

  ...

}

注意:根据平台的不同,插件目录也可能是 /usr/lib64/bareos/plugins

要在Bareos中定义VM的备份,必须将作业定义和文件集资源添加到Bareos Director配置中。在vCenter中,VM通常组织在数据中心和文件夹中。以下示例显示了如何在vCenter Server vcenter.example.org上的datacenter mydc1文件夹webservers配置名为websrv1VM的备份:

nudeos-dir.confVMware插件作业和文件集定义

Job {

  Name = "vm-websrv1"

  JobDefs = "DefaultJob"

  FileSet = "vm-websrv1_fileset"

}

 

FileSet {

  Name = "vm-websrv1_fileset"

 

  Include {

    Options {

         signature = MD5

         Compression = GZIP

    }

    Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=mydc1:folder=/webservers:vmname=websrv1:vcserver=vcenter.example.org:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234"

  }

}

对于在根文件夹中定义的VM,必须在插件定义中指定folder = /

Bareos 版本> = 17.2.4module_path没有vmware_plugin目录。在升级时,您可以从

适用于Bareos <17.2.0pythonmodule_path

Plugin = "python:module_path=/usr/lib64/bareos/plugins/vmware_plugin:module_name=bareos-fd-vmware:...

适用于Bareospythonmodule_path> = 17.2.0

Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:...

或安装包含兼容性符号链接的aredos-vmware-plugin-compat软件包。

以来 版本> = 17.2.4:由于该插件使用的是虚拟磁盘开发工具包(VDDK6.5,因此需要传递vCenter SSL证书的指纹,该指纹是SSL证书的SHA1校验和。可以通过以下方式检索指纹:

检索vCenter SSL证书指纹的示例

echo -n | openssl s_client -connect vcenter.example.org:443 2>/dev/null | openssl x509 -noout -fingerprint -sha1

结果将如下所示:

示例结果指纹

SHA1 Fingerprint=CC:81:81:84:A3:CF:53:ED:63:B1:46:EF:97:13:4A:DF:A5:9F:37:89

为了提高安全性,现在有一个插件选项vcthumbprint,可以选择添加。必须像下面的示例一样,不带冒号。

paleos-dir.conf:具有vcthumbprintVMware插件选项

    ...

    Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=mydc1:folder=/webservers:vmname=websrv1:vcserver=vcenter.example.org:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234:vcthumbprint=56F597FE60521773D073A2ED47CE07282CE6FE9C"

    ...

为了在不提供vcthumbprint情况下易于使用(但不太安全),该插件将检索指纹。

也因为 版本> = 17.2.4已添加另一个可选的插件选项,可用于尝试强制给定的传输方法。通常,当没有给出任何传输方法时,VDDK将协商可用的传输方法并选择最佳的传输方法。有关运输方法的说明,请参见

https://code.vmware.com/doc/preview?id=4076#/doc/vddkDataStruct.5.5.html

当插件在有权访问要备份的虚拟磁盘所在的数据存储的VMware虚拟机中运行时,VDDK将使用hotadd传输方法。在无法访问SAN的物理服务器上,它将使用NBD传输方法,在这种情况下,热添加传输不可用。

要尝试强制使用给定的传输方法,可以使用插件选项传输,例如

nudeos-dir.conf:带传输功能的VMware插件选项

    ...

    Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=mydc1:folder=/webservers:vmname=websrv1:vcserver=vcenter.example.org:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234:transport=nbdssl"

    ...

请注意,当指定不可用的传输方法时,备份将失败。

以来 版本> = 17.2.8,可以在文件夹vmname的配置中使用非ASCII字符和空格。现在,虚拟磁盘文件名或包含非ASCII字符的路径也可以正确处理。为了备份vApp中包含的VM,现在可以像文件夹组件一样使用vApp名称。例如,如果我们在文件夹中拥有名为 Test vAppvApp,并且该vApp包含两个VM Test VM 01Test VM 02,则文件集的配置应如下所示:/Test/Test Folder

nudeos-dir.conf:适用于vAppVMware插件文件集定义

FileSet {

  Name = "vApp_Test_vm_Test_VM_01_fileset"

 

  Include {

    Options {

         signature = MD5

         Compression = GZIP

    }

    Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=mydc1:folder=/Test/Test Folder/Test vApp:vmname=Test VM 01:vcserver=vcenter.example.org:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234"

  }

}

 

FileSet {

  Name = "vApp_Test_vm_Test_VM_02_fileset"

 

  Include {

    Options {

         signature = MD5

         Compression = GZIP

    }

    Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=mydc1:folder=/Test/Test Folder/Test vApp:vmname=Test VM 02:vcserver=vcenter.example.org:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234"

  }

}

但是,重要的是要知道,不可能将非ASCII字符用作作业或文件集资源的名称的参数。

在此之前,只能通过将实例UUIDuuid一起使用来指定vApp中包含的VM,而不是像这样使用文件夹vmname

nudeos-dir.conf:适用于vAppVMware插件文件集定义

FileSet {

  Name = "vApp_Test_vm_Test_VM_01_fileset"

    ...

 

    Plugin = "python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=mydc1:uuid=502b112f-3954-d761-be08-5570c8a780e2:vcserver=vcenter.example.org:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234"

  }

}

请注意,它必须是所谓的vSphere实例UUID,而不是使用例如dmidecode时在VM内部显示的BIOS UUID 。该vmware_cbt_tool.py实用程序相应调整(详见下文)。

后备

在运行第一次备份之前,必须启用CBT(更改块跟踪)才能备份VM

http://kb.vmware.com/kb/2075984开始,手动启用CBT当前无法正常工作。但是,API可以正常工作。要启用CBT,请使用脚本vmware_cbt_tool.py,将其打包在aredos-vmware-plugin软件包中:

vmware_cbt_tool.py的使用

user@host:~$ vmware_cbt_tool.py --help

usage: vmware_cbt_tool.py [-h] -s HOST [-o PORT] -u USER [-p PASSWORD] -d

                          DATACENTER [-f FOLDER] [-v VMNAME]

                          [--vm-uuid VM_UUID] [--enablecbt] [--disablecbt]

                          [--resetcbt] [--info] [--listall]

 

Process args for enabling/disabling/resetting CBT

 

optional arguments:

  -h, --help            show this help message and exit

  -s HOST, --host HOST  Remote host to connect to

  -o PORT, --port PORT  Port to connect on

  -u USER, --user USER  User name to use when connecting to host

  -p PASSWORD, --password PASSWORD

                        Password to use when connecting to host

  -d DATACENTER, --datacenter DATACENTER

                        DataCenter Name

  -f FOLDER, --folder FOLDER

                        Folder Name (must start with /, use / for root folder

  -v VMNAME, --vmname VMNAME

                        Names of the Virtual Machines

  --vm-uuid VM_UUID     Instance UUIDs of the Virtual Machines

  --enablecbt           Enable CBT

  --disablecbt          Disable CBT

  --resetcbt            Reset CBT (disable, then enable)

  --info                Show information (CBT supported and enabled or

                        disabled)

  --listall             List all VMs in the given datacenter with UUID and

                        containing folder

注意:选项--vm-uuid--listall已在版本中添加版本> = 17.2.8,该工具现在还能够处理--folder--vmname参数的非ascii字符参数,并且vApp名称可以像文件夹名称组件一样使用。使用--listall,可以在表格输出中报告给定数据中心中的所有VM,包括实例UUID并包含Folder / vApp名称。

对于上述配置示例,启用CBT的命令为

使用vmware_cbt_tool.py的示例

user@host:~$ vmware_cbt_tool.py -s vcenter.example.org -u bakadm@vsphere.local -p Bak.Adm-1234 -d mydc1 -f /webservers -v websrv1 --enablecbt

注意:如果虚拟硬件版本为6或更早版本,则CBT不起作用。

启用CBT后,可以照常运行或计划备份作业,例如在bconsole

运行job = vm-websrv1 level = Full

恢复

要还原,必须关闭虚拟机电源并且不存在快照。在bconsole使用还原菜单5,选择正确的FileSet并输入标记*,然后完成。恢复完成后,即可启动虚拟机。

恢复到本地VMDK文件

以来 版本> = 15.2.3,可以还原到本地VMDK文件。这意味着,还原将直接在运行Bareos File Daemon的系统的文件系统上创建VMDK磁盘映像文件,而不是直接还原属于VM的磁盘。由于从中获取备份的虚拟机不受此影响,因此在还原到本地VMDK时,它可以保持打开状态。然后可以将此类还原的VMDK文件上载到VMware vSphere数据存储中,或通过guestfish类的工具进行访问以提取单个文件。

要还原到本地VMDK,必须传递插件选项localvmdk = yes。以下示例显示如何使用bconsole执行这种还原:

示例还原到本地VMDK

*<input>restore</input>

Automatically selected Catalog: MyCatalog

Using Catalog "MyCatalog"

 

First you select one or more JobIds that contain files

to be restored. You will be presented several methods

of specifying the JobIds. Then you will be allowed to

select which files from those JobIds are to be restored.

 

To select the JobIds, you have the following choices:

     1: List last 20 Jobs run

     ...

     5: Select the most recent backup for a client

     ...

    13: Cancel

Select item:  (1-13): <input>5</input>

Automatically selected Client: vmw5-bareos-centos6-64-devel-fd

The defined FileSet resources are:

     1: Catalog

     ...

     5: PyTestSetVmware-test02

     6: PyTestSetVmware-test03

     ...

Select FileSet resource (1-10): <input>5</input>

+-------+-------+----------+---------------+---------------------+------------------+

| jobid | level | jobfiles | jobbytes      | starttime           | volumename       |

+-------+-------+----------+---------------+---------------------+------------------+

|   625 | F     |        4 | 4,733,002,754 | 2016-02-18 10:32:03 | Full-0067        |

...

You have selected the following JobIds: 625,626,631,632,635

 

Building directory tree for JobId(s) 625,626,631,632,635 ...

10 files inserted into the tree.

 

You are now entering file selection mode where you add (mark) and

remove (unmark) files to be restored. No files are initially added, unless

you used the "all" keyword on the command line.

Enter "done" to leave this mode.

 

cwd is: /

$ <input>mark *</input>

10 files marked.

$ <input>done</input>

Bootstrap records written to /var/lib/bareos/vmw5-bareos-centos6-64-devel-dir.restore.1.bsr

 

The job will require the following

   Volume(s)                 Storage(s)                SD Device(s)

===========================================================================

 

    Full-0001                 File                      FileStorage

    ...

    Incremental-0078          File                      FileStorage

 

Volumes marked with "*" are online.

 

10 files selected to be restored.

 

Using Catalog "MyCatalog"

Run Restore job

JobName:         RestoreFiles

Bootstrap:       /var/lib/bareos/vmw5-bareos-centos6-64-devel-dir.restore.1.bsr

Where:           /tmp/bareos-restores

Replace:         Always

FileSet:         Linux All

Backup Client:   vmw5-bareos-centos6-64-devel-fd

Restore Client:  vmw5-bareos-centos6-64-devel-fd

Format:          Native

Storage:         File

When:            2016-02-25 15:06:48

Catalog:         MyCatalog

Priority:        10

Plugin Options:  *None*

OK to run? (yes/mod/no): <input>mod</input>

Parameters to modify:

     1: Level

     ...

    14: Plugin Options

Select parameter to modify (1-14): <input>14</input>

Please enter Plugin Options string: <input>python:localvmdk=yes</input>

Run Restore job

JobName:         RestoreFiles

Bootstrap:       /var/lib/bareos/vmw5-bareos-centos6-64-devel-dir.restore.1.bsr

Where:           /tmp/bareos-restores

Replace:         Always

FileSet:         Linux All

Backup Client:   vmw5-bareos-centos6-64-devel-fd

Restore Client:  vmw5-bareos-centos6-64-devel-fd

Format:          Native

Storage:         File

When:            2016-02-25 15:06:48

Catalog:         MyCatalog

Priority:        10

Plugin Options:  python: module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware: dc=dass5:folder=/: vmname=stephand-test02: vcserver=virtualcenter5.dass-it:vcuser=bakadm@vsphere.local: vcpass=Bak.Adm-1234: localvmdk=yes

OK to run? (yes/mod/no): <input>yes</input>

Job queued. JobId=639

注意:自Bareos 版本> = 15.2.3,添加Python插件选项就足够了,例如通过

pythonlocalvmdk =

在此之前,必须重复所有Python插件并添加其他插件,例如: python:module_path=/usr/lib64/bareos/plugins:module_name=bareos-fd-vmware:dc=dass5:folder=/:vmname=stephand-test02:vcserver=virtualcenter5.dass-it:vcuser=bakadm@vsphere.local:vcpass=Bak.Adm-1234:localvmdk=yes

还原过程完成后,可以在路径{/ tmp / bareos-restores /}下找到还原的VMDK文件:

还原到本地VMDK的示例结果

# <input>ls -laR /tmp/bareos-restores</input>

/tmp/bareos-restores:

total 28

drwxr-x--x.  3 root root  4096 Feb 25 15:47 .

drwxrwxrwt. 17 root root 20480 Feb 25 15:44 ..

drwxr-xr-x.  2 root root  4096 Feb 25 15:19 [ESX5-PS100] stephand-test02

 

/tmp/bareos-restores/[ESX5-PS100] stephand-test02:

total 7898292

drwxr-xr-x. 2 root root       4096 Feb 25 15:19 .

drwxr-x--x. 3 root root       4096 Feb 25 15:47 ..

-rw-------. 1 root root 2075197440 Feb 25 15:19 stephand-test02_1.vmdk

-rw-------. 1 root root 6012731392 Feb 25 15:19 stephand-test02.vmdk

 

测试全备,增量备份成功,直接恢复到Vsphere失败,localvmdk=yes恢复到Bareos Linux本地,恢复出来的vmdk磁盘文件为VMware Workstation格式,Bareos Linux配置nfs共享给ESXi主机,使用vmkfstools -i netxms.vmdk  /vmfs/volumes/datastorenew/netxms.vmdk -d thin转换为ESXi格式后挂载给新建虚拟机成功。

 类似资料: