我看Openstack的临时(Ephemeral)存储和块(Block)存储

背景

Openstack不管是Ephemeral Storage还是Block Storage, 其实从接口上看,其实都是块服务。那么为什么要搞两个不同的类型呢,本文从这两种不同类型块存储的实现上来分析下其中的原因。

临时存储

Openstack临时存储是由Nova提供的,主要是利用主机的本地存储给虚拟机提供卷服务。如果虚拟机被删除了,挂在这个虚拟机上的任何临时存储自动释放。这样的实现方式决定了:
  • 使用Ephemeral Storage的虚拟机不能支持迁移,以及和虚拟机迁移相关的特性,包括 1) HA  2) 动态调度 等等。
  • 存放在Ephemeral Storage上的数据是高度不可靠的,任何虚拟机和主机的故障都可能会导致数据丢失。

块存储

目前Openstack的块存储由Cinder提供,其后端支持很多类型的存储设备,比如多个厂商不同型号的阵列设备,或者是Ceph, Glusterfs, Sheepdog之类的分布式存储系统。基于块存储,可以为用户提供:
  • 高可靠的存储(基于阵列的RAID, 或者是分布式存储的多副本机制;甚至还可以充分利用设备的备份,远程复制能力)
  • 共享存储 (意味着可以支持HA, 虚拟机迁移等等)

临时存储的妙用

这么看来,临时存储岂不是几乎没什么作用了,那为什么还需要提供这个服务呢?其实原因非常简单: 这个服务便宜,而且便宜到令人发指的地步,比如AWS的Ephemeral Storage, 就是免费的。用户可以用它来做不少有意思的事情,比如:
  • 无状态虚拟机,为系统提供Cache服务
  • 为虚拟机操作系统提供交换分区,或者用来存放其它类型的临时文件
  • 改进EBS的性能,比如买4个EBS盘,再配置2个免费的Ephermal盘,组建一个RAID 10系统

总结

对于云服务提供商,不管采用什么样的后端技术,为用户提供7个9甚至更高可靠性的EBS服务,成本是巨大的,如果使用阵列,其价格本来就昂贵;如果使用分布式存储,起码要3个副本,再考虑到定期备份,快照,跨地域容灾,成本一样很高。现在的SATA, SAS盘便宜而且量又足,很容易造成在本地主机上空闲,所以干脆直接送给用户,由他们去玩,而且对于玩的好的用户,还真能对业务有不少帮助。

最后再附上Openstack官方文档对几种存储的对比:

  Ephemeral storage Block storage Object storage

Used to…

Run operating system and scratch space

Add additional persistent storage to a virtual machine (VM)

Store data, including VM images

Accessed through…

A file system

A block device that can be partitioned, formatted and mounted (such as, /dev/vdc)

REST API

Accessible from…

Within a VM

Within a VM

Anywhere

Managed by…

OpenStack Compute (Nova)

OpenStack Block Storage (Cinder)

OpenStack Object Storage (Swift)

Persists until…

VM is terminated

Deleted by user

Deleted by user

Sizing determined by…

Administrator configures size settings, known asflavors

Specified by user in initial request

Amount of available physical storage

Example of typical usage…

10 GB first disk, 30GB second disk

1 TB disk

10s of TBs of dataset storage



你可能感兴趣的:(openstack)