Tags Linux
2015-03-04 10:56:21
从刚上大学开始研究Linux,一直以来我都很享受Linux给我的工作带来的便利性。
同时也享受着Linux的多样性,百家齐放的开放性。但是由于各种原因,能支持Linux运行的PC厂商还是不多。
预装Linux的PC更是少之又少。在很久以前甚至爆出了Nvidia不支持笔记本电脑双显卡的驱动问题。
因此在本文中介绍一些如何使用虚拟化技术使得Linux的使用更加人性化
,更加适合新手对Linux的了解与
学习,更加适合在pc中配置灵活的生产环境。在这里我们使用虚拟化的手段让Linux更小更轻更灵活。
经过一段时间的总结,我个人认为,在PC机目的为学习于开发更适合使用虚拟化主机。
截至目前这段时间来看,Cygwin以及Minigw开发平台在windows上的表现在我看来是非常不错的。 如果是想自己开发项目还是非常靠谱的一个平台。但是我尝试过编译各种开源库,几乎没有很顺利通过的时候。 不但浪费大量的时间还影响了心情的舒畅,那酸爽,大家懂得。与此同时通过很多朋友的描述不管是群里的 或者是mailling list里面的表现出来对Linux的热情不乏尝试部署安装Linux到PC的朋友。他们在开始的 时候就要遇到适合windows8或者以上版本的硬件系统,但是这种电脑对于装Linux不是非常友好。 尤其配置一个双系统启动的grub十分麻烦。因此我在这里建议大家灵活使用虚拟化,把问题化繁为简。 至于性能问题,只要没有图形界面性能几乎感觉不到。而且会获得很多好处。比如说安装方便。在虚拟机中的 Linux会分为不同的目的预装不同的软件在里面会让系统更小更轻更快。同时还可以容灾备份。减少重复配置 环境的工作,也利于再次通过虚拟机硬盘打包的方式再次分发你的环境。
本章节中给大家带来我日常使用Linux的情景。当然非专业人员可以略过。 从技术角度上来讲,本章节主要介绍低性能情况下处理业务的工具以及注意事项。
awk
来完成我们的需求会非常方便。数据的处理方面的优势主要是windows与Linux对比的优势。接下来讲一下虚拟机的优势。
在搭建应用服务的时候并没有什么不同,只是无法满足配置的多样性。 举一个灵活应用的例子,一个具体的web项目拿来之后要选择那种httpserver在同样的配置下支持并发更高一些。 首先找到一个封闭的隔离的环境就比较困难了,平时几乎没有那么多空闲的服务器来做测试。 其次,先配置一个基础的环境,之后在配置差异化的环境会节省很多时间。
在极端环境下的测试,一旦把环境弄坏可以迅速的恢复环境的正常情况。 比如说在一个计算项目中尝试修改各种各样的Linux底层库,一旦make install之后很难卸载干净。 如果直接恢复可能会造成测试接货不准确。
举一个真实的例子,平时我就有准备虚拟化的开发环境。 我有一个image 内容包含ubuntu Server下Mysql + Mongo 已经更新到最新版本。 同事A找我快速配置一个go PPROF 性能测试图表输出的环境(需要配置Graphviz 输出svg 来做性能分析) 同事B找我快速配置一个NGINX多网站绑定域名的反向代理服务器。 做完之后很快就可以在服务器上部署了。有点像docker 镜像可以继承。 但是与docker不同的是,可以运行多个进程,还有文件系统上的不同。
很多应用一上来是不太可能直接就用正在生产的集群服务器做测试的。 想测试分布式或者并行计算的程序性能,bug只能在虚拟机上进行。 这个没得选。
Linux推荐的配置:变数。根据业务的不同随时调整配置。做到不浪费,按需配置的好习惯。 但是对我来说适应情况最好的是: 1核心 256-512MB内存 不带图形界面 这种配置,一般的PC都可以开4个左右的虚拟机。
宿主机于虚拟机交互问题 三个服务: SSH SAMBA NFS 基本上就够了。
使用虚拟机给人的第一个感觉会是性能比较差。同事数据吞吐量比较小。 要想解决这个问题其实非常简单。 1. PC机上的虚拟机一般情况下不会是生产环境。 2. 需要给解决的问题做的更加抽象一点,或者计算Load做的小一点。 3. 一般情况下问题抽象化是最好的解决问题的方法。
经过很长一段时间的实战发现。虚拟机下的Linux还是有很多优势的。 至少很多软件不用自己来回百度去找去下载。(apt,yum 等工具实现的) 很多好用的工具都是免费的,从找到安装只需要一个命令。 因此最高性价比的开发工具选择Linux虚拟机是最高的。 但是也有很多问题无法解决,比如说PC机上是无法做intel 安腾 系列CPU程序的调优因为需要使用ICC/ICPC编译器。 做业务的SIMD处理粒度选择。 最后希望大家早点下班。