<a href="#%E7%9B%AE%E5%BD%95">目錄</a>
<a href="#%E5%89%8D%E6%96%87%E5%88%97%E8%A1%A8">前文清單</a>
<a href="#%E8%99%9A%E6%8B%9F%E7%A3%81%E7%9B%98%E6%95%B0%E6%8D%AE%E7%9A%84%E4%BC%A0%E8%BE%93%E6%96%B9%E5%BC%8F-transport-methods">虛拟磁盤資料的傳輸方式 Transport Methods</a>
<a href="#local-file-access">Local File Access</a>
<a href="#nbd-and-nbdssl-transport">NBD and NBDSSL Transport</a>
<a href="#san-transport">SAN Transport</a>
<a href="#hotadd-transport">HotAdd Transport</a>
<a href="http://blog.csdn.net/jmilk/article/details/77927455" target="_blank">VMware 虛拟化程式設計(1) — VMDK/VDDK/VixDiskLib/VADP 概念簡析</a>
<a href="http://blog.csdn.net/jmilk/article/details/77854924" target="_blank">VMware 虛拟化程式設計(2) — 虛拟磁盤檔案類型詳解</a>
<a href="http://blog.csdn.net/jmilk/article/details/78233661" target="_blank">VMware 虛拟化程式設計(3) —VMware vSphere Web Service API 解析</a>
<a href="http://blog.csdn.net/jmilk/article/details/78237671" target="_blank">VMware 虛拟化程式設計(4) — VDDK 安裝</a>
<a href="http://blog.csdn.net/jmilk/article/details/78238274" target="_blank">VMware 虛拟化程式設計(5) — VixDiskLib 虛拟磁盤庫詳解之一</a>
<a href="http://blog.csdn.net/jmilk/article/details/78240024" target="_blank">VMware 虛拟化程式設計(6) — VixDiskLib 虛拟磁盤庫詳解之二</a>
<a href="http://blog.csdn.net/jmilk/article/details/78246857" target="_blank">VMware 虛拟化程式設計(7) — VixDiskLib 虛拟磁盤庫詳解之三</a>
<a href="http://blog.csdn.net/jmilk/article/details/78302280" target="_blank">VMware 虛拟化程式設計(8) — 多線程中的 VixDiskLib</a>
<a href="http://blog.csdn.net/jmilk/article/details/78304816" target="_blank">VMware 虛拟化程式設計(9) — VMware 虛拟機的快照</a>
<a href="http://blog.csdn.net/Jmilk/article/details/78304869" target="_blank">VMware 虛拟化程式設計(10) — VMware 資料塊修改跟蹤技術 CBT</a>
<a href="http://blog.csdn.net/jmilk/article/details/78306851" target="_blank">VMware 虛拟化程式設計(11) — VMware 虛拟機的全量備份與增量備份方案</a>
<a href="http://blog.csdn.net/Jmilk/article/details/78309552" target="_blank">VMware 虛拟化程式設計(12) — VixDiskLib Sample 程式使用</a>
<a href="http://blog.csdn.net/jmilk/article/details/78309674" target="_blank">VMware 虛拟化程式設計(13) — VMware 虛拟機的備份方案設計</a>
在前面的篇章中有簡單的介紹過 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 本地檔案通路模式,使用 VixDiskLib 直接讀取 ESXi Host 本地 /vmfs/volumes 下的虛拟磁盤資料,簡單來說就是直接讀取本地 Hosted Disk 内的資料。但需要注意的是,Local File Access 并非一種網絡傳輸的方式,是以肯定是不能被應用于備份應用的。

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 傳輸模式
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 是 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 連接配接問題,需要嚴格按照數字順序來添加虛拟磁盤。