自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在openstack中創(chuàng)建鏡像 for Juno

云計算 OpenStack
當前在OpenStack中沒有提供一個方便快捷的方法去創(chuàng)建鏡像,需要運維人員使用KVM制作,這無疑提高了對運維人員和環(huán)境(需要一個安裝了KVM的linux)的要求,因此我覺得OpenStack還是不適應于私有云的,它是為公有云而生。

當前在OpenStack中沒有提供一個方便快捷的方法去創(chuàng)建鏡像,需要運維人員使用KVM制作,這無疑提高了對運維人員和環(huán)境(需要一個安裝了KVM的linux)的要求,因此我覺得OpenStack還是不適應于私有云的,它是為公有云而生。

如何在openstack中創(chuàng)建鏡像 for Juno

本文介紹一種利用Horizon和ISO格式的安裝盤來創(chuàng)建鏡像的方法,其原理為:

1. 創(chuàng)建一個新的磁盤作為root disk

2. 從Glance下載ISO作為第二塊磁盤

3. 從Glance下載virtio作為第三塊磁盤

4. 從ISO啟動虛擬機,比將系統(tǒng)安裝到root disk

5. 創(chuàng)建image并保持到Glance

1.添加一種disk類型newos

  1. 'mapping': a dict contains the storage device mapping. 
  2.  
  3.  
  4.    For the default disk types it will contain the following 
  5.    keys & values: 
  6.  
  7.  
  8.       'disk' -> disk_info 
  9.       'disk.rescue' -> disk_info 
  10.       'disk.local' -> disk_info 
  11.       'disk.swap' -> disk_info 
  12.       'disk.config' -> disk_info 
  13.       'disk.newos' -> disk_info 
  14. disk_info指的是: 
  15. 'disk_info': a tuple specifying disk configuration 
  16.  
  17.  
  18.    It contains the following 3 fields 
  19.  
  20.  
  21.       (disk bus, disk dev, device type) 
  22.  
  23.  
  24.  * 'disk_bus': the guest bus type ('ide''virtio''scsi', etc) 
  25.  
  26.  
  27.  * 'disk_dev': the device name 'vda''hdc''sdf''xvde' etc 
  28.  
  29.  
  30.  * 'device_type': type of device eg 'disk''cdrom''floppy' 

2 設置磁盤順序

在blockinfo.py中,調(diào)用邏輯是:

spawn-->get_disk_info -->get_disk_mapping :

  1. if image_meta and image_meta.get('disk_format') == 'iso'
  2.     root_disk_bus = disk_bus 
  3.     #創(chuàng)建虛擬機時如果image_meta中的disk_format為iso, 則認為是創(chuàng)建新image的操作,那么進行如下操作 
  4.  
  5.     #設置disk.newos為root device 
  6.     root_device_type = 'disk' 
  7.  
  8.     root_info = get_next_disk_info(mapping, 
  9.                                    root_disk_bus, 
  10.                                    root_device_type) 
  11.     mapping['root'] = root_info 
  12.     mapping['disk.newos'] = root_info 
  13.  
  14.     #設置disk(iso)為第二個device 
  15.     image_device_type = 'cdrom' 
  16.     image_device_bus = cdrom_bus 
  17.     cdrom_info = get_next_disk_info(mapping, 
  18.                                    image_device_bus, 
  19.                                    image_device_type) 
  20.     mapping['disk'] = cdrom_info 
  21.  
  22.     #s設置disk.virtio作為第三個設備,為需要virtio的時候提供virtio驅(qū)動程序 
  23.     virtio_device_type = 'cdrom' 
  24.     virtio_device_bus = cdrom_bus 
  25.     virtio_device_info = get_next_disk_info(mapping, 
  26.                                    virtio_device_bus, 
  27.                                    virtio_device_type) 
  28.     mapping['disk.virtio'] = virtio_device_info 
  29.     return mapping 

#p#

3 創(chuàng)建磁盤

driver.py中的調(diào)邏輯是:spawn--> _create_image

  1. newos_size_gb = CONF.os_root_disk_size 
  2. if 'disk.newos' in disk_mapping: 
  3.     fname = "newos_%s_%s" % (newos_size_gb, os_type_with_default) 
  4.     size = newos_size_gb * 1024 * 1024 * 1024 
  5.     image('disk.newos').cache(fetch_func=self._create_newos, 
  6.                               filename=fname, 
  7.                               size=size, 
  8.                               newos_size=newos_size_gb) 
  9.  
  10. virtio_image_id = CONF.virtio_image_id 
  11. virtio_images = {'image_id': virtio_image_id} 
  12. virtio_fname = imagecache.get_cache_fname(virtio_images, 'image_id'
  13. image('disk.virtio').cache(fetch_func=libvirt_utils.fetch_image, 
  14.                         context=context, 
  15.                         filename=virtio_fname, 
  16.                         size=size, 
  17.                         image_id=virtio_image_id, 
  18.                         user_id=instance['user_id'], 
  19.                         project_id=instance['project_id'])
  1. @staticmethod 
  2. def _create_newos(target, newos_size): 
  3.     #self._create_local(target, newos_size) 
  4.     unit='G' 
  5.     libvirt_utils.create_image('qcow2', target, 
  6.                                '%d%c' % (newos_size, unit)) 

4. 將磁盤配置寫入XML文件中

driver.py中的調(diào)邏輯是:spawn-->get_guest_xml--> get_guest_config-->_get_guest_storage_config

  1. if rescue: 
  2.         diskrescue = self.get_guest_disk_config(instance, 
  3.                                                 'disk.rescue'
  4.                                                 disk_mapping, 
  5.                                                 inst_type) 
  6.         devices.append(diskrescue) 
  7.  
  8.         diskos = self.get_guest_disk_config(instance, 
  9.                                             'disk'
  10.                                             disk_mapping, 
  11.                                             inst_type) 
  12.         devices.append(diskos) 
  13.     else
  14.         #添加device 
  15.         if 'disk.newos' in disk_mapping: 
  16.             disknewos = self.get_guest_disk_config(instance, 
  17.                                                    'disk.newos'
  18.                                                    disk_mapping, 
  19.                                                    inst_type) 
  20.             devices.append(disknewos) 
  21.  
  22.             diskcdrom = self.get_guest_disk_config(instance, 
  23.                                                 'disk'
  24.                                                 disk_mapping, 
  25.                                                 inst_type) 
  26.             devices.append(diskcdrom) 
  27.  
  28.             diskvirtio = self.get_guest_disk_config(instance, 
  29.                                                 'disk.virtio'
  30.                                                 disk_mapping, 
  31.                                                 inst_type) 
  32.             devices.append(diskvirtio) 
  33.             ### 
  34.         else
  35.             if 'disk' in disk_mapping: 
  36.                 diskos = self.get_guest_disk_config(instance, 
  37.                                                     'disk'
  38.                                                      disk_mapping, 
  39.                                                      inst_type) 
  40.                 devices.append(diskos) 

參考:http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-images/

博文出處:http://blog.csdn.net/epugv/article/details/44856439

責任編輯:Ophira 來源: epugv的專欄
相關推薦

2015-02-06 09:39:16

OpenStack j云主機創(chuàng)建

2019-08-27 08:00:10

OpenStack命令虛擬機

2015-10-10 10:21:26

OpenStackRegion多Region

2011-05-04 09:11:30

RPM包Linux

2019-05-14 11:00:07

LinuxSSH別名

2020-07-13 07:00:21

Kubernetes

2019-08-12 14:04:51

2015-03-09 13:41:08

DevStackOpenStackOpenStack J

2009-11-23 20:05:29

ibmdwLotus

2020-07-20 07:00:00

KubernetesHostPath

2023-09-27 23:24:50

C++鏈表

2022-03-15 07:55:09

JavaScript線性儀表圖開發(fā)

2018-01-26 09:02:30

LinuxPDF創(chuàng)建視頻

2023-02-06 17:49:35

Linux符號鏈接

2019-07-30 10:33:01

2022-11-11 09:01:08

SwiftUI條形圖子視圖

2015-10-23 17:29:24

AtomicOpenStack 應用部署

2021-10-28 19:08:29

Python虛擬環(huán)境

2020-07-09 13:10:42

GIMP曲線文本應用

2021-02-18 17:00:52

Linux歸檔文件
點贊
收藏

51CTO技術棧公眾號