前言
记录“网络存储技术”的期中知识点
一、HCIA 存储技术趋势
1、数据与信息
1.1 什么是数据
- 数据是对所有事物的数字表示。
1.2 数据的种类
- 结构化数据
- 半结构化数据
- 非结构化数据
1.3 数据的处理周期
- 数据处理是人或机器对数据进行的重组或重新排序,以增加其特定的价值。数据处理包括以下基本步骤:输入、处理和输岀。这三个步骤构成了数据处理周期。
1.4 什么是信息
- 信息是已经被处理、具有逻辑关系的数据,是对数据的解释。
- 信息是经过处理的数据,其中包括具有上下文,相关性和目的的数据。它还涉及原始数据的操作
1.5 数据与信息的关系
- 数据经过加工处理之后,能够成为信息;
- 而信息需要经过数字化转变成数据才能存储和传输。
1.6 信息生命周期管理
2、数据存储
2.1 什么是数据存储
2.2 数据存储系统
2.3 存储的物理结构
2.4 数据存储分类
- 内置存储
- 外置存储:DAS、 FAS(SAN、NAS)
2.5 数据管理技术的演变
- 人工管理——文件系统管理——传统数据库管理——大数据管理
2.6 数据存储的应用
3、存储技术的发展
3.1 存储架构的发展
-
存储架构历程
传统存储——外挂存储——存储网络——分布式存储、云存储 -
从硬盘到磁盘阵列
-
从分离到融合
-
分布式存储
通过软件将物理资源组织起来构成高性能逻辑存储池,在保证可靠性的同时提供多种存储服务。
一般而言,分布式存储是将数据分散存储在多台独立的设备上,采用可扩展的系统结构、利用多台存储服务器分担存储负荷、利用位置服务器定位存储信息。 -
存储虚拟化
存储虚拟化可以将存储设备进行抽象,以逻辑资源的方式呈现,统一提供全面的存储服务。
可以在不同的存储形态或设备类型之间提供统一的功能。 -
云存储
3.2 存储介质的发展
-
机械硬盘发展史
容量越来越大,体积越来越小
-
固态硬盘发展史
固态硬盘岀现也很早,但是因为20世纪未机械硬盘快速发展而被遗忘。
但随着对存取速度要求的提高,固态硬盘又开始繁荣发展。
-
内存介质发展
3.3 接口协议的发展
- 接口协议
硬盘接口是硬盘与主机系统间的连接部件。
接口协议(Interface protoco)指的是需要进行信息交换的接口间需要遵从的通信方式和要求。
- 接口协议发展史
4、存储产品的发展趋势
4.1 存储产品发展历程
4.2 数据存储发展趋势
二、智能存储组件
1、控制框
1.1 控制框形态
- 控制框采用部件模块化设计,主要由系统插框、控制器(内含风扇模块)、BBU模 块、电源模块、管理模块和接口模块等组成。
1.2 控制器
- 控制器是设备中的核心部件,主要负责处理存储业务、接收用户的配置管理命令、保存配置信息、接入硬盘和保存关键信息到保险箱硬盘。
1.3 保险箱盘
1.4 BBU模块
2、硬盘框
- 硬盘框采用部件模块化设计,主要由系统插框、级联模块、电源模块和硬盘模块等组成。
3、级联模块
3.1 级联模块
3.2 设备线缆
4、硬盘
4.1 机械硬盘
- 机械硬盘结构
机械硬盘的结构大致包括:盘片、磁头臂、读/写磁头、主轴、硬盘接口和控制电路等。
4.2 机械硬盘工作原理
4.3 固态硬盘
-
固态硬盘概述
相对于HDD而言,固态硬盘SSD在性能、可靠性、能耗、轻便性方面有着绝对的优势,目前已经在各领域得到广泛应用。 -
SSD特点:
1、使用flash技术存储信息,数据传输速度比HDD快。
2、内部没有机械结构因此耗电量更小、散热小、噪音小
3、SSD盘使用寿命受擦写次数影响
-
SSD架构
1、SSD主要由控制单元和存储单元(当前主要是Flash闪存颗粒)组成。
2、控制单元:SSD控制器、主机接口、DRAM等;
3、 存储单元:NAND FLASH颗粒
5、接口模块
5.1 GE接口模块
5.2 SAS级联模块和RDMA接口模块
三、虚拟化技术
1、虚拟化技术简介
-
如图所示,我们可以将一般的计算模型抽象成为一定的物理资源和运行于之上的计算元件,它们之间通过定义的物理资源接口进行交互。
-
虚拟化是一种方法,本质上讲是指从逻辑角度而不是物理角度来对资源进行配置,是从单一的逻辑角度来看待不同的物理资源的方法。虚拟化是一种逻辑角度出发的资源配置技术,是物理实际的逻辑抽象。
2、虚拟化技术分类
-
CPU虚拟化
CPU的虚拟化技术是一种硬件方案,支持虚拟 技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能。 -
服务器虚拟化
服务器虚拟化能够通过区分资源的优先次序,并随时随地将服务器资源分配给最需要它们的工作负载来简化管理和提高效率,从而减少为单个工作负载峰值而储备的资源。 -
存储虚拟化
虚拟存储设备需要通过大规模的raid子系统和多个I/O通道连接到服务器上,智能控制器提供LUN访问控制、缓存和其他如数据复制等管理功能。 -
网络虚拟化
网络虚拟化整合后的设备组成了一个逻辑单元,在网络中表现为一个网元节点,管理简单化、配置简单化、可跨设备链路聚合,极大简化网络架构,同时进一步增强冗余可靠性。 -
应用虚拟化
应用虚拟化通常包括两层含义,一是应用软件的虚拟化,一是桌面的虚拟化。
3、XEN虚拟化技术
XEN虚拟化技术的优缺点
-
XEN虚拟化技术的优点:
1、Xen构建于开源的虚拟机管理程序上,结合使用半虚拟化和硬件协助的虚拟化。操作系统与虚拟化平台之间的这种协作支持开发一个较简单的虚拟机管理程序来提供高度优化的性能。
2、Xen提供了复杂的工作负载均衡功能,可捕获CPU、内存、磁盘I/O和网络I/O数据,它提供了两种优化模式:一种针对性能,另一种针对密度。
3、Xen利用一种名为Citrix Storage Link 的独特的存储集成功能。使用Citrix Storage Link,系统管理员可直接利用来自HP、Dell Equal Logic、NetApp、EMC等公司的存储产品。
4、Xen包含多核处理器支持、实时迁移、物理服务器到虚拟机转换(P2V)和虚拟到虚拟转换(V2V)工具。集中化的多服务器管理、实时性能监控,以及Windows和Linux的快速性能。 -
XEN虚拟化技术的缺点:
1、Xen会占用相对较大的空间,且依赖于0号虚拟机中的Linux操作系统。
2、Xen依靠第三方解决方案来管理硬件设备驱动程序、存储、备份和恢复,以及容错任何具有高I/O速率的操作或任何会吞噬资源的操作都会使Xen陷入困境,使其他虚拟机缺乏资源。
3、Xen缺少802.1Q 虚拟局域网(VLAN)中继,出于安全考虑,它没有提供目录服务集成、基于角色的访问控制、安全日志记录和审计或管理操作。
4、Xen目前最大的困难在于Linux内核社区的抵制,导致XEN相关的内核改动一直不能顺利进入内核源代码,从而无法及时得到内核最新开发成果的支持。
4、KVM虚拟化技术
-
KVM虚拟化技术功能特性
内存管理、存储、设备驱动程序、Linux的性能和可伸缩性 -
KVM虚拟化技术优势
5、红帽RHEV虚拟化系统
- RHEV(Red Hat Enterprise Virtualization)红帽企业虚拟化,是一个服务器虚拟化的管理平台。由RHEV-M(Manager)、RHEV-H(Hypersior)和存储组成,能够简便、集中的对KVM虚拟机进行创建、删除、迁移、快照等操作,实现企业服务器物理资源的充分使用。是一种非常适合中小型企业的虚拟化解决方案。其组成如下图所示:
- 红帽RHEV技术的功能特性:
在线迁移、高可用、系统计划调度、电源管理、模板管理、快照
红帽RHEV虚拟化技术的优缺点
- RHEV虚拟化技术的优点
- RHEV虚拟化技术的优点
6、其他虚拟化技术的实现方法
四、Qemu-KVM
1、KVM原理简介
1.1 KVM工作流程
- 用户模式的qemu利用libkvm通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLauch指令进入客户模式。加载Guest OS并执行。如果Guest OS 发生外部中断或者影子页表缺页之类的情况,会暂停Guest OS的执行,退出客户模式,执行异常处理,之后重新进入客户模式,执行客户代码。如果发生I/O事件或者信号队列中有信号到达,就会进入用户模式处理。
1.2 KVM架构
- 如图所示,左侧部分是一个标准的Linux操作系统,可以是RHEL、Fedora、Ubuntu等。KVM内核模块在运行时按需加载进入内核空间运行。KVM本身不执行任何设备模拟,需要用户空间程序QEMU通过/dev/kvm接口设置一个虚拟客户机的地址空间,向它提供模拟的I/O设备,并将它的视频显示映射回宿主机的显示屏。
1.3 KVM模块
- KVM模块是KVM虚拟机的核心部分。其主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。
- KVM模块加载之初,只存在/dev/kvm文件,而针对该文件的最重要的IOCTL调用就是“创建虚拟机”。在这里,“创建虚拟机”可以理解成KVM为了某个特定的虚拟客户机(用户空间程序创建并初始化)创建对应的内核数据结构。
- 处理器对设备的访问主要是通过IO指令和MMIO,其中IO指令会被处理器直接截获,MMIO会通过配置内存虚拟化来捕捉。但是,外设的模拟一般并不由KVM模块负责。一般来说,只有对性能要求比较高的虚拟设备才会由KVM内核模块来直接负责,比如虚拟终端控制器和虚拟时钟,这样可以大量减少处理器的模式切换的开销。
2、Qemu原理介绍
2.1 Qemu架构
- Qemu是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,是一个完整的可以运行的软件,非常灵活可移植,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和Qemu模拟出来的硬件打交道,Qemu将这些指令转译给真正的硬件。
2.2 Qemu模块
- QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能地下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。作为一个存在已久的虚拟机,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM使用到的虚拟设备模拟(比如网卡、显卡、存储控制器和硬盘等)。
- 从QEMU和KVM模块之间的关系可以看出,这是典型的开源社区在代码共用和开发项目共用上面的合作。诚然,QEMU可以选择其他的虚拟机或技术来加速,比如Xen或者KQEMU;KVM也可以选择其他的用户空间程序作为虚拟机实现,只要它按照KVM提供的API来设计。但是在现实中,QEMU与KVM两者的结合是最成熟的选择,这对一个新开发和后起的项目(KVM)来说,无疑多了一份未来成功的保障。
2.3 Qemu的三种运行模式
2.4 Qemu的特点
- QEMU的两种操作模式:完整的系统仿真和用户模式仿真。
- QEMU具有以下特点:
-QEMU可以在没有主机内核驱动程序的情况下运行。
-它适用于多种操作系统(GNU / Linux,BSD,Mac OS X,Windows)和体系结构。
-它执行FPU的精确软件仿真。 - QEMU用户模式仿真具有以下功能:
-通用Linux系统调用转换器,包括大部分ioctls。
-使用本机CPU clone的仿真为线程使用Linux调度程序。
-通过将主机信号重新映射到目标信号来实现精确信号处理。
3、KVM和Qemu的关系
- Qemu是一个独立的虚拟化解决方案,通过intel-VT 或AMD SVM实现全虚拟化,安装qemu的系统,可以直接模拟出另一个完全不同的系统环境。QEMU本身可以不依赖于KVM,但是如果有KVM的存在并且硬件(处理器)支持比如Intel VT功能,那么QEMU在对处理器虚拟化这一块可以利用KVM提供的功能来提升性能。
- KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel-VT或AMD-V)的Linux的全虚拟化解决方案。它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。准确来说,KVM是Linux kernel的一个模块。
4、Qemu工具介绍
4.1 qemu-img
qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具。下面我们将几条重要的选项讲解一下。
- check [-f fmt] filename
对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查. - create [-f fmt] [-o options] filename [size]
创建一个格式为fmt大小为size文件名为filename的镜像文件。 - commit [-f fmt] [-t cache] filename
提交filename文件中的更改到后端支持镜像文件(创建时通过backing_file指定的)中去。 - convert [-c] [-p] [-f fmt] [-t cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 […]] output_filename
将fmt格式的filename镜像文件根据options选项转换为格式为output_fmt的名为output_filename的镜像文件。 - info [-f fmt] filename
展示filename镜像文件的信息。 - snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。 - rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。 - resize filename [+ | -]size
改变镜像文件的大小,使其不同于创建之时的大小。
4.2 qemu-kvm
此命令用于创建虚拟机,其使用格式为“qemu-kvm [options] [disk_image]”,其选项非常多,大致可分为如下几类:
- 标准选项;
- USB选项;
- 显示选项;
- i386平台专用选项;
- 网络选项;
- 字符设备选项;
- 蓝牙相关选项;
- Linux系统引导专用选项;
- 调试/专家模式选项;
- PowerPC专用选项;
- Sparc32专用选项。
4.3 qemu-ga
- qga是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu-ga,服务名称默认为qemu-guest-agent),其目的是实现一种宿主机和虚拟机进行交互的方式,这种方式不依赖于网络,而是依赖于virtio-serial(默认首选方式)或者isa-serial,而QEMU则提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(虚拟机内部)和一个unix socket文件(宿主机上)。
- qga通过读写串口设备与宿主机上的socket通道进行交互,宿主机上可以使用普通的unix socket读写方式对socket文件进行读写,最终实现与qga的交互,交互的协议与qmp(QEMU Monitor Protocol)相同(简单来说就是使用JSON格式进行数据交换),串口设备的速率通常都较低,所以比较适合小数据量的交换。
4.4 qemu-io
- 这是一个执行 Qemu I/O 操作的命令行工具,可以对qemu-img创建的镜像进行I/O测试,其帮助文档为,使用格式为qemu-io [-h] [-V] [-rsnm] [-c cmd] … [file],下面是常用的选项:
(1)-c, --cmd:执行指令;
(2)-r, --read-only:设置出口为只读模式;
(3)-s, --snapshot:使用快照文件进行测试;
(4)-n, --nocache:禁用主机缓存;
(5)-k, --native-aio:使用内核AIO实现(仅在Linux上);
(6)-t, --cache=MODE:对image使用指定的缓存模式。
4.5 qemu-nbd
-
qemu-nbd在有的系统上叫kvm-nbd,qemu-nbd-xen等。基本上都一样。用qemu-nbd实现mount虚拟硬盘到Host上的功能。
-
网络块设备: Network Block
Device。可以将一个远程主机的磁盘空间,当作一个块设备来使用,就像一块硬盘一样。使用它,可以很方便的将另一台服务器的硬盘空间增加到本地服务器上。 -
NBD与NFS有所不同,NFS只是提供一个挂载点供客户端使用,客户端无法改变这个挂载点的分区格式。而NBD提供的是一个块设备,客户端可以把这个块设备格式化成各种类型的分区,更便于用户的使用。