存储虚拟化讲解
目录
存储虚拟化的分类
按照虚拟化发生的位置分类
基于主机的虚拟化
基于存储设备的虚拟化
基于网络的虚拟化
按照虚拟化实现方式分类
带内虚拟化
带外虚拟化
按照虚拟化的对象分类
虚拟机磁盘类型
按照磁盘的特性分类
按照磁盘的安全性分类
什么是虚拟化
存储虚拟化本质上是对存储硬件资源进行抽象化,通过在物理存储系统和服务器之间加入了一个虚拟层,将物理资源的逻辑映射与物理存储分开,通过该虚拟层可以管理和控制所有的逻辑映射资源,从而管理和控制所有的物理存储资源并对服务器提供存储,不需要关注底层物理存储设备的细节
对于管理员来说
通过存储虚拟化实现将多种、多个存储设备的集中化管理,并根据具体的需求把存储资源动态的分配给各个服务器或应用
对于用户来说
存储虚拟化就像是一个巨大的“资源池”,用户不关心硬件具体使用的是什么样子的硬盘,也不关心自己的数据经过哪一条路径通往哪一个具体的存储设备,只需要关心存储池中的资源够不够用
存储虚拟化注意事项
在存储虚拟化中,所有用户的存储都是以文件的形式呈现的;虚拟机的磁盘、快照、虚拟机配置等都对应一个独立的文件
通过虚拟化技术,能够存储资源整合到一起后对外提供服务,同时实现数据安全性、容量提升、性能提升等效果
存储的基本概念
异构存储:存储系统中不同类型的存储设备的集成(包含不同的存储介质、厂商等)
存储网络架构:存储网络架构——DAS、NAS、SAN、分布式组网架构-CSDN博客
机械硬盘与固态硬盘:机械硬盘(HDD)与固态硬盘(SSD)-CSDN博客
磁盘阵列RAID:存储RAID——存储基本概念与RAID级别讲解-CSDN博客
存储虚拟化的分类
存储虚拟化的实现
存储虚拟化可以在三个层次上完成(虚拟化发生的位置)
基于主机的虚拟化、基于存储设备的虚拟化、基于网络的虚拟化
具体的实现方式有两种
带内虚拟化(in-band)、带外虚拟化(out-of-band)
具体的实现结果有五种(虚拟化对象)
块虚拟化、磁盘虚拟化、磁带虚拟化、文件系统虚拟化、文件/记录虚拟化
按照虚拟化发生的位置分类
基于主机的虚拟化
工作原理(将虚拟化管理软件安装在一个或多个主机上)
在主机层通过虚拟化管理软件实现虚拟化,通过虚拟化管理软件在物理存储资源和操作系统之间建立之间建立一个虚拟层,虚拟化层能够为服务器连接到的各种存储设备(DAS、SAN等方式连接到存储设备)进行控制,一般用于单个服务器(单个集群)访问多个磁盘阵列的场景,也可用于在不同的磁盘阵列之间做数据镜像保护;
主机将获取到的物理存储资源通过虚拟化层组成逻辑磁盘或逻辑卷(即将多个不同的磁盘阵列映射为一个虚拟的逻辑磁盘),使得主机的操作系统在运行应用程序的时候就好像与一个单一的存储设备直接通信,该逻辑磁盘更够根据需要进行扩容和缩容
注意事项
在现网中这个软件通常是由操作系统下的逻辑卷管理软件实现的(例如Windows下自带的卷管理器,不同的操作系统进行逻辑卷管理的软件也不相同);也有独立的虚拟卷管理软件(例如BIM的Tivloli等)
优点
实现最容易,设备成本最低
此时的存储虚拟化通过服务器特定软件软件来完成,经过虚拟化的存储空间可以跨越多个异构的磁盘阵列,能够实现多机间的共享存储、存储资源管理、数据复制和数据迁移、远程备份、集群系统等存储管理任务
不需要硬件支持,不修改现有系统架构
缺点
控制软件是在主机的操作系统层面去运行的,会占用主机的资源
可扩展性差,实际运行的性能不是很好
基于存储设备的虚拟化
存储设备虚拟化又称为存储控制器的虚拟化
工作原理(将虚拟化管理软件安装在存储设备的主控制器上)
在物理存储资源层实现虚拟化,将虚拟化层放在存储设备上的适配器、控制器来完成(即在存储设备上的存储控制器上加入虚拟化功能),将服务器的存储虚拟化工作分离出来,直接在存储设备上实现,极大地提高了性能;存储阵列充当主存储控制器,使用虚拟化软件汇集本磁盘阵列或其它阵列的存储资源,并够以层的形式向外提供不同类型的物理存储,能够将一个阵列上的存储容量划分为多个存储空间LUN来供不同的主机系统访问,一般用于多个主机服务器要访问同一个磁盘阵列的场景,也可用于在同一存储设备内部进行数据保护和迁移;
优点
虚拟化软件运行于存储设备中专门的嵌入式系统上,不占用主机资源
数据管理功能丰富,可以提供一些存储高级业务(精简配置、快照、链接克隆等)
缺点
一般只可以实现对本设备内磁盘的虚拟化
不同厂商的存储设备之间无法互相管理,异构产品之间很难实现存储级联
多套存储设备需要配置多套数据管理软件,成本较高
基于网络的虚拟化
工作原理(在存储网络的网络设备中添加虚拟化引擎实现虚拟化)
通过在存储网络设备上添加虚拟化引擎来实现是目前的主流技术
目前有的解决方案为在存储区域网络采用智能化的路由器、交换机、元数据服务器等来实现虚拟化的工作(这些设备都内置虚拟化引擎);所有的存储设备都通过网络设备连接,然后将以单个虚拟池的形式出现在存储网络中;一般用于当多个主机服务器需要访问多个异构存储设备,也用于异构存储系统的整合和统一数据管理
优点
与主机无关,不占用主机资源
支持异构存储设备
能够统一不同存储设备的数据管理功能,构建同一的管理平台,可扩展性好
缺点
性能有损耗
部分厂商数据管理能力弱,难以达到虚拟化同一数据管理的目的
按照虚拟化实现方式分类
带内虚拟化
控制信令和数据走的是同一条线
在存储虚拟化中,可以理解为在主服务器和存储设备之间实现虚拟化,实现虚拟化的部分就是主机到存储设备的访问路径;即在在数据读写之前,在主机到存储设备的路径上已经实现了存储虚拟化
实例
带内虚拟化可以基于主机、设备、网络实现;目前的虚拟化引擎基本上都是带内虚拟化(例如 IBM的SVC、Netapp的V-series、HDS的USP系列等)
带外虚拟化
控制信令和实际数据走的不是同一条路,控制信令走单独的通路,收到优待
在存储虚拟化中,可以理解为实现虚拟化设备安装在主机和存储之间的数据通道之外,实现虚拟化的部分并不在主机到存储设备的访问路径上;即在数据读写之前,已经做好了虚拟化的工作,只不过实现虚拟化的部分并不在主机到存储设备的访问路径上
实例
带外虚拟技术只能是基于存储网络实现;例如IBM的SanFS就是带外虚拟化、使用元数据服务器实现网络虚拟化也是带外虚拟化类型
按照虚拟化的对象分类
块虚拟化
LUN虚拟化就是将多块磁盘创建RAID,然后将RAID划分成逻辑卷LUN
块虚拟化就是将硬盘切为多个逻辑块,然后再将逻辑块组成LUN,然后基于LUN做RAID组
块虚拟化和LUN虚拟化的发展为RAID1.5→RAID2.0→RAID2.0+
存储RAID——RAID2.0+技术(块虚拟化与LUN虚拟化)-CSDN博客
磁盘虚拟化
磁盘虚拟化就是将扇区地址使用逻辑块表示,屏蔽底层物理磁盘的概念(向使用者提供虚拟磁盘);使得使用者无需了解磁盘的内部结构,通过块地址就可以访问磁盘
该方式需要针对于磁盘的逻辑地址进行管理
磁带库虚拟化
通过VTL虚拟磁带库技术将磁盘阵列虚拟为磁带库,在本质上是磁盘阵列,但是在软件功能上确模拟磁带备份的形式
对于管理员来说,它就是一个磁带库,对它的管理与对物理磁带库的管理一致
特点:虚拟磁带带库采用基于RAID保护的磁盘阵列,提高了可靠性和性能
文件系统虚拟化
将多个文件系统整合成一个虚拟文件系统,用户通过虚拟文件系统访问数据对象
底层分区对用户来说是透明的
例如Linux的VFS虚拟文件系统:Linux 磁盘挂载2(文件系统格式化、磁盘挂载、VFS虚拟化文件系统)-CSDN博客
虚拟机磁盘类型
按照磁盘的特性分类
普通磁盘
为虚拟机创建普通磁盘时,创建时的磁盘空间是多少,虚拟机实际使用的磁盘空间就是多少
并且在创建后,会对该磁盘全部用0来填充(立即分配所有空间,并全部使用0填充)
创建的速度慢;性能最好,安全性最好
普通延迟置零磁盘
与普通磁盘相比,创建磁盘时不会进行填0操作;在使用的时候进行填0操作(立即分配所有空间,在写前置0)
磁盘下放速度快;性能较好
精简磁盘
为虚拟机创建精简磁盘时不进行空间分配,在虚拟机进行数据写入时才进行空间分配(写前分配空间,使用多少分配多少)
可以分配大于存储空间的大小,提高磁盘利用率,节省磁盘空间;性能较低
存储资源调优技术——智能精简配置技术-CSDN博客
差分磁盘
差分磁盘必须基于一个已有的父磁盘来创建,差分磁盘中的文件头会记录父磁盘的路径,数据区域只记录和父磁盘差异的数据;差分磁盘的大小随着数据的写入而自动增长
差分磁盘不能脱离父磁盘独立存在;差分磁盘创建后,父磁盘里面写入的所有数据都不会变
虚拟机进行数据写入操作的过程:如果虚拟机想往磁盘写入新的数据,将更改的数据写入到差分磁盘中
虚拟机进行数据读取操作的过程:当对差分磁盘进行读操作时,会先读取差分磁盘中的数据,如果不存在,则通过文件头的索引找到父磁盘,并进行数据读取
按照磁盘的安全性分类
持久化磁盘
可以做到数据永久保存
数据不受快照的影响,当还原系统状态或者回滚快照时都不会影响这个持久硬盘的数据
即当创建快照时,不对该磁盘数据进行快照;进行快照回滚时也不进行还原
非持久化磁盘
可以做到数据不永久保存,即关机就进行数据还原(适用于自动还原场景)
对于非持久化磁盘,会先创建差分磁盘,在主机运行过程中会将更改的数据全部写入差分磁盘,在关机之后将差分磁盘的数据删除,达到还原的目的
相关文章:

存储虚拟化讲解
目录 存储虚拟化的分类 按照虚拟化发生的位置分类 基于主机的虚拟化 基于存储设备的虚拟化 基于网络的虚拟化 按照虚拟化实现方式分类 带内虚拟化 带外虚拟化 按照虚拟化的对象分类 虚拟机磁盘类型 按照磁盘的特性分类 按照磁盘的安全性分类 什么是虚拟化 存储虚拟…...

[云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】节点部分
文章目录 1. 常见的K8S安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. Kubernetes单master集群架构 ---- (二进制安装部署)2.1 前置准备2.2 操作系统初始化2.3 部署 docker引擎 ---- (所有 node 节点)2.4 部署 etcd 集…...

Apache ActiveMQ 远程代码执行漏洞影响范围
漏洞相关信息 项目内容漏洞名称Apache ActiveMQ 远程代码执行漏洞 漏洞描述 组件名称:Apache ActiveMQ 漏洞类型:远程代码执行 利用条件: 1、用户认证:不需要用户认证 2、触发方式:网络可访问 ActiveMQ的61616端…...

如何规划并新建大数据平台的独立生产域?5步走
一般来说,大数据平台包括以下4类数据生产域——生产生态环境(正式生产环境)、开发和测试环境、培训和演示环境、灾备环境。各生产域在由平台提供资源、安全、监控、故障恢复等保障的同时,不同的生产域之间还需要严格隔离ÿ…...

工程车云管家|叉车智能管家安卓主板方案
工程车云管家是一款功能强大的设备管理和调度系统,它可以实时追踪工程车或机械设备的地理位置、视频、行驶轨迹、油位油耗、工作时长和地点、以及运行状况等信息,并将这些数据通过云平台存储、分析,并发送到管理者的手机上。这使得管理者能够…...

大数据学习之Spark性能优化
文章目录 Spark三种任务提交模式宽依赖和窄依赖StageSpark Job的三种提交模式 Shuffle机制分析未优化的Hash Based Shuffle优化后的Hash Based ShuffleSort-Based Shuffle Spark之checkpointcheckpoint概述checkpoint与持久化的区别checkPoint的使用checkpoint源码分析 Spark程…...

个人服务器到期,项目下线,新的开始
告别旧服务器 2023.11.06服务器到期,所有项目正式下线 时间真的过的很快,从开始踏入编程的大门,到现在不知不觉已经陆续经手了两台服务器了,目前这台服务器是一年前的阿里云活动白嫖的嘿嘿嘿,该服务器上目前运行的项…...

arcgis 网络分析 生成可达范围/等时线
需求:生成从地铁站步行10分钟可达的范围面图层。 线图层预处理 在精度要求不是很高的情况下,可采用OSM路网,从中剔除不允许步行的道路类型:高速公路、快速路。 在路网图层中新增一个字段“步行时间”,用字段计算器&…...

npm切换镜像源
一,切换 npm 镜像源 npm 存储包文件的服务器在国外,速度很慢,所以我们需要解决这个问题。 国内淘宝的开发团队把 npm 在国内做了一个备份,网址是:http://npm.taobao.org/。 # 查看当前的源 npm config ls # 在上面命令…...

Python简单学习
Python List # python 列表可以加入所有类型 如列表,字典,数字,字符串等bicycles [trek, cannondale, redline, specialized] print(bicycles)# 访问列表元素,使用索引 print(bicycles[0])# 访问最后一个元素下标-1. 以此类推 p…...

2000-2021年全国各省资本存量测算数据(含原始数据+测算过程+计算结果)
2000-2021年全国各省资本存量测算数据(含原始数据测算过程计算结果) 1、时间:2000-2021年(以2000年为基期) 2、范围:30个省市(不含西藏) 3、指标:固定资产形成总额、固…...

Vue.js 中的异步组件是什么?
在 Vue.js 中,异步组件是一种延迟加载组件的方式。允许将组件的加载推迟到组件真正需要被渲染时再进行,而不是在初始化时立即加载所有组件。 通过使用异步组件,可以提高应用的初始加载速度,尤其是当应用包含大量组件时。只有当组…...

Luckysheet 实现excel多人在线协同编辑
前言 前些天看到Luckysheet支持协同编辑Excel,正符合我们协同项目的一部分,故而想进一步完善协同文章,但是遇到了一下困难,特此做声明哈,若侵权,请联系我删除文章! 若侵犯版权、个人隐私&#x…...

C++线程库的基本使用(初级)
#include<iostream> #include<thread> #include<string> void printHelloWorld(std::string msg) {std::cout << msg<< std::endl;return; } int main() {std::thread threadl(printHelloWorld,"Hello Thread");//第一个参数是函数名&…...

2023最新版JavaSE教程——第1天:Java语言概述
目录 一、抽丝剥茧话Java1.1 当前大学生就业形势1.2 IT互联网是否依旧靠谱1.3 IT行业岗位分析1.4 软件开发之Java开发1.5 到底多少人在用Java 二、计算机的硬件与软件2.1 计算机组成:硬件软件2.2 CPU、内存与硬盘2.3 输入设备:键盘输入 三、软件相关介绍…...

PTL货位指引标签为仓储管理打开新思路
PTL货位指引标签是一种新型的仓储管理技术,它通过LED灯光指引和数字显示,为仓库管理带来了全新的管理思路和效率提升,成为现代物流仓库管理中的重要工具。 首先,PTL货位指引标签为仓储管理业务带来了管理新思路。传统的仓库管理中…...

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Maven核心概念
一.Maven的POM POM全称:Project Object Model【项目对象模型】,将项目封装为对象模型,便于使用Maven管理【构建】项目 pom.xml常用标签 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://m…...

Unity的粒子总是丢材质
1)Unity的粒子总是丢材质 2)C#传给C的Byte数组如何释放 3)CommandBuffer.DrawProcedural在手机上为什么不生效 4)游戏加载场景碰撞,会弹出显卡报错,驱动程序超时 这是第359篇UWA技术知识分享的推送…...

P5906 【模板】回滚莫队不删除莫队
这一题,虽说在洛谷标的是模板题,但可能没有“历史研究”那一题更加模板。 这一题相对于回滚莫队的模板题,可能在回滚的处理上稍微复杂了一点。对于回滚莫队就不多解释了,可以看一下 回滚莫队模板题 这一篇博客,稍微简单…...

1. Collection,List, Map, Queue
1. java集合框架体系结构图 2. Collection派生的子接口 其中最重要的子接口是: 1)List 表示有序可重复列表,重要的实现类有:ArrayList, LinkedList ArrayList特点:底层数组实现,随机查找快,增删…...

rabbitmq 交换机相关实例代码
1.扇形交换机 定义扇形交换机和队列 package com.macro.mall.portal.config;import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.FanoutExchange; import org.springframework.amqp.…...

第四章IDEA操作Maven
文章目录 创建父工程开启自动导入配置Maven信息创建Java模块工程创建 Web 模块工程 在IDEA中执行Maven命令直接执行手动输入 在IDEA中查看某个模块的依赖信息工程导入来自版本控制系统来自工程目录 模块导入情景重现导入 Java 类型模块 导入 Web 类型模块 创建父工程 开启自动导…...

Go语言函数签名和匿名函数
函数签名 函数类型又叫做函数签名,一个函数的类型就是函数定义首行去掉函数名、参数名和{},可以用fmt.Printf的“%T”格式化参数打印函数的类型。 两个函数类型相同的条件是:拥有相同的形参列表和返回值列表,形参名可以不同。 ty…...

Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用
前言 平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间缩短一半&#…...

基于JavaWeb的网上销售系统设计与实现
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...

wpf添加Halcon的窗口控件报错:下列控件已成功添加到工具箱中,但未在活动设计器中启用
报错截图如下: 注意一下新建工程的时候选择wpf应用而不是wpf应用程序。 添加成功的控件:...

antv/x6 自定义html节点并且支持动态更新节点内容
antv/x6 自定义html节点 效果图定义一个连接桩公共方法注册图形节点创建html节点动态更新节点内容 效果图 定义一个连接桩公共方法 const ports {groups: {top: {position: top,attrs: {circle: {r: 4,magnet: true,stroke: #cf1322,strokeWidth: 1,fill: #fff,style: {visib…...

设计模式之命令模式
阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概4000多字,阅读时间长可能需要4-5分钟,请结合示例耐心读完,绝对有收获。设计模式属于程序的设计思…...

Linux学习笔记--高级
Shell概述 1,shell概述 是一个c语言编写的脚本语言,是linux和用户的桥梁,用户输入命令交给shell处理。shell,将相应的操作传递给内核(kernel),内核把处理的结果输出给用户 1.1Shell解释器有哪…...

在Java中操作Redis
Redis中如何的去存放一个Java对象? 直接存放Json类型即可,因为我们Json类型最终就是一个String类型。 Redis的Java客户端 Redis的常用命令是我们操作Redis的基础,那么我们在Java程序当中如何来操作Redis呢? 要想基于Java语言…...