虚拟化学习笔记1——LXC
早上办理入职后,下午凯哥给我们带来了任务,但是一大堆的新名词让我摸不着头脑,所以首先要熟悉虚拟化研发需要的名词,打好基础,于是第一天的工作从libvirt.org开始了,而LXC就是今天学习的入口。
通过对API的阅读和上网查资料,对LXC有了自己的理解。
LXC,Linux containers,是一种轻量级的虚拟化技术,是在Linux平台上基于容器的虚拟化技术。
容器
容器虚拟化技术是一种应用层的虚拟化技术,不需要对硬件进行操作,不仅能够提供一个完全隔离的虚拟环境,而且可以实现对内核资源的共享,与全虚拟化相比,节省了资源的占用,速度也更快。
为了实现LXC虚拟化,必须要依靠Linux内核子系统Cgroup和Namespace。
Cgroup:负责LXC的资源管理方面,从对单一的进程的物理资源控制,到实现操作系统层次的虚拟化。
Namespace:负责为LXC提供控制隔离方案。把主机上的系统资源分配到不同的Namespace中,不同container中的进程属于不同的Namespace,这样进程之间彼此透明,互不干扰,达到隔离的效果。
具体来说,就是在调用clone时设置flag。先分成三部分进行分析:进程、文件和网络。
进程隔离:利用PID Namespace和IPC Namespace,每新建一个进程就创建一个PID Namespace,而一个PID Namespace可以为进程提供一个独立的PID环境,不同的Namespace中的进程互不可见。一个IPC Namespace中有一组system V IPC object标示符,这组标示符只在该Namespace中可见,即在该Namespace中的进程相互之间可以实现通信,不同的Namespace中的进程则不能通信。这样就保证了不同Namespace间进程的隔离。
文件隔离:每一个进程都存在于一个mount Namespace,mount Namespace为进程提供了一个文件层次视图。为进程创建一个独立的目录空间。
网络隔离:利用Network Namespace和UTS Namespace。一个Network Namespace为进程提供一个完全独立的网络协议栈的视图,即提供了一个独立的网络环境。UTS Namespace则是一组被uname返回的标示符。clone出来的进程可以通过相关系统调用改变这些标识符,比如调用sethostname来改变该Namespace的hostname。这一改变对该Namespace内的所有进程可见。结合使用可以虚拟出一个有独立主机名和网络空间的网络环境。
把以上三个隔离结合起来使用,就可以虚拟出一个完全独立的进程运行环境,即一个container,而运行在container中的进程认为自己是直接运行在一个系统上的,所以一个container相当于一个虚拟机,但是虚拟机来说,更节省开销。
LXC是直接依靠Linux内核的相关特性来建立一个容器环境,通过Cgroup和Namespace这两个机制实现隔离,但是我觉得在这样的机制下,每个进程都属于不同的container,互相之间不可见也不可以通信,那么不同容器中的进程是否能互相迁移?如果不能通信,那么非内核资源是不是不能共享?占用的空间会不会更大?
2014.7.1621:50
相关推荐
1. **Linux容器(LXC)基础**:LXC是Linux内核提供的功能,它利用了命名空间(namespaces)和控制组(cgroups)等技术来实现资源隔离。这些机制允许在单一Linux内核上运行多个独立的执行环境,每个环境都有自己的...
通过深入学习和实践,你可以掌握如何在Ubuntu Xenial环境中高效利用LXC技术,构建安全、可靠且易于管理的容器化应用程序或服务。这不仅有助于提升开发和运维的效率,还能充分利用资源,降低系统的复杂性。
**1. Vagrant** Vagrant 是一个开源的虚拟化管理工具,它允许开发者通过简单的命令行接口创建和配置一致的开发环境。Vagrant 可以与多种虚拟化技术配合,包括 VirtualBox、VMware 和,如本案例中提到的,LXC。 **2....
适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究...
学习和使用`distrobuilder-2.0`,开发者需要具备一定的Go语言基础,理解LXC容器的工作原理,同时熟悉Linux系统的管理。通过深入研究源码,可以更好地了解容器镜像的构建流程,以及如何利用Go语言的特性来优化性能和...
1. **成本效益**:与传统的虚拟机(VM)相比,LXC容器更轻便,资源消耗更低,因此能够以较低的成本提供多个独立的训练环境。 2. **快速部署**:LXC容器的启动和销毁速度远快于VM,这使得在CyberRange中快速设置和...
【标题】"lxc.rar" 是一个包含多个Java项目的压缩包,主要涵盖了“Java MVC”、“Java温度计”以及“文件处理”的相关实践。这个压缩包的目的是帮助学习者深入理解Java编程的基本原理,尤其是如何在实际应用中运用...
1. **创建容器**:这些脚本可以简化创建新LXC容器的过程,包括选择基础镜像、配置网络、分配资源等。 2. **启动/停止/重启容器**:这些命令让操作容器如同管理普通进程一样简单。 3. **网络管理**:LXC容器的网络...
Proxmox 是一款开源虚拟化管理平台,支持容器(LXC)和虚拟机(KVM)的部署与管理。这里,zzantares 的 proxmox composer 包可能是为了帮助开发者在 Laravel 中更好地与 Proxmox API 交互。 【描述】"Laravel开发-...
Docker是一个LXC应用容器引擎,可以通过Docker进行系统资源的管理和分配,尤其是GPU等计算资源。 本文还介绍了基于容器技术的深度学习大数据分析计算平台的架构设计和实现。该平台的架构设计主要包括三个部分:容器...
总的来说,`saltstack-lxc-vagrant`提供了一种有效的方法,通过Vagrant和LXC在本地快速构建和管理SaltStack的testdev环境,这对 SaltStack 的开发、测试和学习都是极其有价值的。通过熟悉这个项目,你可以深入理解 ...
3. **虚拟化技术**:了解并实践KVM、LXC等虚拟化技术,这对于构建私有云平台非常有用。 4. **容器技术**:学习Docker和Kubernetes,这是当前云计算领域的核心技术之一。 5. **自动化部署工具**:熟悉Ansible、Puppet...
标题 "proxmox 个人学习资源" 涵盖了Proxmox VE的相关学习资料,这是一个基于Debian的开源虚拟化平台,集成了KVM和LXC容器技术,提供了强大的虚拟化解决方案。这个压缩包中可能包括了作者的学习笔记、教程、配置示例...
广东开放大学是一所以现代信息技术为支撑,面向全社会提供远程开放教育的新型高等教育机构,其...总的来说,广东开放大学为学习者提供了广泛的学习机会和个性化的学习路径,鼓励终身学习,促进个人和社会的持续发展。
这篇论文《基于容器技术的机器学习计算平台设计与实现》主要探讨了如何利用容器技术,特别是LXC(Linux Containers)来构建一个适应普通高校使用的计算平台。LXC是一种轻量级的虚拟化技术,它允许在单一操作系统上...
“新手利器”暗示该软件可能有良好的学习曲线和丰富的教程资源,帮助新用户迅速掌握其使用方法。 【标签】"SAFE"直接关联到软件的名字,这通常是一个缩写,可能是"Secure Application for Enterprise"的简称,强调...
lxc-libs-1.0.11-1.el6.x86_64.rpm lxc-1.0.11-1.el6.x86_64.rpm lua-lxc-1.0.11-1.el6.x86_64.rpm lua-filesystem-1.4.2-1.el6.x86_64.rpm lua-alt-getopt-0.7.0-1.el6.noarch.rpm libcgroup-0.40.rc1-26.el6.x86_...
1. 环境准备:确保所有目标主机符合硬件需求,安装好必要的依赖如Python、LXC等。 2. 编写Playbooks:根据OpenStack组件和实际需求,编写或定制Ansible Playbooks。 3. 测试与调试:使用dry-run模式运行Playbooks,...
1. 容器创建:你可以通过Ruby-LXC创建新的容器实例,指定其基础镜像、大小和其他配置参数。这使得快速部署和复制一致的环境成为可能。 2. 容器配置:Ruby-LXC提供API来修改容器的配置,如网络设置、存储配额、CPU和...
1. 安装Proxmox VE Proxmox VE 的安装可以在多种硬件平台上进行,包括老旧的服务器和新旧不一的PC。在安装过程中,用户可以通过Web界面进行大部分的配置工作。安装后,可以通过Web界面(默认访问地址为***)来管理...