一、准备工作

需要准备一个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
root@KingServer3:/var/tmp/cloud_image# onedatastore show
DATASTORE INFORMATION
ID :
NAME : default
USER : oneadmin
GROUP : oneadmin
CLUSTERS :
TYPE : IMAGE
DS_MAD : fs
TM_MAD : ssh
BASE PATH : /var/lib/one//datastores/1
DISK_TYPE : FILE
STATE : READY DATASTORE CAPACITY
TOTAL: : .9G
FREE: : .2G
USED: : .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 root@KingServer3:/var/tmp/cloud_image#

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

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

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

 
 
 
 
 
 

OpenNebula学习第四节之磁盘镜像的制作的更多相关文章

  1. VUE2.0实现购物车和地址选配功能学习第四节

    第四节 v-on实现金额动态计算 用¥金额 进行格式处理,可以使用原生js进行转换,但是在vuei,使用filter过滤器更加方便 注: 1.es6语法=>和import等 好处在于res参数后 ...

  2. JPA学习---第四节:JPA实例与JPA主键生成策略

    1.编写实体类,代码如下: package learn.jpa.bean; import javax.persistence.Entity; import javax.persistence.Gene ...

  3. Python学习-第四节:常用模块-logging,re,time

    1:logging模块 import logging logging.debug('This is debug message') logging.info('This is info message ...

  4. Ant学习---第四节:Ant属性的介绍

    一.ant 属性设置,用 property 标签,详解如下: 特点 大小写敏感: 不可改变,先到先得,谁先设定,之后的都不能改变. 设置 1 .设置 name 和 value 属性值,比如: < ...

  5. Netty学习第四节WebSocket入门

    1.什么是webSocket?       webSocket是H5提出的一个协议规范,webSocket约定了一个通信的规范,通过一个握手的机制,客户端和服务端,就能建立一个类似TCP的连接,从而方 ...

  6. Coursera在线学习---第四节.过拟合问题

    一.解决过拟合问题方法 1)减少特征数量 --人为筛选 --靠模型筛选 2)正则化(Regularization) 原理:可以降低参数Θ的数量级,使一些Θ值变得非常之小.这样的目的既能保证足够的特征变 ...

  7. python学习第四节 迭代器 生成器

    1:什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通 ...

  8. 学习HTML 第四节.插入图像

    学习HTML 第四节.插入图像 全是文字的网页太枯燥了吧,我们来搞个图片上去! <!DOCTYPE html><html><head><meta charse ...

  9. 风炫安全web安全学习第三十四节课 文件包含漏洞防御

    风炫安全web安全学习第三十四节课 文件包含漏洞防御 文件包含防御 在功能设计上不要把文件包含的对应文件放到前台去操作 过滤各种../,https://, http:// 配置php.ini文件 al ...

随机推荐

  1. IAR EWARM __iar_program_start, __iar_data_init3, __iar_copy_init3, __iar_zero_init3

    #include <stdint.h> // The type of a pointer into the init table. typedef void const * table_p ...

  2. hdu 2546 饭卡(背包)

      设饭卡余额为total 此题经分析 可以得出:要求选出一些饭菜 时消费量尽量接近total-5元 然后再买一个饭菜 以达到透支... 可以证明 最后买的那个饭菜是饭菜中价值最大的. 证明 设a1 ...

  3. 关于在Struts2的Action中使用domain模型接收参数的问题

    最近在搭建一个最新的ssh2框架,今天在调试的时候,发现了一个以前一直没有注意过的问题,我在Action中使用域模型的方式去接收jsp画面中的参数的时候,发现参数总是接收不完,头一次遇到这种问题,现在 ...

  4. 计算机意外地重新启动或遇到错误。windows安装无法继续。若要安装windows 请单击 确定 重新启动计算机

    快安装完系统时遇到提示:计算机意外地重新启动或遇到错误.Windows 安装无法继续.若要安装Windows,请单击“确定”重新启动计算机,然后重新启动安装”.如下图所示: 解决办法: 当出现如上提示 ...

  5. vs断点未能绑定

    原文链接:http://blog.csdn.net/pc0de/article/details/41790063 突然发现所有的c++项目在调试的时候加断点都会报错:”不能设置下面的断点.....断点 ...

  6. 在Visual Studio中使用层关系图描述系统架构、技术栈

    当需要描述项目的架构或技术栈的时候,可以考虑使用层关系图. 在解决方案下添加一个名称为"TailspinToys.DesignModel"的建模项目. 在新建的建模项目下添加一个名 ...

  7. WMAppManifest.xml

    大家在编写Windows phone的程序的时候可能并没有关注WMAppManifest.xml,其实这个档案是记录了应用程式的相关属性描述,以及定义应用程式的功能性的..所以还是相当重要的一个文档, ...

  8. Java 反射机制(包括组成、结构、示例说明等内容)

    第1部分 Java 反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”.这里“类的部分已经的信息”,可以是“类名”或“类的对象” ...

  9. C#设置有命令空间的属性

    之前被问到一个问题,C#中如何设置android:name这样的属性?我的第一反应是直接setAttribute不就可以了么 SetAttribute(name, value), 可事实上却不行,因为 ...

  10. IOS应用提交所需的ICON

    如果提交的ipa包中,未包含必要的Icon就会收到类似的通知,为什么偏偏是Icon-76呢? 因为我们开发的游戏,默认是支持iphone以及ipad的,根据官方提供的参考 Icon-76.png是必须 ...