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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

lxd-启动篇分析

發(fā)布時(shí)間:2024/8/26 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 lxd-启动篇分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

lxd是什么:lxd是基于lxc構(gòu)筑的容器管理進(jìn)程,提供鏡像,網(wǎng)絡(luò),存儲(chǔ),以及容器的能力,對(duì)外暴漏restfull API。其與docker的區(qū)別是docker更切近與app container,以應(yīng)用為中心構(gòu)筑,lxd屬于system container,以資源為中心構(gòu)筑,其使用方式也是切近與vm,而與vm的區(qū)別,請(qǐng)自行搜索容器與vm差異。lxd由ubuntu開(kāi)源,意在提供資源視角的容器,不顛覆傳統(tǒng)的資源的運(yùn)維管理方式。其配套由openstack的nova-lxd driver 可與openstack輕松集成,管理vm方式管理容器。

本篇重點(diǎn)說(shuō)的是lxd daemon的啟動(dòng)篇:

由上面可知,我們可以通過(guò)啟動(dòng)參數(shù)配置 對(duì)lxd的運(yùn)行階段進(jìn)行全方位的跟蹤,有cpu,內(nèi)存,以及運(yùn)行堆棧的信息,這對(duì)lxd的問(wèn)題定位很有幫助。lxd daemon守護(hù)進(jìn)程的啟動(dòng)重點(diǎn)在daemon初始化過(guò)程中:

下面對(duì)紅色部分詳細(xì)展開(kāi)解釋:

從啟動(dòng)篇看具備如下能力:

1:支持apparmor

2:支持storage driver:為容器設(shè)置不同的文件系統(tǒng)

3:支持bridge和ovs兩種網(wǎng)絡(luò)方式

4:支持cpu,net,usb熱插拔

5::支持GPU設(shè)備發(fā)現(xiàn)加載

6:支持代理服務(wù)器訪問(wèn)

此部分涉及Linux 較多知識(shí)。將涉及的簡(jiǎn)單概括:

Namespace

Linux Namespaces機(jī)制提供一種資源隔離方案。PID,IPC,Network等系統(tǒng)資源不再是全局性的,而是屬于某個(gè)特定的Namespace。每個(gè)namespace下的資源對(duì)于其他namespace下的資源都是透明,不可見(jiàn)的。因此在操作系統(tǒng)層面上看,就會(huì)出現(xiàn)多個(gè)相同pid的進(jìn)程。系統(tǒng)中可以同時(shí)存在兩個(gè)進(jìn)程號(hào)為0,1,2的進(jìn)程,由于屬于不同的namespace,所以它們之間并不沖突。而在用戶層面上只能看到屬于用戶自己namespace下的資源,例如使用ps命令只能列出自己namespace下的進(jìn)程。這樣每個(gè)namespace看上去就像一個(gè)單獨(dú)的Linux系統(tǒng)。

User Namespace主要是用了CLONE_NEWUSER的參數(shù),使用了這個(gè)參數(shù)后,內(nèi)部看到的UID和GID已經(jīng)與外部不同了。默認(rèn)情況下容器沒(méi)有的UID,系統(tǒng)自動(dòng)設(shè)置上了最大的UID65534,默認(rèn)UID的定義文件在“/proc/sys/kernel/overflowuid”。
要把容器中的uid和真實(shí)系統(tǒng)的uid給映射在一起,需要修改 /proc/$$/uid_map 和/proc/$$/gid_map 這兩個(gè)文件。這兩個(gè)文件的格式為:

ID-inside-ns ID-outside-ns length

PS:
第一個(gè)字段ID-inside-ns表示在容器顯示的UID或GID,
第二個(gè)字段ID-outside-ns表示容器外映射的真實(shí)的UID或GID。
第三個(gè)字段表示映射的范圍,一般填1,表示一一對(duì)應(yīng)。

例:把真實(shí)的uid=1000映射成容器內(nèi)的uid=0

$cat/proc/2465/uid_map

010001

例:把namespace內(nèi)部的uid映射到外部設(shè)置整形

把namespace內(nèi)部從0開(kāi)始的uid映射到外部從0開(kāi)始的uid,其最大范圍是無(wú)符號(hào)32位整形

$cat/proc/$$/uid_map

004294967295

需要注意的是:

寫這兩個(gè)文件的進(jìn)程需要這個(gè)namespace中的CAP_SETUID (CAP_SETGID)權(quán)限(可參看Capabilities)寫入的進(jìn)程必須是此user namespace的父或子的user namespace進(jìn)程。
另外需要滿如下條件之一:

1)父進(jìn)程將effective uid/gid映射到子進(jìn)程的user namespace中

2)父進(jìn)程如果有CAP_SETUID/CAP_SETGID權(quán)限,那么它將可以映射到父進(jìn)程中的任一uid/gid

AppArmor

AppArmor(Application Armor)是Linux內(nèi)核的一個(gè)安全模塊,AppArmor允許系統(tǒng)管理員將每個(gè)程序與一個(gè)安全配置文件關(guān)聯(lián),從而限制程序的功能。簡(jiǎn)單的說(shuō),AppArmor是與SELinux類似的一個(gè)訪問(wèn)控制系統(tǒng),通過(guò)它你可以指定程序可以讀、寫或運(yùn)行哪些文件,是否可以打開(kāi)網(wǎng)絡(luò)端口等。作為對(duì)傳統(tǒng)Unix的自主訪問(wèn)控制模塊的補(bǔ)充,AppArmor提供了強(qiáng)制訪問(wèn)控制機(jī)制,它已經(jīng)被整合到2.6版本的Linux內(nèi)核中。

詳細(xì)介紹參考:http://www.cnblogs.com/-Lei/archive/2013/02/24/2923947.html

網(wǎng)絡(luò)

設(shè)置涉及iptables,ip link命令,ovs-vsctl命令。

unix domain socket

相關(guān) 參考:http://www.th7.cn/Program/go/201508/539156.shtml

Linux內(nèi)核態(tài)與用戶態(tài)通信

參考:http://blog.csdn.net/luckyapple1028/article/details/50839395

Linux信號(hào)

詳細(xì)參考:http://blog.chinaunix.net/uid-20441206-id-3138952

總結(jié)

以上是生活随笔為你收集整理的lxd-启动篇分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。