CloudStack的管理的存储按用途分为主存储(Primary Storage)和二级存储(Secondary Storage),主存储用来存储虚拟机的卷,二级存储用来存放虚拟机的模板,ISO镜像和快照。值得一提的是,这里的主存储并不是指我们平时说的主存(RAM),它是Storage而不是Memory,可以理解为是硬盘,主存储和二级存储仅仅是存放的文件类型不同,使用的存储设备的类型是一样的。

主存储

当我们创建一台虚拟机时,需要为它指定至少一个卷(Volume),对于虚拟机来说,一个卷就相当于一个硬盘。在CloudStack中,虚拟机的卷被存放在主存储中:

如上如所示,在CloudStack中 ,主存储有两种:本地存储(Local)和共享存储(Shared)。本地存储在宿主机上,所以当虚拟机的卷使用本地存储时,只能被和它处于同一宿主机的虚拟机访问,而使用共享存储时,任意一台宿主机只要能访问该存储,宿主机上的虚拟机也就能访问该存储,也就是说该存储是被多台宿主机上的虚拟机共享的。

虚拟机迁移

当虚拟机使用共享存储时,虚拟机可以在线迁移到其他宿主机上,因为虚拟机本质上只是一个进程,只需要把该进程复制到另外一台可以访问它的卷的宿主机上,即可完成虚拟机的迁移。但使用本地存储的虚拟机无法实现在线迁移,因为其他宿主机无法访问该虚拟机位于本地存储上的卷,如图所示,我们将虚拟机VM3从Host1迁移到Host2:

卷迁移

在CloudStack中,使用本地存储的虚拟机不仅虚拟机本身不能迁移,虚拟机的卷也是不能迁移的,也就是说一旦创建虚拟机时选择了本地存储,那么这台虚拟机永远只会跑在同一台宿主机上,而它的卷也只能存放在该宿主机的本地存储上。但是使用共享存储的虚拟机的卷是可以迁移到其他共享存储上去的,如图所示,我们把卷4从共享存储1迁移到共享存储2

在实际生产中,我们并不能保证宿主机永远状态正常,因为种种原因宕机的情况也是难以避免的事,如果我们的虚拟机使用的是本地存储,那么一旦宿主机挂掉虚拟机也要跟着挂掉,如果宿主机的硬盘坏了有可能导致虚拟机的卷也丢失了,对于重要的业务,特别是单节点(没有启用主备)运行的业务,使用本地盘是比较危险的方式,更为保险的方式是使用共享存储,这样一旦宿主机挂掉可以快速地将业务迁移到其他可用的宿主机上,从而保证跑在云上的业务稳定运行。但使用本地存储也是有一定好处的,现在许多服务器的硬盘都是SSD盘,使用SSD盘做本地存储IO性能会好一些。所以当我们创建虚拟机时要根据我们的需求权衡一下利弊来选择虚拟机是使用本地存储还是共享存储。

二级存储

二级存储上存放的是ISO镜像,模板,快照。三者的作用分别如下:

  1. ISO镜像:就是操作系统的ISO文件,当我们创建虚拟机时,如果我们为虚拟机指定的是一个ISO镜像,那么当虚拟机启动时,就会进入操作系统的安装界面,按步骤安装完操作系统以后,下次启动虚拟机时就可以直接进入安装好的操作系统中了。
  2. 模板:使用ISO镜像时,每次创建一台虚拟机都需要安装一次操作系统,这显然效率低下,我们可以把安装完操作系统的虚拟机的卷作为模板上传上去,创建虚拟机时选择相应的虚拟机模板,创建出来的虚拟机就是安装好操作系统的,启动后可以直接进入操作系统。
  3. 快照:我们可以在任意时刻对虚拟机的卷拍摄快照,然后把快照做成自定义模板,通过自定义模板创建出来的虚拟机的卷和拍摄快照时的虚拟机的卷是一模一样的,我们可以通过这种方式在模板中预装好一些常用的软件或保存一些配置信息。

    三者的作用其实是类似,这里我们以模板为例,介绍一下创建虚拟机时模板的作用。我们知道,虚拟机要正常运行至少要有一个ROOT卷(卷分两种:ROOT卷和DATA卷),ROOT卷需要安装好操作系统,虚拟机启动时才能进入操作系统正常使用,那么这个ROOT卷是哪里来的呢?当我们在CloudStack创建虚拟机时,需要为其指定一个模板,虚拟机的ROOT卷就是通过从二级存储上复制这个模板到主存储上得到的,但一个主存储第一次使用一个模板时,模板会从二级存储上复制一份放到主存储上,以后这个主存储上的ROOT卷再使用这个模板时,就可以直接从主存储上拷贝,无需每次都去二级存储上拷贝,大体流程如下图所示:

CloudStack那些事儿2 : 主存储与二级存储相关推荐

  1. CloudStack相关技术-主存储和二级存储

    主存储 主存储和一个集群相关联,为集群中所有host上运行的虚拟机提供虚拟磁盘.在KVM和VMware中,我们可以在zone范围提供主存储. 我们可以为集群(或zone)添加多个主存储服务器,但至少也 ...

  2. nutanix文件服务器方案,Nutanix推出超融合二级存储解决方案Nutanix Mine

    近日,Nutanix在美国安纳海姆.NEXT用户大会上宣布推出全新开放式解决方案Nutanix Mine,集成二级存储操作与Nutanix企业云平台,为用户在私有云环境下提供完整的主数据存储和二级存储 ...

  3. CloudStack 4.2 与CloudStack 4.1二级存储API发生变化

    CloudStack 4.1查看二级存储 http://192.168.150.16:8080/client/api?command=listHosts&response=json&s ...

  4. ZStack——存储模型:主存储和备份存储

    ZStack通过逻辑功能,将存储系统抽象成主存储和备份存储.一个主存储是一个存放VM磁盘的存储池:一个备份存储是这么一个存储,用户存储镜像模板.备份的磁盘.快照.主存储和备份存储可以是物理分离的存储系 ...

  5. 超融合挺进二级存储,华为与Commvault“合”“和”

    更多精彩,请点击上方蓝字关注我们! 华为与Commvault共同推出华为超融合数据保护解决方案 在刚刚落幕的HUAWEI CONNECT 2018上,华为与全球企业数据备份.恢复.归档和云服务领导者C ...

  6. 操作系统--二级存储结构下篇知识详解

    操作系统--二级存储结构下篇知识详解 三级存储结构 三级存储结构 n Low cost is the defining characteristic of tertiary 低成本是第三产业的决定性特 ...

  7. 存储知识:数据一致性、分级存储、分层存储与信息生命周期管理

    一.概述 数据一致性是指关联数据之间的逻辑关系是否正确和完整.问题可以理解为应用程序自己认为的数据状态与最终写入到磁盘中的数据状态是否一致.比如一个事务操作,实际发出了五个写操作,当系统把前面三个写操 ...

  8. mysql用18位存储uuid_MySQL中存储UUID的最佳实践

    在MySQL中有一个UUID () 函数,通常用UUID做唯一标识,需要在数据库中进行存储.使用此函数可以让MySQL生成一个UUID值,并以VARCHAR(36)类型的可读形式返回.如图1: 图1 ...

  9. mysql 存储uuid_MySQL中存储UUID的最佳实践

    在 MySQL 中有一个UUID () 函数, 通常用UUID做唯一标识,需要在 数据库 中进行存储. 使用此函数可以让MySQL生成一个UUID值,并以VARCHAR(36)类型的可读形式返回.如图 ...

最新文章

  1. 备份MySQL数据库
  2. 安装ubuntu20.4+gtx1050+cuda11.3
  3. python__和_区别_【Python】对_和__差别的理解
  4. mysql使用常量列_MySQL 执行计划
  5. 芯片巨头英特尔放弃竞争迷你计算机市场
  6. java方法示例注释 @_Java 8中的功能接口是什么? @功能注释和示例
  7. MYSQL--浅析索引
  8. python递归函数详解-讲解Python中的递归函数
  9. c语言中递增递减运算符,递增++和递减-C ++中的运算符
  10. php截取一个中文字符,php中的一个中文字符串截取函数
  11. Python_Tips[6] - is 和 == 的区别
  12. Android知识点复习(一)-Android系统架构
  13. windows下release模式调试某行代码无法中断
  14. Java SE 随机数生成器 Random
  15. setCookie时遇到的问题
  16. 亮眼的PPT文字填充特效
  17. c语言双向循环链表存储长整型,湖南工程学院15级C语言课程设计报告.doc
  18. vue-quill-editor 上传视频
  19. 选择适合esx服务器的性能,Esxtop: 使用性能指标负责ESX的故障诊断
  20. 华为疯狂扩招3000名数据分析师,招聘要求让人窒息!

热门文章

  1. python的源代码文件的扩展名是-python源文件后缀是什么
  2. python代码案例详解-Python综合应用名片管理系统案例详解
  3. python读取大文件-使用Python读取大文件的方法
  4. python面向对象编程的优点-Python面向对象编程 一
  5. python课程价格哪个好-上海Python线上远程课
  6. python处理数据的优势-Python的优势及应用领域
  7. python对文件的读操作方法有哪些-Python中文件的读取和写入操作
  8. 国外程序员整理的 C++ 资源大全
  9. 推荐!国外程序员整理的 C++ 资源大全(https://github.com/fffaraz/awesome-cpp)
  10. Django 在test.py 中测试文件的配置