日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

glance系列一:glance基础

發布時間:2025/7/25 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 glance系列一:glance基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 什么是glance

二 為何要有glance

三 glance的功能

四 glance的兩個版本

五 鏡像的數據存放

六 鏡像的訪問權限

七 鏡像及任務的各種狀態

八 glance包含的組件

九 glance與openstack其他服務的關系

十 glance工作流程詳解

十一 Disk和Container格式

十二 常見的鏡像屬性及設置

十三:元數據定義的概念

一 什么是glance

二 為何要有glance

三 glance的功能

四 glance的兩個版本

五 鏡像的數據存放

六 鏡像的訪問權限

七 鏡像及任務的各種狀態

八 glance包含的組件

九 glance與openstack其他服務的關系

十 glance工作流程詳解

十一 Disk和Container格式

十二 常見的鏡像屬性及設置

十三:元數據定義的概念

?

?

一 什么是glance

glance即image service,是為虛擬機的創建提供鏡像的服務

?

二 為何要有glance

我們基于openstack是構建基本的Iaas平臺對外提供虛擬機,而虛擬機在創建時必須為選擇需要安裝的操作系統,glance服務就是為該選擇提供不同的操作系統鏡像。

?

三 glance的功能

?

glance服務使用戶能夠發現,注冊,檢索虛擬機的鏡像,它提供一個能夠查詢虛擬機鏡像元數據和檢索真實鏡像的REST API。

?

具體的:REST API的體現就是一個URI,而在glance中通過一個URI地址來唯一標識一個鏡像的形式如下

?

<Glance Server Location>/v1/images/<ID>

?

?

<Glance Server Location>:glance服務按照的位置

?

/v1:使用v1版本,詳見四

?

/images:請求的類型為鏡像

?

/<ID>:一個uuid,在glance中全局唯一

?

?

?

四 glance的兩個版本

?

在Newton之前的版本中,glance支持兩種REST API V1和V2,兩者區別還是很明顯的:

?

(1). V1只提供了基本的image和member操作功能:鏡像創建、刪除、下載、列表、詳細信息查詢、更新,以及鏡像tenant成員的創建、刪除和列表。

?

(2). V2除了支持V1的所有功能外,主要是增加了如下功能:

?

鏡像 location 的添加、刪除和修改等操作

metadata ?namespace 操作

image tag 操作

(3).V1 和V2對 image store 的支持是相同的。

?

V1版本的實現,具有glance-api和glance-registry兩個WSGI服務,二者都提供REST API,但需要強調的一點是:glance-registry提供的REST API是給glance-api使用的,即The registry is a private internal service meant for use by OpenStack Image service. Do not expose this service to users。

?

?

v2的實現就是將glance-registry集成到了glance-api內部,這么做的好處是減少了一個中間的處理環節

?

特別需要注意的是(查看開發手冊https://docs.openstack.org/developer/glance/)

?

在Newton版本中V1已經是過時的了,并且V1最終將被移除

?

五 鏡像的數據存放

?

?

鏡像的數據包括:1.鏡像元數據;2.鏡像本身即chunk

?

其中鏡像的元數據是通過glance-registry保存到數據庫中,而鏡像的chunk數據是通過Glance store Drivers存放到各種bakcend store中。

?

?

為了讓大家快速地理解glance,在配置glance時我們使用file作為后端,即將鏡像存放于本地文件系統中,上傳或者存儲鏡像的目錄位于按照glance服務的機器上(控制節點),默認目錄是:/var/lib/glance/images/,我們應該確認該目錄有足夠的空間可以使用。

?

需要特別強調的一點是:fileh后端通常位于控制節點本身,因而這種后端并不適用于多節點部署。

?

在glance服務上周星期的運行很多進程來支持緩存。在做glance集群時要考慮使用復制服務來確保一致性和可用性,其他的周期性的進程包括auditors, updaters, and reapers。

?

六 鏡像的訪問權限

?

參照第七部分Glance Domain Controller之后的Auth服務是用來控制鏡像的訪問權限的,此處我們需要了解鏡像的訪問權限都有:

?

public 公共的:可以被所有的 tenant 使用。

private 私有的/項目的:只能被 image owner 所在的 tenant 使用。

shared 共享的:一個非共有的image 可以 共享給另外的 tenant,可通過member-* 操作來實現。

protected 受保護的:protected 的 image 不能被刪除。

?

七 鏡像及任務的各種狀態

?

7.1 鏡像的狀態:

?

下圖表示glance在處理鏡像時如何從一個狀態移動到下一個狀態。






????

注解:

?

queued:沒有上傳 image 數據,只有db 中的元數據。

saving:正在上傳 image data,當注冊一個鏡像使用POST ?/images并且當前攜帶了一個x-image-meta-location頭,這個鏡像將不會進入saving狀態(鏡像的數據已經是可以獲得的,不能重傳)

active:當鏡像數據上傳完畢,鏡像就可以被使用了(可獲得的),此時處于active狀態

deactivated:表示任何非管理員用戶都無權訪問鏡像數據,禁止下載鏡像,也禁止像鏡像導出和鏡像克隆之類的操作(請求鏡像數據的操作)。

killed:表示上傳過程中發生錯誤,并且鏡像是不可讀的

deleted:glance已經保存了該鏡像的數據,但是該鏡像不再可用,處于該狀態的鏡像將在不久后被自動刪除。

pending_delete: 與deleted相似,glance還沒有清除鏡像數據,只是處于該狀態的鏡像不可恢復。

小結:

?

'queued' => ('saving', 'active', 'deleted')

'saving' => ('active', 'killed', 'deleted', 'queued')

'active' => ('queued', 'pending_delete', 'deleted')

'killed' => ('deleted')

'pending_delete' => ('deleted')

'deleted' => ()

7.2 任務的狀態

?

pending

?

任務已經保留,但是還沒一開始處理

?

processing

?

正在執行

?

success

?

執行成功

?

failure

?

表示在執行任務的過程中發生了錯誤,并且不能繼續執行

?

八 glance包含的組件

?

對照第四部分的圖示,讓我們來詳解了解下glance的組件構成

?

glance-api

接受api請求,并提供相應操作,包括發現,檢索,存儲

glance-registry

存儲、處理、檢索鏡像的元數據,元數據包括例如鏡像大小、類型等

Database

可以選擇自己喜歡的數據庫存儲鏡像元數據,大多數使用 MySQL 或則 SQLite.

Storage repository for image files

指的是存儲鏡像文件的倉庫或者稱為backend,可以是:

1.本地文件系統(或者任何掛載到glance-api控制節點的文件系統)

2.對象存儲Object Storage(swift)

3.塊存儲RADOS(ceph)

4.VMware數據存儲

5.HTTP

Metadata definition service

為廠商、管理員、openstack其他服務提供一個公用的API,并且用戶可以自定義自己的元數據(有意義的)。

這個元數據功能非常強大,可以被用在不同類型的資源

image 鏡像本身

artifacts

volumes 卷

flavors 套餐

aggregates 主機聚合

具體的可以拿主機聚合舉例,

主機集合即多臺物理主機的集合體,這個集合中的物理主機具有一個或多個硬件方面的優勢,比如說內存大,固態磁盤等,專門用來部署數據庫服務。

?

我們可以制作一個鏡像,然后在該鏡像內定義好元數據:綁定上述的主機結合。這樣凡是用到該鏡像安裝系統的虛擬機,都會被指定到該集合內,然后從該集合內選出一臺物理機創建出虛機.

?

?

?

九 glance與openstack其他服務的關系

?

?

對glance來說,它的客戶端Glance Cli可以是:

?

1.glance的命令行工具

?

2.Horizon

?

3.nova

?

同keystone一樣,glance是Iaas的另外一個中心(見圖),keystone是關于權限的中心,而glance是關于鏡像的中心。glance可以被終端用戶或者nova服務訪問:接受磁盤或者鏡像的API請求和定義鏡像元數據的操作。?

?

?

十 glance工作流程詳解

?

注解:

?

A client

?

然后使用glance服務的應用程序,可以是命令行工具,horizon,nova等

?

REST API

?

glance是一個client-server架構,提供一個REST API,而使用者就是通過REST API來執行關于鏡像的各種操作。

?

Glance Domain Controller

?

是glance內主要的中間件實現,就相當于一調度員,作用是將glance內部服務的操作分發到各層(Auth認證,Notifier,Policy策略,Quota,Location,DB數據庫連接)具體任務由每個層實現。

?

第一層:Auth

驗證鏡像自己或者它的屬性是否可以被修改,只有管理員和該鏡像的擁有者才可以執行該修改操作,否則報錯。

?

第二層:Property protection

由glance domain controller控制的七層組件

?

是可選的層,只有在glance的配置文件中設置了property_protection_file參數才會生效,它提供了兩種類型的鏡像屬性:

?

1.核心屬性,是在鏡像參數中指定的;2元數據屬性,是任意可以被附加到一個鏡像上的key/value

?

該層的功能就是通過調用glance的public API來管理對meta屬性的訪問,你也可以在它的配置文件中限定這個訪問

?

第三層:Notifier



?

把下列信息添加到queue隊列中

?

1.關于所有鏡像修改的通知

?

2.在使用過程中發生的所有的異常和警告?

?

第四層:Policy

?負責:

?

1.定義操作鏡像的訪問規則rules,這些規則都定義在/etc/policy.json文件中

?

2.監控rules的執行

?

第五層:Quota

?如果針對一個用戶,管理員為其規定好他能夠上傳的所有鏡像的大小配額,此處的Quota層就是用來檢測用戶上傳是否超出配額限制:

?

1.如果沒有超出配額限制,那么添加鏡像的操作成功

?

2.如果超出了配額,那么添加鏡像的操作失敗并且報錯。

?

第六層:Location

與Glance Store交互,如上傳下載等。由于可以有多個存儲后端,不同的鏡像存放的位置都被該組件管理。

?

負責:

?

1.當一個新的鏡像位置被添加時,檢測該URI是否正確。

?

2.當一個鏡像位置被改變時,負責從存儲中刪除該鏡像。

?

3.阻止鏡像位置的重復

?

第七層:DB

1.實現了與數據庫API的交互

?

2.將鏡像轉換為相應的格式以記錄在數據庫中。并且從數據庫接收的信息轉換為可操作的鏡像對象。

?

Registry Layer

?

屬于可選的層,用來組織安全。

?

通過使用這個單獨的服務,來控制Glance Domain Controller與Glance DB之間的通信。

?

Glance DB

glance服務使用統一一個核心庫Glance DB,該庫對glance內部所有依賴數據庫的組件來說是共享的。

?

Glance Store

?

用來組織處理Glance和各種存儲后端的交互。

?

所有的鏡像文件操作都是通過調用Glance Store庫執行的,它負責與外部存儲端和(或)本地文件系統的交互。Glance Store提供了一個統一的接口來訪問后端的存儲。

?

?

?

十一 Disk和Container格式

?

當我們添加一個鏡像到glance時,你必須指定虛擬機的disk格式和container格式,關于disk格式請自行研究kvm等虛擬。

?

disk和container格式是每個部署的基本配置,常用的格式如下:

?

1.Disk Format

?

不同的虛擬化應用的廠針有不同的虛擬機鏡像的disk格式:

?

raw

?

This is an unstructured disk image format

?

vhd

?

This is the VHD disk format, a common disk format used by virtual machine monitors from VMware, Xen, Microsoft, VirtualBox, and others

?

vhdx

?

This is the VHDX disk format, an enhanced version of the vhd format which supports larger disk sizes among other features.

?

vmdk

?

Another common disk format supported by many common virtual machine monitors

?

vdi

?

A disk format supported by VirtualBox virtual machine monitor and the QEMU emulator

?

iso

?

An archive format for the data contents of an optical disc (e.g. CDROM).

?

ploop

?

A disk format supported and used by Virtuozzo to run OS Containers

?

qcow2

?

A disk format supported by the QEMU emulator that can expand dynamically and supports Copy on Write

?

aki

?

This indicates what is stored in Glance is an Amazon kernel image

?

ari

?

This indicates what is stored in Glance is an Amazon ramdisk image

?

ami

?

This indicates what is stored in Glance is an Amazon machine image

?

2.Container Format

?

容器container格式是指虛擬機映像是否包含一個文件格式,該文件格式還包含有關實際虛擬機的元數據。

?

需要注意的是:容器格式字符串在當前并不會被glance或其他OpenStack組件的使用,所以如果你不確定,簡單的將容器格式指定bare是安全的。

?

你可以設置如下容器格式:

?

bare

?

This indicates there is no container or metadata envelope for the image

?

ovf

?

This is the OVF container format

?

aki

?

This indicates what is stored in Glance is an Amazon kernel image

?

ari

?

This indicates what is stored in Glance is an Amazon ramdisk image

?

ami

?

This indicates what is stored in Glance is an Amazon machine image

?

ova

?

This indicates what is stored in Glance is an OVA tar archive file

?

docker

?

This indicates what is stored in Glance is a Docker tar archive of the container filesystem

?

?

十二 常見的鏡像屬性及設置

?

?

操作系統架構,修改方式如下

?

openstack image set IMG-UUID --property architecture=x86_64

?

更多猛擊這里http://docs.openstack.org/cli-reference/glance-property-keys.html

?

instance_uuid

?

是元數據,可用于記錄與此鏡像關聯的實例。(僅提供信息,不創建實例快照。)

kernel_id

?

The ID of image stored in Glance that should be used as the kernel when booting an AMI-style image.

?

ramdisk_id

?

The ID of image stored in Glance that should be used as the ramdisk when booting an AMI-style image.

?

os_distro

?

操作系統的發行版本?

?

詳情點擊這里http://docs.openstack.org/cli-reference/glance-property-keys.html

?

os_version

?

廠商指定的操作系統版本

?

十三:元數據定義的概念

?

http://docs.openstack.org/developer/glance/metadefs-concepts.html

轉載于:https://www.cnblogs.com/Jason-Born/p/6494760.html

總結

以上是生活随笔為你收集整理的glance系列一:glance基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。