文档章节

测试环境用LXD替换掉了KVM

Feng_Yu
 Feng_Yu
发布于 2016/10/16 19:56
字数 2503
阅读 429
收藏 5

生命不息,折腾不止。在折腾中成长,在踩坑中进步。

前言

不错,再一次折腾了一把,这次是把测试环境的hadoop集群从KVM中迁移到了LXD容器中。目前运行很稳定,这次就来分享一下这次的体会和一些感受吧。

由于这篇blog并不是纯技术文章详细介绍LXD搭建和维护的,只是谈谈使用的一些感受体会,所以不会有详细的安装和使用的过程了,感兴趣的读者可以找官方文档去实践。不过这玩意目前来看文档确实比较少,好在使用特别简单。

LXD vs KVM

关于KVM可能很多人都不陌生,谈到Linux下的虚拟机,津津乐道的就属KVM和XEN了。这里我不打算对KVM进行拓展了,关于市面上KVM的资料已经烂大街了。测试环境少不了虚拟机,通过虚拟化隔离资源的特性,可以充分利用物理机的资源,扩充机器数量。不过当初研究KVM的时候,着实痛苦了一把。配置相对繁琐,为了性能还需要启用部分硬件的半虚拟化支持,当时记得还买过一本《深度实践KVM》研读来着。

现在具体谈谈LXD吧。不得不说,宣传也是很重要的一项工作,Ubuntu对这玩意的宣传可以说不遗余力,很多地方都能看到LXD的消息。我个人比较喜欢Ubuntu的一些技术,平时也关注一些Ubuntu社区的动向。在我看来,ubuntu的更新节奏较快,总是能尽快的吸纳新的技术用于生产,跟着Ubuntu的节奏总是能尽快的接触到新奇有趣的东西。LXD也是ubuntu的母公司Canonical的开源项目,自然在Ubuntu的相关主页上是各种强推的(一样有此待遇的还有snaps安装包,不过我还没抽出时间去折腾,因为这玩意目前对我的吸引力还远没有达到LXD的地步)。而且又是容器级虚拟化的技术,在2013年底我开始自学Docker的时候就接触过容器虚拟化技术,对我而言也不算太陌生。由于docker的好感度,所以我对LXD的技术就比较容易接受,也比较信赖这玩意的性能(docker最早宣传的就是容器级虚拟化的性能)。于是就有了后来的逐步探索。

至于LXD的周边支持问题,当然现在还没法跟流行已久的KVM,XEN相比,更别提开源新星docker了,所以想大规模用于生产的话还需谨慎考虑。目前只有nova有LXD驱动支持,也就是说能用OpenStack管理,至于其他流行的管理工具,目前还是空白(不过看到社区已经有人给kubernetes递交issue请求支持LXD了)。未来也许会有更多的支持加入。

这是LXD官方(Ubuntu)的一篇吹嘘文章: https://insights.ubuntu.com/2015/05/18/lxd-crushes-kvm-in-density-and-speed/

老实说,也正是这些文章比较多(也许是软文?),让我下定决心实际应用一下。

关于使用体验

这篇blog我并没有打算详细介绍安装和使用方法,这些官方文档都有,也不难,我只说说体会。

首先是,简单,清爽。没错,安装过程确实简单,几乎0配置,配置项也不多,相比kvm和xen那些繁杂的配置项来看,的确清爽了许多(本来也就是直接使用了真机的硬件,自然相比全虚拟化和半虚拟化的技术要少了好多关于硬件的参数)。安装包容量也不大,装一个lxd以及lxd-client软件包就行了。使用也足够简单,命令行的那几个参数一眼就能看出含义,不用费心的去猜想含义。

其次,是管理的方便。直接在命令行下就可以同时操作本地和远程仓库。搭建私有仓库也极其便利,非常类似于git的那种分布式操作,子命令remote的使用方式和参数几乎也跟git remote如出一辙。在这个节点上的镜像天生就能直接被其他节点访问,同时启动成容器。

最后,是胖容器本身的一些特点。同样是容器级虚拟化技术,docker是所谓的瘦容器,讲究一个容器只跑一个进程,这个进程的pid是1,更像是一种临时的,无状态的存在,并不考虑升级和更新,而是整个替换掉。所以docker的镜像要求一般是尽可能的精简,以减少传输的负载。可以发现docker的镜像仓库基本提供的都是服务。而LXD基于LXC这种胖容器技术改良,给你提供的镜像基本都是操作系统基本的rootfs,是没有docker的这种限制的,对外的表象更像是一个完整的虚拟机。你可以像KVM那样,把所有的依赖以及操作系统打包成一个镜像运行,某些依赖比较重的程序,无法用单进程运行,不适合在docker中跑,但在LXD的容器中就没问题了。

更令我震惊的是,LXD的镜像不但表现的像虚拟机一样,甚至还支持创建快照和dump内存这种虚拟机才有的功能。LXD的快照功能是可以连内存状态一并保存下来的,就是那种虚拟机基本都支持的快照恢复功能。同时还支持暂停/恢复容器(pause/start)的功能,简直虚拟机有的几个强大的功能这玩意几乎都有,而且比虚拟机更加轻量。

速度快。这个无需多言,用过docker的人都知道,秒级启动。

资源在线配置,无需停机重启。得益于容器虚拟化的轻量设计,完全可以在线调配资源不用重启。我试过对运行中的容器重新分配CPU,内存,甚至调整硬盘空间等,都不用重启容器,即改即生效这个特性就已经比虚拟机爽太多了

底层依赖十分前卫

这个话题单独拎出来说,因为这个是我最大的一个感受。

首先先看看官方对于LXD特性支持的表格,几乎LXD的主要特性都得ZFS来支持,同时ZFS还是LXD的推荐存储引擎。ZFS本身是一个非常先进的文件系统,但是一直没有稳定到投入生产环境使用,在我印象中似乎只有Ubuntu 16.04这个Linux发型版才把ZFS加入了默认支持的文件系统。

要想LXD玩的爽,只能在Ubuntu 16.04以上版本体验,想在14.04 LTS上运行,得加几个ppa仓库了,比如zfs-stable, lxd等等(顺带一提,中科大开源镜像站提供ppa的反向代理加速)。一些更cool的特性比如LXD容器中运行docker容器,在线迁移容器等,甚至还要Linux内核版本4.4以上(Ubuntu 16.04自带,Ubuntu 14.04需要安装linux-generic-lts-xenial),而某些特性即使Ubuntu 14.04 LTS从zfs-stable这个ppa安装了zfs模块之后,也无法使用。不过总体来说,Ubuntu 14.04运行LXD基本还是够用的,一些极少会用到的功能和特性并不影响实际体验。

目前遇到的几个问题

先要有一个前提认知,这是在容器中操作,资源会受到限制,不是什么文件都能改,什么资源都能读取的,这个和docker是一样的。有些权限需要开启security.privileged: "true"这个参数的。总体并没有虚拟机那么自由,无拘无束。不过对于测试环境只是需要简单的隔离环境这种需求来说,是足够用的。

第一是swap的问题。目前的lxd的容器配置参数中并未提供swap容量限制的参数,仅有enabledisable,即使disable,在容器中依旧会看到swap,我咨询过官方(见此issue),原来只是vm.swapiness=0而已,并非卸载掉swap。

其次是有些软件识别可能会出现问题。比如我用的cloudera manager管理hadoop集群,会发现容器中的内存显示的不对,显示出来的每个节点都是真机的内存,而不是容器中用free命令看到的内存,同时,群集IO也无法显示,日志中会报一些permission denied的错误。

最后是目前来看,提供LXD/LXC镜像的仓库实在是少。ubuntu自然不用多说,官方直接在ubuntu-clouds仓库提供官方支持与维护。而其他操作系统的镜像基本只能在linuxcontainers.org找到一份托管,大多还不是官方维护。(顺带一提,清华大学tuna镜像站提供LXD/LXC镜像仓库的镜像加速)

后记

总的来说,LXD还是给了我太多惊喜,大大超出了我的预期。我已经把个人环境使用的Linux虚拟机(主要是ubuntu和centos)都换成LXD了,启动速度快,功能一点不比虚拟机差。当然,没图形界面,容器中跑图形界面也没那么方便,还得跑个vnc服务。

至于参考资料,还是官方开发者的那个教学最有参考价值,国内有翻译版本,不过没有翻译完: https://www.stgraber.org/2016/03/11/lxd-2-0-blog-post-series-012/

以后等LXD操作更加便捷的时候也许会写个blog详细总结下LXD的一些操作使用。

© 著作权归作者所有

共有 人打赏支持
Feng_Yu
粉丝 157
博文 38
码字总数 45571
作品 0
西安
运维
私信 提问
Ubuntu精简缩小版Minimal Ubuntu

Canonical推出了Ubuntu精简缩小版Minimal Ubuntu系统, 专为公共云和Docker Hub优化, 比标准Ubuntu Server镜像小50%以上,引导速度提升40%。Minimal Ubuntu系统仍与标准的Ubuntu软件包兼容,用...

marsdream
08/02
0
0
Ubuntu 16.04 发布代号:好客的非洲地松鼠

按照北美时间来算,Ubuntu 15.10 将会北京时间10月23日发布,也就是明日凌晨的样子,即使这个版本还未发布,Ubuntu就已经马不停蹄的着手下一个重要版本了,来自 cnbeta 的消息,Canonical和U...

oschina
2015/10/22
6K
39
OPNFV发布新版本 将DevOps引入NFV

  【IT168 资讯】OPNFV项目,是一个开源项目,通过协作上游开发,集成,部署和测试,促进各种开源生态系统网络功能虚拟化(NFV)组件的开发和演进。近日,OPNFV宣布推出OPNFV “Danube”(多瑙...

it168网站
2017/04/13
0
0
研究openstack中libguestfs密码不能注入到lvm分区镜像中问题

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息。 Better Me的博客:blog.csdn.net/tantexian 如需交流,欢迎大...

tantexian
2016/03/29
78
0
kvm 虚拟机磁盘误删除怎么恢复

大家好,今天在操作 kvm 物理机的时候,不小心把物理机存放 kvm 虚拟机的磁盘给删除掉了,虚拟机还在启动这,怎么样才能恢复删掉的虚拟机磁盘

萌腼峡
09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

axios 请求格式

默认是application/json 这里提交的参数变成了json格式 原先的应该是这样子的 Form Data 里面的不一样 解决方法:https://github.com/axios/axios#browser...

大灰狼wow
13分钟前
0
0
TableStore轻松实现轨迹管理与地理围栏

一、方案背景 轨迹管理系统日常生活中使用非常普遍,如外卖派送轨迹、快递物流流转、车辆定位轨迹等。该场景与地理位置管理类似,核心点与瓶颈都在数据库的存储性能与查询能力,同时需要时间...

阿里云官方博客
29分钟前
1
0
WiFiMesh-ESP8266

Arduino Library for creating a mesh network with ESP8266 WiFi chips

whoisliang
36分钟前
0
0
并行执行器

工作中出现某些代码需要并行执行以提高程序运算速度的情况,所以写了一个小工具。 public class Main {public static void main(String[] args) {// 你可以通过注释下面的部分代码来探索...

wanxiangming
58分钟前
2
0
Microsoft Remote Desktop For Mac

地址:https://rink.hockeyapp.net/apps/5e0c144289a51fca2d3bfa39ce7f2b06/ 解决国内App store不能下载的问题。

Cheuker
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部