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的值為我們自定義的目錄即可

 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM