4 V, l6 a7 E& x4 Y: x
存储虚拟化是一种对物理存储资源进行抽象的技术,使其看起来像是一个集中的资源。虚拟化掩盖了管理内存、网络、服务器和存储中资源的复杂性。
8 q h: E2 ]$ T
存储虚拟化运行在多个存储设备上,使它们看起来就像一个单一的存储池。这些池化的存储设备可以来自不同的供应商和网络。存储虚拟化引擎可识别来自多个阵列和存储媒介的可用存储容量,对其进行聚合、管理并将其呈现给应用程序。
* I+ l4 x' ^9 R# ]& a. x
虚拟化软件的工作原理是将存储系统的I/O请求拦截到服务器。引擎将物理请求映射到虚拟存储池,并从物理位置访问请求的数据,而不是由CPU处理请求以及将数据返回到存储器。一旦计算机进程完成,虚拟化引擎将I/O从CPU发送到它的物理地址,并更新其虚拟映射。
# W3 r, o; E$ r& d* }, |
该引擎将存储管理集中到一个基于浏览器的控制台,该控制台允许存储管理员将多个不同供应商的阵列作为单个存储系统进行有效管理。
" w* m0 @% n2 |: G4 M1 f S+ k
存储虚拟化的剖析
1 R0 \0 n6 f: K
3 d4 q7 x0 `# [# s2 I
存储虚拟化可以出现在各种不同的场景中
3 \% T1 N; @% w9 K
& a7 a* N! j6 s. p 数据级别:块或文件
, A" W C$ P9 K* a
基于块
7 z/ d# Y! \; x# C* }7 x) u 基于块的存储虚拟化是最常见的存储虚拟化类型。它将存储系统的逻辑存储从其物理组件中抽象出来。物理组件包括内存块和存储媒介,而逻辑组件包括驱动器分区。
( R% R M: ^- J& x* {3 Z) R 存储虚拟化引擎在可以多个阵列和单个媒介上发现所有可用块,而不考虑存储系统的物理位置、逻辑分区或制造商。引擎将数据留在物理位置,并将地址映射到虚拟存储池。这使引擎能够将多个供应商的存储系统的容量呈现给服务器,就好像整个存储系统是单个阵列。
- T" p9 M2 E: V9 n+ ~; J- U 文件级别
$ r- J6 O% R1 Q% |. l) H' w) y
文件级的虚拟化工作在NAS设备上,以此对独立的NAS设备进行池化和管理。虽然管理单个NAS并不特别困难,但是管理多个设备既耗时又昂贵。NAS设备在物理上和逻辑上相互独立,这需要单独的管理、优化和供应。这增加了复杂性,并要求用户知道访问文件的物理路径名。
* k' r0 F& d Z. H 使用多个NAS设备最耗时的操作之一是在它们之间迁移数据。当组织的规模超过了之前的NAS设备时,它们通常会购买一个新的、更大的设备,这往往需要从接近容量阈值的旧设备中迁移数据。反过来又需要大量停机时间来配置新设备、从遗留设备迁移数据,以及在启用之前测试迁移的数据。但是停机时间会影响用户和项目,而且数据迁移的停机时间延长也会在财务上为企业带来不良影响。
% l4 Y. B% j7 T6 ~% Q; k 文件级存储虚拟化掩盖了管理多个NAS设备的复杂性,并使管理员能够共享存储资源,而不是将它们限制在特定的应用程序或工作组中。虚拟化NAS设备也使数据迁移过程中不需要停机。虚拟化引擎维护正确的物理地址,并将更改的地址重新映射到虚拟池。用户可以从旧设备访问文件并保存到新设备,而无需知道发生了迁移。
8 J- h( e6 F0 F. u* G! E
组件:主机,网络与阵列
. l6 G3 \& Z$ W" r' v" ], D 虚拟化引擎可能位于不同的计算组件中,最常见的三种是主机、网络和数组,服务于不同的存储虚拟化用例。
4 y3 C( d# ]3 i6 Z: z/ k
基于主机
j' t, l; f: }% M8 O
主要用例:为VM环境和在线应用程序提供虚拟化存储。
' B. w, M7 q' x2 N5 X 有些服务器提供操作系统级的虚拟化。操作系统的存储虚拟化可用以优化容量和自动化分层存储计划。
, p+ o! x, s" G4 a! B$ x 更常见的基于主机的存储虚拟化池存储在虚拟环境中,并将池呈现给客户操作系统。一种常见的实现方法是用动态扩展的VM充当存储池。由于VM希望看到硬盘驱动器,所以虚拟化引擎将底层存储作为硬盘驱动器呈现给VM。实际上,“硬盘驱动器”是由基于磁盘和阵列的存储资产创建的逻辑存储池。
5 v A# Z* J! J f, q5 A
这种虚拟化方法在云存储和超融合存储中最常见,单个主机或超融合系统将可用的存储池存储到虚拟驱动器中,并将这些驱动器呈现给客户机。
m ~, G# z5 V3 V
基于网络
. o4 [" F7 V5 R& A5 J' I
主要用例:SAN存储虚拟化
1 k: x$ a! r5 I/ s& p 基于网络的存储虚拟化是SAN存储最常见的一种类型,组织一般会使用它来添加更多的存储。存储虚拟化从服务器或交换机上,跨光纤通道或iSCSI网络运行。
4 \' g' O4 d4 [/ P v 基于网络的设备抽象了跨存储网络运行的存储I/O,并且可以跨所有连接的存储设备复制数据。它还使用针对所有池化存储的单一管理接口简化了SAN管理。
0 {" O# d; r) r 基于阵列
2 R/ v0 Y6 G1 o. q& b! ^ F
主要用例:存储分层。
" x5 t+ R `" K) Q
基于阵列的存储虚拟化并不新鲜。某些RAID级别本质上就是虚拟化的,因为它们将存储从多个物理磁盘抽象为一个逻辑数组。
- Z$ S9 B }1 M+ }/ z
如今,基于阵列的虚拟化通常指的是一种专门的存储控制器,它拦截来自二级存储控制器的I/O请求,并在连接的存储系统中自动对数据进行分层。该设备允许管理员将媒体分配给不同的存储层,通常是将SSD分配给高性能层,将HDD分配给近线或二级存储层。虚拟化还允许管理员在同一存储层中采用混合介质。
$ b P( q/ f, q( f0 N 这种虚拟化方法比基于主机或网络的虚拟化更加有限,因为虚拟化只发生在连接的控制器上。二级控制器需要与虚拟化存储控制器相同的带宽,而这会影响性能。
! M E4 g# ?" ?+ v5 _8 u! Y 但是,如果企业在高级混合阵列上投入了大量资金,那么阵列的存储智能可能会超过存储虚拟化所能提供的能力。在这种情况下,基于阵列的虚拟化允许企业保留阵列的本机功能,并添加虚拟化层以提高效率。
- `" ^0 v. p6 W' x; i
/ f o+ e3 k7 u
带(Band):带内带外
0 Y* i9 U; M- V$ F! z# u
带内
) z8 E0 N i6 x( d+ g7 X 当虚拟化引擎在主机和存储之间进行操作时,就会发生带内存储虚拟化。I/O请求和数据都通过虚拟化层,这允许引擎提供高级功能,如数据缓存、复制和数据迁移。
3 H1 k& }/ h7 ~- e; a) D, d
带内占用更少的主机服务器资源,因为它不需要查找和附加多个存储设备。服务器只在其数据路径中看到虚拟池存储。但是,池增长得越大,它对数据路径吞吐量产生影响的风险就越大。
4 F: w7 B. z% f, c- Z% w( f7 b. S
带外
* [0 b0 F2 C& q; o
带外存储虚拟化将路径分为控制(元数据)和数据路径。只有控制路径通过虚拟化设备运行,它拦截来自主机的I/O请求,查找并映射物理内存位置上的元数据,并向存储器发出更新的I/O请求。数据不通过设备,这使得缓存不可能实现。
3 W3 g% u; ?" {# |" r; X 带外虚拟化在各个服务器上安装代理,将它们的存储I/O定向到虚拟化设备。尽管这在一定程度上增加了单个服务器的负载,但带外虚拟化不会像带内虚拟化那样造成数据瓶颈。不过,最佳的实践办法是通过添加额外的冗余带外设备来避免虚拟化中断。
$ A% G! Z% m: Y T
存储虚拟化的优势
( d3 t) ?8 y! d) u- D
·支持动态存储使用以及附加存储资源(包括块和文件)的虚拟可伸缩性。
S2 g7 ]1 @ Z* Y ·避免在数据迁移期间停机。虚拟化在后台操作,可维护数据的逻辑地址以保留访问权限。
/ S/ @: X9 U* t( r# E& ] ·集中一个管理台来管理多个供应商的存储设备,节省了管理开销和成本。
0 \; z `) ~' [* S7 Z
·通过将可用存储扩展到主机或SAN来保护现有的投资。
# j7 h* i% i9 U# T4 U7 v ·可以在多供应商环境中添加存储智能,如分层、缓存、复制和集中管理接口。
2 K7 g# l& u4 z. e- Z6 {* ^- f 原文作者:Christine Taylor
$ Y- b {9 u0 b. A: d