• OpenNebula学习第四节之磁盘镜像的制作


    一、准备工作

    需要准备一个Ubuntu16.04的ISO文件上传至服务器,如下图所示

    二、操作步骤

    2.1:创建操作目录

    创建一个/var/tmp/cloud_image目录,把Ubuntu16.04 OS的iso镜像上传到该目录,接下来的操作也会在这个目录下面执行

    2.2:创建一个OS磁盘镜像

    利用命令:qemu-img create -f qcow2 ubuntu1604.img 10G
    创建一个空的磁盘镜像。如下图所示

    需要注意的是:

    -f 指定镜像的格式为qcow2 是一种可压缩的格式比较省空间

    2.3:创建磁盘镜像的注册配置文件

    该文件的作用是为了更方便的把磁盘镜像注册到OpenNebula的one服务中,需要创建两种类型的磁盘镜像注册文件,OS和CDROM类型,我们首先创建一个OS类型

    的镜像注册配置文件,touch一个ubuntu1604-os-img.one,vi内容如下

    NAME          = "Ubuntu1604-OS"
    PATH          = "/var/tmp/cloud_image/ubuntu1604.img"
    TYPE          = "OS"
    DESCRIPTION   = "Ubuntu Server for company"

    其次,创建一个CDROM类型的镜像注册配置文件,touch一个ubuntu1604-cdrom-img.one,vi内容如下

    NAME          = "Ubuntu1604-CDROM"
    PATH          = "/var/tmp/cloud_image/ubuntu-16.04.2-server-amd64.iso"
    TYPE          = "CDROM"
    DESCRIPTION   = "Ubuntu Server  for company"

    截止到这里,所有的准备工作基本OK,我们来看一下工作目录的结果

    2.4:注册磁盘镜像到OpenNebula

    首先说一下注册方式有两种:

    1. 通过OpenNebula的SunStone服务界面进行注册
    2. 通过命令行进行注册

    1)通过OpenNebula进行磁盘镜像的注册

     进入OpenNebula的管理界面点击存储-镜像-添加镜像如下图所示,可以从OpenNebula Server的方式写入镜像的URL或者上传本地镜像进行注册

    2)通过命令行进行磁盘镜像的注册

       执行命令 :  oneimage create ubuntu1604-cdrom-img.one -d 1

       语法        :  oneimage create 镜像注册配置文件  -d 仓库ID

       执行结果如下图所示:通过oneimage list命令可以查看我们刚刚注册的镜像,状态为rdy,创建成功

     

     备注:可以执行 onedatastore list 查看仓库的ID,如下图所示

     

    3)通过OpenNebula服务查看注册的镜像

     OS类型的磁盘镜像加入以下属性,因为我们创建的时候格式是qcow2,否则安装系统的时候读取不到10G的磁盘空间

     三、重点分析

    在执行oneimage create命令的时候遇到过Not allowed to copy image 的错误,错误信息如下

    Thu Aug 3 10:22:12 2017 : Error copying image in the datastore: Not allowed to copy image file /var/lib/one/kingimage/ubuntu01.img
    问题所在:
    原因是因为OpenNebula的每一个仓库都有自己的安全目录的,不能随随便便的把image文件放在一个目录中,最简单的就是把镜像文件放在仓库的安全目录中,这样就可以允许复制了,但是如果你想有一个自定义的安全目录,你也可以尝试更改仓库的安全目录,操作如下:
    1)查看仓库列表:onedatastore list
    2)查看ID为1的仓库配置信息  onedatastore show 1
    root@KingServer3:/var/tmp/cloud_image# onedatastore show 1
    DATASTORE 1 INFORMATION                                                         
    ID             : 1                   
    NAME           : default             
    USER           : oneadmin            
    GROUP          : oneadmin            
    CLUSTERS       : 0                   
    TYPE           : IMAGE               
    DS_MAD         : fs                  
    TM_MAD         : ssh                 
    BASE PATH      : /var/lib/one//datastores/1
    DISK_TYPE      : FILE                
    STATE          : READY               
    
    DATASTORE CAPACITY                                                              
    TOTAL:         : 30.9G               
    FREE:          : 25.2G               
    USED:          : 4.1G                
    LIMIT:         : -                   
    
    PERMISSIONS                                                                     
    OWNER          : um-                 
    GROUP          : u--                 
    OTHER          : ---                 
    
    DATASTORE TEMPLATE                                                              
    CLONE_TARGET="SYSTEM"
    DISK_TYPE="FILE"
    DS_MAD="fs"
    LN_TARGET="SYSTEM"
    RESTRICTED_DIRS="/"
    SAFE_DIRS="/var/tmp"
    TM_MAD="ssh"
    TYPE="IMAGE_DS"
    
    IMAGES         
    0              
    1              
    root@KingServer3:/var/tmp/cloud_image# 

    通过上面的操作,我们可以看到SAFE_DIRS="/var/tmp"这一行,所以我的工作空间是建在这个目录下面的,默认就是安全目录,所以不会出现那个问题

    3)更改指定仓库的安全目录onedatastore update  1

    这个操作就如同vi一个文件一样,如下图,我们修改里面的SAFE_DIRS的值为我们自定义的目录即可

     
     
     
     
     
     
  • 相关阅读:
    .net的委托和事件的直接理解[转载]
    虚函数 多态 函数重载[转载]
    自动化 object <> xml
    用System.Web.HttpRequest模拟一个form的post
    【WP7】动画的使用
    【WP7】关于ListBox控件的数据绑定
    【WP7】坐标变换
    【WP7】页面之间数据交互
    【WP7】调用系统LED灯
    【WP7】MediaPlayer与关闭音乐的方法
  • 原文地址:https://www.cnblogs.com/wxjnew/p/7284195.html
Copyright © 2020-2023  润新知