目录

前文列表

VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析

VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解

VMware 虚拟化编程(3) —VMware vSphere Web Service API 解析

VMware 虚拟化编程(4) — VDDK 安装

VMware 虚拟化编程(5) — VixDiskLib 虚拟磁盘库详解之一

VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二

VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三

VMware 虚拟化编程(8) — 多线程中的 VixDiskLib

VMware 虚拟化编程(9) — VMware 虚拟机的快照

VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT

VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案

VMware 虚拟化编程(12) — VixDiskLib Sample 程序使用

VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计

虚拟磁盘数据的传输方式 Transport Methods

在前面的篇章中有简单的介绍过 VDDK 支持的数据传输模式:

  • 本地文件 (Local File)
  • 网络块设备 (NBD, Network Block Device)
  • 局域网的加密 (NBDSSL,NBD with encryption)
  • 存储区域网络 (SAN, Storage Area Network)
  • 热添加的 SCSI (SCSI HotAdd)

备份程序都是通过调用 VixDiskLib 的 VixDiskLib_ConnectEx 接口来建立与 VMDK 的连接,如果传输模式参数传入为 NULL 的话,VixDiskLib 会按照默认按照「file:san:hotadd:nbd」的顺序依次尝试,值得首次成功或者全部失败。当建立连接成功之后,可以调用 VixDiskLib_ListTransportModes 查看此时连接所用的传输模式。

Local File Access

Local File Access 本地文件访问模式,使用 VixDiskLib 直接读取 ESXi Host 本地 /vmfs/volumes 下的虚拟磁盘数据,简单来说就是直接读取本地 Hosted Disk 内的数据。但需要注意的是,Local File Access 并非一种网络传输的方式,所以肯定是不能被应用于备份应用的。

NBD and NBDSSL Transport

NBD and NBDSSL Transport (加密)网络块设备传输模式,也叫 LAN Transport,只要在局域网络环境中就能支持,是最基础也是最通用的备份数据传输方式,当其他的传输方式不可用时,VixDiskLib 会自动回退(fall‐back)到该传输模式。NBD 将远程 ESXi 主机上的存储视为一个块设备,所以 NBD 支持镜像级别备份。NBDSSL 就是在 NBD 的基础上使用 SSL 来加密的 TCP 连接上传输的数据。

从上图可以看出,ESXi Host 会从其 VMFS 中的虚拟磁盘读取数据,然后再将数据流通过 LAN 传输到 Backup Server,所以 NBD/NBDSSL 数据传输使用的是 ESXi Host 的管理网络,而非独立的数据传输网络。这就意味着 NBD/NBDSSL 的传输速率会更低,同时也需要考虑数据传输所占用的带宽是否会影响到 ESXi Host 的正常通信。

NBD/NBDSSL 特性:

  • 支持所有存储类型,具有很好的通用性。
  • 支持使用虚拟机作为 Backup Proxy,这样能够最小化备份业务的性能影响。可以考虑将 Backup Proxy 运行在级别较低的资源池中。
  • 在私有的网络环境中,可以考虑使用 NBD 代替 NBDSSL,因为前者的速度更快,占用的资源更低。当然,这个视乎数据的安全级别。

NOTE:物理备份服务器 Backup Server;虚拟备份服务器 Backup Proxy;

SAN Transport



SAN 传输模式

SAN Transport,VixDiskLib 的高级传输模式之一,是效率最高的数据传输模式,应用 SAN 需要 Backup Server 和 ESXi 主机共享一个 Datastore 依赖的 LUN,使 Backup Server 能够直接访问 LUN 的原始数据,并绕过了 ESXi 主机的 I/O 操作。换句话说就是 SAN 传输模式要求 Backup Server 能够通过 FC/iSCSI/SAS 访问到虚拟磁盘。

此传输模式下,VixDiskLib 会从 VC/ESXi 中获取相关 VMFS LUN 的布局信息,然后基于这些信息直接从虚拟磁盘对应的 LUN 设备中读取数据,而无需再通过 ESXi Host 和 LAN 来进行数据传输。使用 SAN 数据传输网络,达到了 LAN free 的效果。

SAN Transport 特性:

  • 仅支持 SAN 网络存储
  • 仅支持物理备份服务器
  • 要求能够以 RAW 设备的形式访问 LUN 设备
  • 不能兼容 VSAN(a network based storage solution with direct attached disks)
  • SAN 存储设备支持包含 SATA drives
  • 支持 Fibre Channel、iSCSI、SAS(based storage arrays)
  • 是备份的最佳选择,但对恢复来说却不是

NOTE:使用 SAN Transport 恢复虚拟机时,如果虚拟机有一个预先存在的快照的话,那么你需要先删除掉该快照,否则将恢复失败。

HotAdd Transport

HotAdd 是 VMware 提供的一种功能,允许正在运行的虚拟机动态添加 SCSI 磁盘、CPU 和内存设备配置,而 HotAdd Transport 就是基于 HotAdd 功能实现的另一种 VixDiskLib 高级传输模式。

HotAdd Transport 要求备份应用运行在 Backup Proxy 中,与 NBD/NBDSSL 一样也是使用 LAN 进行数据传输,不同在于前者需要走管理网络(ESXi 控制),而后者走的是数据/存储网络,所以 HotAdd Transport 的数据传输效率依旧比 NBD/NBDSSL 更高。Backup Proxy 以 HotAdd 传输模式连接到备份目标虚拟机创建的快照之后,会创建该快照的一个临时克隆链接(linked clone)并将这个链接 Attach 到 Backup Proxy。此时在 Backup Proxy 上会发现一块新的 SCSI 磁盘设备,然后就可以使用 VixDiskLib 来直接读取该磁盘设备中的数据,Backup Proxy 也能够想读取自己的磁盘一样来读取新的 SCSI 磁盘中的文件。

HotAdd Transport 特征:

  • 仅支持 Backup Proxy
  • 仅适用于备份具有 SCSI 磁盘的虚拟机,不支持备份 IDE 虚拟磁盘

NOTE 1:当使用 HotAdd 备份一个 Linux GuestOS 时,通常会按照数字顺序为虚拟机添加的 SCSI Contorller 指定一个 ID。但因为 Linux GuestOS 缺少一个接口来通知 SCSI Controller 被分配到了哪一个总线 ID,所以 HotAdd 会假设 SCSI Controller 的唯一 ID 和它的总线 ID 总是相关的。但实际上这个假设是有可能不成立的,例如:如果 Linux GuestOS 的第一个 SCSI Controller ID 0 被分配到总线 ID 0,但是你添加了一个 SCSI Controller ID 1 并将其分配到总线 ID 3。对于这种情况下,HotAdd 高级传输模式就很可能会失败,因为它期望的总线 ID 是 1,才能够继续与总线 ID 相关。为避免出现这种问题,当向虚拟机添加 SCSI Controller 时,必须严格按照数字顺序分配下一个可用的总线 ID。

NOTE 2:如果新添加的虚拟磁盘引用了一个还不存在的 SCSI Controller ID,VMware 为隐式的添加一个 SCSI Controller 来完成 bus:disk 分配。例如:如果磁盘 0:0 和 0:1 已经存在,添加一个磁盘 1:0 没有问题,VMware 会隐式的添加 SCSI Controller 1。但是如果你手动的添加磁盘 3:0 就会打破总线 ID 的顺序(SCSI Controller 1 != Bus 3)。为了避免 HotAdd 连接问题,需要严格按照数字顺序来添加虚拟磁盘。

VMware 虚拟化编程(14) — VDDK 的高级传输模式详解的更多相关文章

  1. VMware 虚拟化编程(4) — VDDK 安装

    目录 目录 前文列表 VDDK 安装 VDDK 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/VADP 概念简析 VMware 虚拟化编程(2) - 虚拟磁盘 ...

  2. VMware 虚拟化编程(15) — VMware 虚拟机的恢复方案设计

    目录 目录 前文列表 将已存在的虚拟机恢复到指定时间点 恢复为新建虚拟机 灾难恢复 恢复细节 恢复增量备份数据 以 RDM 的方式创建虚拟磁盘 创建虚拟机 Sample of VirtualMachi ...

  3. VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计

    目录 目录 前文列表 备份思路 备份算法 备份细节 连接到 vCenter 还是 ESXi 如何选择快照类型 是否开启 CBT 如何获取备份数据 如何提高备份数据的传输率 备份厚置备磁盘和精简置备磁盘 ...

  4. VMware 虚拟化编程(12) — VixDiskLib Sample 程序使用

    目录 目录 前文列表 vixDiskLibSample 安装 Sample 程序 Sample 程序使用方法 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/V ...

  5. VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三

    目录 目录 前文列表 VixDiskLib 虚拟磁盘库 VixDiskLib_GetMetadataKeys VixDiskLib_ReadMetadata 获取虚拟磁盘元数据 VixDiskLib_ ...

  6. VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二

    目录 目录 前文列表 VixDiskLib 虚拟磁盘库 VixDiskLib_Open 打开 VMDK File VixDiskLib_Read 读取 VMDK File 数据 VixDiskLib_ ...

  7. VMware 虚拟化编程(5) — VixDiskLib 虚拟磁盘库详解之一

    目录 目录 前文列表 VixDiskLib 虚拟磁盘库 虚拟磁盘数据的传输方式 Transport Methods VixDiskLib_ListTransportModes 枚举支持的传输模式 Vi ...

  8. VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案

    目录 目录 前文列表 全量备份数据的获取方式 增量备份数据的获取过程 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/VADP 概念简析 VMware 虚拟化编 ...

  9. VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT

    目录 目录 前文列表 数据块修改跟踪技术 CBT 为虚拟机开启 CBT CBT 修改数据块偏移量获取函数 QueryChangedDiskAreas changeId 一个 QueryChangedD ...

随机推荐

  1. 2019 湖湘杯 Reverse WP

    0x01 arguement 下载链接:https://www.lanzous.com/i7atyhc 1.准备 获取到信息: 32位的文件 upx加密文件 在控制台打开文件 使用"upx ...

  2. 【问题解决方案】visudo: /etc/sudoers is busy, try again later

    参考链接: 博客园:visudo: /etc/sudoers is busy, try again later CSDN:Shell 获取进程号并杀掉该进程 注:找到几篇相同的参考内容,都是只有查看进 ...

  3. Auth主件的(RBAC) 六表

    1.RBAC 和Auth的区别 基于RBAC一般Djagno 会用 和Auth 相对来说高级一点 2.RBAC( role Based Accsess Control)的六表之间的数据传输 2.1 D ...

  4. Spring基础14——Bean的生命周期

    1.IOC容器中的Bean的生命周期方法 SpringIOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务.SpringIOC容器对Bean的生命周期进行管理 ...

  5. Django发送邮件功能

    以126邮箱为例 1 首先进126邮箱设置,开启: POP3/SMTP服务 IMAP/SMTP服务 成功开启后会获得一个授权码.   2. setting.py配置: # 配置发送邮箱 # 需要登录网 ...

  6. HBase(一)——HBase介绍

    HBase介绍 1.关系型数据库与非关系型数据库 (1)关系型数据库 ​ 关系型数据库最典型的数据机构是表,由二维表及其之间的联系所组成的一个数据组织 ​ 优点: ​ 1.易于维护:都是使用表结构,格 ...

  7. 分页控件SSTab

    一.分页控件SSTab概述1.作用:采用分页形式查询或编辑数据表中数据.2.添加到控件箱菜单命令:工程 | 部件,选择:Microsoft Tabbed Dialog Control 6.0 (SP6 ...

  8. VB中preserve的用法

    注:本文转载自:http://zhidao.baidu.com/question/161401549.html ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private. ...

  9. pandas进阶

    pandas是基于numpy构建的库,在数据处理方面可以把它理解为numpy的加强版,由于numpy主要用于科学计算,特长不在于数据处理,我们平常处理的数据一般带有列标签和index索引,这时pand ...

  10. python json、pickle

    文章部分转自:https://www.cnblogs.com/lincappu/p/8296078.html json:用于字符串和Python数据类型间进行转换pickle: 用于python特有的 ...