- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
容器底层技术
容器底层技术
田琪
Agenda
? 容器系统整体架构
? 内核 Namespace 机制
? 内核 CGroup 机制
? 内核 Device Mapper 机制
? DM Thin Provision Target 应用
? Docker Registry 及镜像存储
? 关于 Go
容器系统整体架构
内核 Namespace 机制
? 提供进程级别的资源隔离
? 为进程提供不同的命名空间视图
? 无 hypervisor 层,区别于 KVM,Xen 等虚拟化技术
? 从 Kernel 2.4 版本引入 mnt namespace~3.8 引
入 user namespace 仍然持续发展中
Namespace 概念及当前支持的种类
? mnt (Mount points)
? pid (Processes)
? net (Network stack)
? ipc (System V IPC)
? uts (Hostname)
? user (UIDS)
Namespace 使用接口
? 创建新进程及 namespace
? 加入当前进程到新建 namespace 中
? 改变当前进程的 namespace
flags 取值及含义
Namespace 内核实现 - 初始状态
Namespace 内核实现 - after normal fork
Namespace 内核实现 - clone a new ns
Namespace 内核实现 - after setns on task
CGroups 资源管理
? 提供进程的资源管理功能
? 资源管理主要涉及内存 ,CPU,IO 等
? 不依赖于 Namespace ,可单独使用
? 管理功能通过 VFS 接口暴露
? CGroups 提供通用框架,各子系统负责实现
CGroups 文件系统
CGroups 框架实现
CGroups IO 限流子系统实现
CGroup IO 子系统存在的问题
? Buffer IO 无法准确控制
? 带宽控制只能 CFQ 调度器,不适合高速硬件
? 厂商 Flash 卡驱动很可能根本不走 CFQ
? 通用块层只提供限流策略,缺少弹性
? 混合存储或快照支持引入 DM 情况会更加复杂
? 内核通用块层的改写对现有 CGroup 机制的影响
内核 Device Mapper 机制
? DM 框架为上层应用提供了丰富的设备映射及 IO 策
略方面的支持
? LVM,flashcache,soft-raid 等均基于 DM 实现
? Docker 存储端实现之一也是 DM - thin provision
? 上层通过 dmsetup 工具或 libdevmapper 库使用
Device Mapper 原理
DM thin provision
? 由 thin-poo 及 thin 两个 dm target 共同组成
? thin-poo 管理整个资源池的分配, thin 设备及快照管理工作
? thin 向上提供虚拟设备供使用,数据块写时由 thin-poo 分配
? thin-poo 通过 btree 管理 thin 设备 {thin-devid, LBA} -
{time,FBA} 关系
? 根据 thin 设备的最后一次 snapshot 时间与 time 比较判断是
否是 shared block
? 实际所有 thin 设备的数据都写入到 thin-poo 管理的 datadev
中, thin 设备只是虚拟抽象
DM thin provision
thin-provision 使用 - 创建 thin-pool
Docker 存储端的选择
? Docker 支持 Aufs,DM,Btrfs 等
文档评论(0)