欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

技術(shù)解析系列|PouchContainervolume機(jī)制解析

PouchContainer 是阿里巴巴集團(tuán)開(kāi)源的高效、輕量級(jí)企業(yè)級(jí)富容器引擎技術(shù),擁有隔離性強(qiáng)、可移植性高、資源占用少等特性。可以幫助企業(yè)快速實(shí)現(xiàn)存量業(yè)務(wù)容器化,同時(shí)提高超大規(guī)模下數(shù)據(jù)中心的物理資源利用率。已助力阿里巴巴集團(tuán)實(shí)現(xiàn)在線業(yè)務(wù) 100% 容器化,雙 11 容器規(guī)模達(dá)到百萬(wàn)級(jí)。

為企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、營(yíng)銷型網(wǎng)站建設(shè)、競(jìng)價(jià)托管、品牌運(yùn)營(yíng)等營(yíng)銷獲客服務(wù)。成都創(chuàng)新互聯(lián)公司擁有網(wǎng)絡(luò)營(yíng)銷運(yùn)營(yíng)團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營(yíng)銷經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營(yíng)銷獲客難題,做到“讓獲客更簡(jiǎn)單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營(yíng)銷”三大難題,同時(shí)降低了營(yíng)銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!

PouchContainer volume是專門(mén)用來(lái)解決容器的數(shù)據(jù)持久化的機(jī)制,想要了解volume的機(jī)制,就需要了解PouchContainer的鏡像機(jī)制。PouchContainer,和Docker一樣,實(shí)現(xiàn)了鏡像的分層機(jī)制。所謂鏡像分層機(jī)制,是指容器的鏡像實(shí)際上是由多個(gè)只讀的鏡像層(layer)疊加而成,這樣不同的鏡像就可以復(fù)用鏡像層,大大加快了鏡像分發(fā)的效率,同時(shí)也減少了容器啟動(dòng)時(shí)間。當(dāng)容器需要啟動(dòng)時(shí),pouchd(下文中提到的pouchd均指PouchContainer daemon)會(huì)在啟動(dòng)鏡像的最上層添加一個(gè)讀寫(xiě)層,后續(xù)容器所有的讀寫(xiě)操作就會(huì)記錄在這個(gè)讀寫(xiě)層中。這樣也引入了一個(gè)問(wèn)題,那就是容器數(shù)據(jù)的持久化。假如我們將容器刪除,再次通過(guò)該鏡像啟動(dòng)時(shí),容器之前所做的修改都丟失了,這對(duì)于有狀態(tài)的應(yīng)用(如數(shù)據(jù)庫(kù))是致命的。

volume繞過(guò)了鏡像機(jī)制,讓容器中的數(shù)據(jù)以正常的文件或者目錄的形式存在于宿主機(jī)上,當(dāng)容器停止或刪除時(shí),并不會(huì)影響到volume中的數(shù)據(jù),從而實(shí)現(xiàn)了數(shù)據(jù)的持久化,而且volume數(shù)據(jù)可以在不同的container之間共享。

  1. PouchContainer volume整體架構(gòu)
    該部分內(nèi)容可能涉及PouchContainer的volume源碼實(shí)現(xiàn)。

PouchContainer volume整體架構(gòu)目前主要由以下幾部分構(gòu)成:

VolumeManager:該結(jié)構(gòu)是volume相關(guān)操作的入口。

Core:Core是volume的核心模塊,包含了volume操作的業(yè)務(wù)邏輯

Store:負(fù)責(zé)存儲(chǔ)volume元數(shù)據(jù),目前元數(shù)據(jù)存儲(chǔ)在本地的boltdb文件中。

Driver:volume driver接口,抽象了volume相關(guān)驅(qū)動(dòng)的基本功能

Modules:具體的volume driver,目前存在local, tmpfs, volume plugin, ceph四種volume驅(qū)動(dòng)

pouch_volume_arch.png | center | 747x624
VolumeManager是PouchContainer中的存儲(chǔ)組件(其他組件包括ContainerManager, ImageManager、NetworkManager等),它是所有volume操作的入口,目前提供了Create/Remove/List/Get/Attach/Detach接口。Core包含了volume操作的核心邏輯,向下負(fù)責(zé)調(diào)用底層具體的volume driver,實(shí)現(xiàn)volume的創(chuàng)建、刪除、attach、detach等操作,同時(shí)調(diào)用Store,實(shí)現(xiàn)volume元數(shù)據(jù)管理。Store模塊專門(mén)負(fù)責(zé)volume的元數(shù)據(jù)管理,volume的相關(guān)狀態(tài)都會(huì)通過(guò)Store進(jìn)行存儲(chǔ),之所以將元數(shù)據(jù)管理專門(mén)作為一個(gè)模塊,是為了將來(lái)方便擴(kuò)展,目前volume元數(shù)據(jù)是存儲(chǔ)在boltdb,未來(lái)也可能存入etcd等。Driver抽象了volume driver需要實(shí)現(xiàn)的接口,一個(gè)具體的volume driver需要實(shí)現(xiàn)如下接口:

type Driver interface {
// Name returns backend driver's name.
Name(Context) string

    // StoreMode defines backend driver's store model.
    StoreMode(Context) VolumeStoreMode

    // Create a volume.
    Create(Context, *types.Volume, *types.Storage) error

    // Remove a volume.
    Remove(Context, *types.Volume, *types.Storage) error

    // Path returns volume's path.
    Path(Context, *types.Volume) (string, error)

}

  1. PouchContainer支持的volume類型
    目前,PouchContainer支持三種具體的volume類型,即local, tmpfs和ceph,還通過(guò)volume plugin這種通用的存儲(chǔ)插件機(jī)制支持更多的第三方存儲(chǔ)。

2.1 local volume
local volume是PouchContainer默認(rèn)的volume類型,適合存儲(chǔ)需要持久化的數(shù)據(jù),它的生命周期獨(dú)立于容器的生命周期。

當(dāng)你創(chuàng)建一個(gè)volume時(shí),假如沒(méi)有指定driver類型,則默認(rèn)local為driver類型。local volume本質(zhì)上,是pouchd到/var/lib/pouch/volume目錄下創(chuàng)建的一個(gè)子目錄。相較于docker,PouchContainer的local volume擁有更多的實(shí)用特性,包括:

指定掛載目錄創(chuàng)建volume

可以指定volume大小

首先我們可以指定目錄創(chuàng)建一個(gè)local volume。該特性在生產(chǎn)中非常實(shí)用。對(duì)于某些應(yīng)用,如數(shù)據(jù)庫(kù),我們需要掛載專門(mén)的塊設(shè)備,用于存儲(chǔ)數(shù)據(jù)庫(kù)數(shù)據(jù),例如運(yùn)維人員將塊設(shè)備格式化后,掛載到/mnt/MySQL_data目錄。執(zhí)行以下命令,我們就創(chuàng)建了一個(gè)掛載在/mnt/mysql_data的volume,然后可以將該volume掛載到容器指定目錄,啟動(dòng)容器。

pouch volume create --driver local --option mount=/mnt/mysql_data --name mysql_data
其次,我們可以限制volume的大小。該功能依賴于底層文件系統(tǒng)提供的quato功能,目前支持的底層文件系統(tǒng)為ext4和xfs,同時(shí)對(duì)內(nèi)核版本也有要求。

pouch volume create --driver local --option size=10G --name test_quota
2.2 tmpfs volume
tmpfs volume的數(shù)據(jù)并不會(huì)持久化到硬盤(pán)中去,只存儲(chǔ)于內(nèi)存中 (若內(nèi)存不足,則存入swap),訪問(wèn)速度快,但當(dāng)容器停止運(yùn)行時(shí),該volume里面的所有信息都會(huì)消失,因此tmpfs volume只適合保存一些臨時(shí)和敏感的數(shù)據(jù)。

tmpfs volume默認(rèn)存儲(chǔ)/mnt/tmpfs目錄下,你也可以通過(guò) -o mount 指定其掛載路徑。不過(guò)指定tmpfs的掛載路徑?jīng)]有什么意義,因?yàn)閠mpfs內(nèi)容直接存儲(chǔ)在內(nèi)存中。

pouch volume create --driver tmpfs --name tmpfs_test
2.3 ceph volume
ceph是一種比較特殊的volume類型,ceph volume是將數(shù)據(jù)存儲(chǔ)到ceph集群(ceph rbd 存儲(chǔ))中,因此可以實(shí)現(xiàn)volume跨物理機(jī)的遷移。

目前外界暫時(shí)不能使用ceph volume。從PouchContainer volume架構(gòu)圖可知,ceph driver和driver層之間還有一層alibaba storage controller(注意:alibaba storage controller只是一個(gè)代稱),這是阿里巴巴內(nèi)部的一套容器存儲(chǔ)管理平臺(tái),后面對(duì)接了ceph/pangu/nas等諸多存儲(chǔ)方案。PouchContainer通過(guò)與該容器存儲(chǔ)管理平臺(tái)對(duì)接,可以直接利用ceph提供volume。后期我們可能開(kāi)源該容器存儲(chǔ)管理平臺(tái)。

2.4 volume plugin
volume plugin是一種通用性的volume,準(zhǔn)確來(lái)說(shuō)它是一種volume的擴(kuò)展機(jī)制。目前docker通過(guò)插件機(jī)制可以管理諸多的第三方存儲(chǔ),PouchContainer也實(shí)現(xiàn)了該volume plugin機(jī)制,可以無(wú)縫對(duì)接原先docker已經(jīng)存在的volume plugin。

作為一個(gè)volume plugin,必須實(shí)現(xiàn)volume plugin protocol。volume plugin其實(shí)本質(zhì)上是一個(gè)web server,該web server實(shí)現(xiàn)了如下服務(wù),所有請(qǐng)求均為POST請(qǐng)求。

/VolumeDriver.Create // Volume創(chuàng)建服務(wù)

/VolumeDriver.Remove // Volume刪除服務(wù)

/VolumeDriver.Mount // Volume掛載服務(wù)

/VolumeDriver.Path // Volume掛載路徑服務(wù)

/VolumeDriver.Unmount // Volume卸載服務(wù)

/VolumeDriver.Get // Volume Get服務(wù)

/VolumeDriver.List // Volume List服務(wù)

/VolumeDriver.Capabilities // Volume Driver能力服務(wù)

  1. bind mounts與volumes
    PouchContainer目前支持兩種數(shù)據(jù)持久化的方式,除了上述的volumes,還可以利用bind mounts。bind mounts,顧名思義,指的是直接將宿主機(jī)的目錄掛載到容器里面。

pouch run -d -t -v /hostpath/data:/containerpath/data:ro ubuntu sh
上述這條命令就將宿主機(jī)上的/hostpath/data目錄已只讀的方式掛載到容器的/containerpath/data目錄下。

bind mounts依賴于宿主機(jī)文件系統(tǒng)目錄結(jié)構(gòu),而volume,在PouchContainer中有專門(mén)的機(jī)制進(jìn)行管理。volumes相對(duì)于bind mounts,有以下優(yōu)勢(shì):

volumes相對(duì)于bind mounts,更容易進(jìn)行備份和管理;

PouchContainer提供了專門(mén)的CLI和API,用來(lái)管理volumes;

volumes適合在多個(gè)容器之間安全地共享;

volumes提供了插件機(jī)制,可以更加方便地對(duì)接第三方存儲(chǔ)。

  1. PouchContainer volume未來(lái)的發(fā)展
    CSI,即Container Storage Interface(該項(xiàng)目定義了容器調(diào)度層和容器之間的存儲(chǔ)接口),目前已發(fā)布了v0.2版本。Pouch未來(lái)可能增加一種通用類型的driver,用于對(duì)接已實(shí)現(xiàn)CSI接口的存儲(chǔ)系統(tǒng)。

  2. 總結(jié)
    本文介紹了PouchContainer的volume機(jī)制, volume機(jī)制主要是為了解決容器數(shù)據(jù)持久化的問(wèn)題。PouchContainer目前支持local,tmpfs,ceph三種driver,同時(shí)支持以volume plugin的形式對(duì)接更多的第三方存儲(chǔ)。

網(wǎng)站題目:技術(shù)解析系列|PouchContainervolume機(jī)制解析
地址分享:http://chinadenli.net/article4/goihoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃企業(yè)建站移動(dòng)網(wǎng)站建設(shè)搜索引擎優(yōu)化網(wǎng)站設(shè)計(jì)網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)