OpenStack存储类型总结

对于openstack,有的时候很无力。一个人瞎折腾了快4个月了。感脚还是比较难,openstack的目标不是建立一个简单快捷的云平台么?我咋觉得就这么难呢?

下面就对opensack里面用到了几类不同的储存做一下说明。一般会有三类,如果超过视情况而定:

opesntack storage     实例/临时存储   卷的块存储(cinder)   对象存储(swift)  
用途   给实例的初始空间   提供给VM永久的额外存储空间   存储虚拟镜像和文件  
持久性   跟vm的生命周期一样   直到被删除为止   直到被删除为止  
实现   本地文件系统实现   通过iscsi挂载实现       通过REST API实现  
定义   根据flavors来定义大小   根据需求   根据需求,而且有极高的扩展性  
例子   m1.small 10G/root 20G/临时存储   2TB的本地存储空间   10T以上的swift存储空间  

默认情况下生成的实例实在:/var/lib/nova/instances下面。

root@master:~# virsh list

Id Name State

----------------------------------

1 instance-00000006 running

root@master:~# ll /var/lib/nova/instances/instance-00000006/

total 494308

drwxrwxr-x 2 nova nova 4096 Jan 14 12:04 ./

drwxr-xr-x 5 nova nova 4096 Jan 14 11:59 ../

-rw-rw---- 1 libvirt-qemu kvm 1 Jan 14 12:05 console.log

-rw-r--r-- 1 libvirt-qemu kvm 506134528 Jan 16 11:20 disk

-rw-r--r-- 1 libvirt-qemu kvm 197120 Jan 14 12:04 disk.local

-rw-rw-r-- 1 nova nova 1694 Jan 14 11:59 libvirt.xml

在实例目录下面会有几个文件。console日志。disk,disk.local,libvirt.xml。一下进行说明:

root@master:~# cd /var/lib/nova/instances/instance-00000006/

root@master:/var/lib/nova/instances/instance-00000006# ls

console.log disk disk.local libvirt.xml

root@master:/var/lib/nova/instances/instance-00000006# qemu-img info disk

image: disk

file format: qcow2

virtual size: 10G (10737418240 bytes)

disk size: 483M

cluster_size: 65536

backing file: /var/lib/nova/instances/_base/09a1c65fb799ed070dd1e65b6296e19e656a040a_10 (actual path: /var/lib/nova/instances/_base/09a1c65fb799ed070dd1e65b6296e19e656a040a_10)

root@master:/var/lib/nova/instances/instance-00000006# qemu-img info disk.local image: disk.local

file format: qcow2

virtual size: 20G (21474836480 bytes)

disk size: 136K

cluster_size: 65536

backing file: /var/lib/nova/instances/_base/ephemeral_0_20_None (actual path: /var/lib/nova/instances/_base/ephemeral_0_20_None)

你会发现里面disk有一个虚拟大小10G,还有存储大小483M.其实这个是创建实例的时候从glance拷贝过来的。下面一个20G就是临时存储了,当vm被删除后就会自动被释放里面的东西就完全没了。现在你可以理解为20G的空间被用了136K。

一般情况下都有做热迁移的需求,那么你就需要用到共享存储了。说明白一点就是:将所有的openstack节点下的/var/lib/nova/instances目录能放在一个存储上而且共享,包括用户权限。(uid:nova gid:nova).因为里面存的都是虚拟机,目录的容量要比较大,可以用存储设备来支持(我真的很想用这个)。不过我做的是用glusterfs+ctdb+nfs+lvs这样的一个廉价的结构来实现的,但是这个性能真的很疼:因为局域网的带宽没有考虑到,所以搭起来的时候吓死我了。本地的读写大概在180M/S,iops峰值900左右。做成这个结构以后降到了5.7M/S.iops下降到峰值只有90左右(而且是集群测试,单节点更慢)。啥性能都没有了。网络环境太烂了,勿笑。

块存储:F版出了一个cinder的东西。它的原理就是用iscsi个逻辑卷lvm结合。把存储空间做成逻辑卷然后利用iscsi远程挂载到被需求的实例上。那么后端的块存储就可以很灵活了,用什么设备你自己看咯。那么我用的是本地的硬盘,4个节点同是安装上 openstack storage,那么调度器会选中其中一台来提供。都是tgt端,安装上lvm2。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5068db970e9d1dbf6858691086f1728d.html