设为首页 收藏本站
查看: 2294|回复: 0

[经验分享] Openstack Cinder入门初探

[复制链接]

尚未签到

发表于 2015-10-11 11:20:11 | 显示全部楼层 |阅读模式
  Cinder背景
        Openstack从folsom版本开始,出现了一个全新的项目Cinder,将之前在Openstack Compute(Nova)中的部分持久性储存功能分离出来,集成到了Cinder组件中。
       Cinder主要是为Openstack提供块存储的功能。Openstack中的虚拟机实例不能持久化,需要挂载Cinder提供的volume,在volume中实现数据持久化。
  

  Cinder服务
      Cinder的服务主要有三项,都以守护进程的形式运行,各项服务介绍如下:
      DSC0000.jpg

      (1)cinder-api:接收API requests并且将请求放入RabbitMQ队列,再转发到cinder-volume去执行。
      (2)cinder-scheduler:处理任务队列的任务,根据预定策略选择合适的Volume Service节点来执行任务。Folsom版本的Cinder仅仅提供了一个Simple Scheduler,该调度器选择卷数量最少的一个活跃节点来创建卷。
      (3)cinder-volume:该服务运行在储存节点,管理储存空间。每个储存节点都有Volume Sevice,若干个这样的节点联合起来可以构成一个储存资源池。Cinder对块数据实现了多种的储存管理方式,主要有LVM(通过LVM相关命令实现Volulme的创建、删除等相关操作)、NFS方式(通过挂共享的方式实现volume)、ISCSI方式(通过iSCSI协议实现)。
       为了扩展不同类型和型号的储存,Volume Service支持如下类型和厂商的drivers:
       --本地储存:LVM,sheepdog
       --网络储存:NFS,RBD(RADOS)
       --IBM:XIV,Storwize V7000,SVC storage systems
       --Netapp:nfs储存
       --EMC:VNC,VMAX/VMAXe
       --Solidfire:solidfire cluster

  

  Cinder支持典型存储的机制
     从目前的实现来看,Cinder对本地存储和NAS的支持比较不错,可以提供完成的cinder API v2支持,而对于其他类型的存储设备,cinder支持或多或少受到限制。Cinder中存储的底层驱动源代码在/cinder/volume/drivers目录中可以找到。这些存储方式都是可以扩展的,要实现特定的储存方式只需要继承VolumeDriver基类,或者根据储存类型继承相关子类(如ISCSIDriver),实现其相关方法。实际上,Cinder并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商根据自己的存储设备产品在Cinder中实现其驱动支持以与OpenStackCinder进行整合。
      块设备挂载到虚拟机的功能由nova组件中实现。在/nova/virt/libvirt目录中的volume.py中实现对应cinder中的存储设备的挂载。针对cinder中的不同存储类型,对应有不同的Volume Diver类型,如LibvirtVolumeDriver、LibvirtNetVolumeDriver、LibvirtISCSIVolumeDriver、LibvirtNFSVolumeDriver等,这些类都继承于LibvirtBaseVolumeDriver基类。
      以本地储存为例,cinder-volume使用LVM驱动,该驱动的实现需呀在主机上事先用lvm命令创建一个cinder-volues的VG卷组,当该主机接收到创建卷请求时,cinder-volume在该VG上创建一个LV逻辑卷,并openiscsi将这个卷当做一个iscsi tgt给export。
  

  Cinder服务的操作体验--基于LVM的卷创建和挂载
     Openstack Cinder API requests的发送有以下几种方法:
      (1)使用cURL工具发送http请求
      (2)使用提供的命令行clients
      (3)REST clients,基于浏览器的图形化接口
      (4)opestack python的软件开发包(SDK)
      本文中使用简便易用的命令行client是进行cinder服务的操作体验。这里的openstack各组件的安装和部署采用all-in-one方式,即所有组件都部署在同一台计算机节点,这也只是为了体验openstack。Opensta ck的部署不在这
里介绍,可以自行google。

      接下来,将介绍使用openstack提供的命令行来创建LVM卷,并将创建的逻辑卷挂载到虚拟机实例中,在虚拟机中查看该卷设备并格式化后使用。
  

      1.创建本地LVM卷组
  如果本地没有LVM逻辑卷组,直接使用cinder create创建逻辑卷将会失败,因为当前没有可用的逻辑卷组。如果当前环境已有LVM卷组,则可跳过。
       LVM逻辑卷管理简介:
       PP,物理分区(physical partition):硬盘的分区,如/dev/hda1,/dev/sda1,是存储系统最底层的单元。
       PV,物理卷(physical volume):是组成VG的基本逻辑单元,和PP相比,却包含了与LVM相关的管理参数。
       VG,卷组(volume group):即LVM卷组,由一个或数个PV组成,相当于LVM的存储池。
       PE,物理区域(physical extend):PV被划分的最小单位,PE大小可配置,默认4MB。

       LE,logic extend:逻辑卷可以被划分成为的可寻址基本单元,同一卷组,LE与PE大小相同并一一对应。   
       LV,逻辑卷(logic volume):建立在VG之上,文件系统之下,由若干个LE组成。
       LVM逻辑卷管理关系如图:
      DSC0001.jpg
  

       这里创建一个大容量文件用loop设备关联来虚拟成磁盘设备。
       1.1 先创建一个5G文件
           dd if=/dev/zero of=cinder-volumes bs=1 count=0 seek=5G
       1.2 使用losetup把文件和循环设备关联,将文件虚拟成磁盘
           losetup /dev/loop2 cinder-volumes
       1.3 对该虚拟磁盘/dev/loop2分区,其中分区的系统识别码(system ID)设置为对应LVM的8e
             fisk /dev/loop2
             n     --添加新分区

             p     --设新分区为主分区

             1     --分区序号为1

             enter  --默认

             enter  --默认(将该块设备只分成一个区)

             t      --设置system ID

             8e     --LVM对应的system ID

             w      --保存分区设置
  

      1.4 对块设备分区的物理分区创建物理卷
           pvcreate /dev/loop2
          查看创建的物理卷
           pvdisplay
  1.5 对已有的物理卷组建成卷组(注意卷组的名字必须为cinder-volumes,与cinder的API一致,否则后面cinder-volume服务会出错
                vgcreate  cinder-volumes  /dev/loop2
          显示建的卷组
            vgdisplay
          如果需要将新的物理卷扩展进卷组
            vgextend   cinder-volumes   <new-pvvolume>
        1.6 重启服务进程cinder-volume,否则无法识别到新建的卷组cinder-volumes
           service  openstack-cinder-volume restart
  

      2 cinder创建LVM逻辑卷
  创建一个名为cin01,大小为1G的逻辑卷
         cinder create --display-name cin01 1
         查看创建的逻辑卷状态信息,如果status一栏显示为available,则创建成功
         cinder list
  

         也可以为该物理卷创建一个快照
         cinder snapshot-create --display-name cin01-snap cin01
         cin01-snap快照卷,cin01是原逻辑卷
  

         查看生成的快照卷
          cinder snapshot-list
         ID为快照生成卷cin01-snap的ID,volume ID一栏是原逻辑卷cin01的ID
  

       3 向虚拟机挂载
  3.1 先查看当前已有的虚拟机
          virsh list
  

       3.2 查看虚拟机的ID
         virsh dumpxml 2|grep uuid
         数字2是3.1中查询所得的ID序列号,结果信息中的uuid就是虚拟机的ID
  

       3.3 向虚拟机挂载该逻辑卷

         nova volume-attach <virtual machine ID> <volume ID> <device>
         device是在虚拟机中得到挂在路径,对kvm的hypervisor,挂载路径一项只支持auto
  

      4 进入虚拟机&#26684;式化并使用该卷
  进入虚拟机的方法较多,这里使用便利的VNC工具进入。只需对虚拟机的xml配置文件中的VNC项中的port设置成与vnc登陆客户端一致即可。

        在虚拟机中使用root权限 fdisk -l或df查看新挂载的卷,这里新挂载的卷位于/dev/vdb。这个卷可以理解为一块新的磁盘,首次使用需要先分区再&#26684;式化建文件系统,然后挂载到某个目录。
       4.1 使用fdisk对该新设备分区
         fdisk /dev/vdb
         n
         p
         1
         enter
         enter
         w
       4.2 &#26684;式化该分区,分区上间ext3文件系统
         mkfs -t ext3 /dev/vdb1
       4.3 将该分区挂载到某个目录
        mkdir /mnt/new_volume
        mount /dev/vdb1 /mnt/new_volume
        

       如果需要卸载该卷,先在虚拟机中
        umount /mnt/new_volume
       再主机中卸载卷
        nova volume-detach <virtual machine ID> <volume ID>

  
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125383-1-1.html 上篇帖子: OpenStack相关资源 下篇帖子: 为 Hadoop 的存储层增加对 OpenStack Swift 的支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表