成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在openstack中創建鏡像 for Juno

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

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

如何在openstack中創建鏡像 for Juno

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

1. 創建一個新的磁盤作為root disk

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

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

4. 從ISO啟動虛擬機,比將系統安裝到root disk

5. 創建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中,調用邏輯是:

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.     #創建虛擬機時如果image_meta中的disk_format為iso, 則認為是創建新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驅動程序 
  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 創建磁盤

driver.py中的調邏輯是: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中的調邏輯是: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的專欄
相關推薦

2019-08-27 08:00:10

OpenStack命令虛擬機

2015-02-06 09:39:16

OpenStack j云主機創建

2015-10-10 10:21:26

OpenStackRegion多Region

2019-08-12 14:04:51

2019-05-14 11:00:07

LinuxSSH別名

2011-05-04 09:11:30

RPM包Linux

2020-07-13 07:00:21

Kubernetes

2023-02-06 17:49:35

Linux符號鏈接

2009-11-23 20:05:29

ibmdwLotus

2022-03-15 07:55:09

JavaScript線性儀表圖開發

2023-09-27 23:24:50

C++鏈表

2018-01-26 09:02:30

LinuxPDF創建視頻

2020-07-20 07:00:00

KubernetesHostPath

2019-07-30 10:33:01

2022-11-11 09:01:08

SwiftUI條形圖子視圖

2015-03-09 13:41:08

DevStackOpenStackOpenStack J

2015-10-23 17:29:24

AtomicOpenStack 應用部署

2021-02-18 17:00:52

Linux歸檔文件

2022-04-01 07:35:45

IDEAJavaWeb 項目

2020-07-09 13:10:42

GIMP曲線文本應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费福利视频一区二区三区 | 亚洲欧美国产精品一区二区 | 欧美久久国产精品 | 欧美一级欧美一级在线播放 | 91精品国产91久久综合桃花 | 国产超碰人人爽人人做人人爱 | 欧洲视频一区二区 | 波多野结衣在线观看一区二区三区 | 中文av在线播放 | 免费成人国产 | 国产一级在线视频 | 另类视频区 | 欧美一区二区三区在线观看视频 | 91亚洲国产成人精品一区二三 | 中文字幕亚洲一区二区三区 | 日本不卡在线视频 | 亚洲 欧美 另类 日韩 | 国产亚洲高清视频 | 日韩成人免费视频 | 精品国产鲁一鲁一区二区张丽 | 亚洲一二三区精品 | 精品av | 欧美一区二区三区免费在线观看 | 精品一区二区久久久久久久网站 | 一区二区在线免费播放 | 欧美性一区二区三区 | 久久久观看 | 一区二区三区视频在线免费观看 | 国产免费自拍 | 久久国产视频网站 | 一区二区三区视频在线免费观看 | 国产福利二区 | a级大片| 国产黄色一级片 | 欧美视频免费 | 国产精品毛片一区二区三区 | 伊人超碰 | 欧洲一区视频 | 亚洲天堂一区 | a精品视频 | 作爱视频免费看 |