【Linux故事】Linux的核心就是选择、控制和学习新知识
在同事向我介绍使用GNOME的Red Hat 6之前,我其实对Linux不是很迷恋。之后,连忙试用了一系列不同的发行版,包括Mandrake Linux、原版Debian和Knoppix。有一段时间,我经常双启动进入到Windows 2000和Knoppix,但后来发现:越来越多的是,除非我需要Windows管理服务器,否则不会启动进入到Windows。
我很快就迷上了Linux,以至于想看看要是完全丢弃Windows会怎样。那时我在双启动Mandrake;由于之前做过大量使用Borland Delphi开发的工作,于是我开始先捣鼓起Free Pascal和Lazarus。我清查了一下自己使用哪些应用程序,结果发现其实唯一需要Windows来处理事务的是Microsoft Money。我查看了GnuCash后,它在我眼里实在太像商业会计软件包了。于是我决定自编程序;又由于我热衷于Linux,决定它应该是开源免费程序。我用了两周的时间编写出了第一个版本,命名为“CheckBook Tracker”。
2003年,我将该程序发布到Freshmeat.net(现在的freecode.com)上后,惊讶地发现许多人问我“为什么你免费赠送这个软件?”或者“你完全免费能得到什么实惠?”我的问答始终是“鼓励人们使用Linux。”大概有七年的时间吧!我一直用CheckBook Tracker来平衡收支,直到后来不再开支票为止。遗憾的是,现在这个项目已停掉了,但是源代码仍在那里。我偶尔还会收到有人发来的电子邮件,请教相关问题。
我继续从事IT支持方面的工作,开始使用一个特殊的小巧Linux,为客户安装基于软盘的互联网防火墙,开始看到在公司企业使用自由开源软件(FOSS)的优点。尽管那时Linux桌面仍并不适合普通人,要是出现了需要解决的技术问题,通常可以找到一个解决这个问题的开源项目。
2004年,我进入EvriChart公司,担任IT主管。后来,公司规模变得很大后,我的头衔换成了CIO。这让我有机会在早期阶段将整套IT基础设施往我希望前进的方向推进。一开始,我们有六名员工和一个为减少电话开支而开发的Asterisk电话系统。我停止了双启动,在办公台式机上完全丢弃了Windows。我仍运行Mandrake 10.1;到2006年,决定换成Ubuntu 6.06 Dapper Drake。此后我基本上就用Ubuntu。最初是由于桌面管理工具似乎更容易使用。现在,由于我们更加离不开业务应用软件,比如OpenLDAP、Gluster、PXE和Puppet,我慢慢改成了Fedora。
随着我们在EvriChart不断增加技术,我总是首先找Linux寻求解决方案。正由于如此,在这10年间,我们省下了估计超过40万美元的软件许可证和专用硬件费用。其中大部分是服务器操作系统许可证和存储系统,但也有我们用PHP自行编写的软件,而不是购买商业产品的许可证。
虽然我们确实有少数几台机子运行Windows,但总是根据要求来决定DD比如驱动特定的企业扫描硬件或公司需要某个特定版本的微软Office。我们的域基础设施搭建在OpenLDAP验证系统及Samba服务器之类的系统上,以便验证个别Windows用户的身份。我们有几个内部开发的应用软件,我们用来处理图像和工作流程,它们都基于Web服务器,主要是用PHP编写而成的,那样它们就能做到与客户软件无关。我们如同使用乐高积木那样使用Linux和OSS,使用一点脚本(充当粘合剂)将不同的项目组合起来,那样我们只要花极少的时间和精力,就能获得完全定制的系统。
Windows和专有文件管理系统力不从心
早期促使我们完全改用Linux来处理图像的一个因素是由于我们当时使用的基于Windows服务器的文档管理系统。我们当时面临困境:我们在过去几年花了2.5万多美元的那套商业应用软件根本力不从心DD仅仅为了保持正常运行,我们每天就需要清除数据,要么它就是不堪重负。这促使我们开发自己的解决方案,再次使用Linux和各种开源应用程序,就像积木那样:我们使用一些PHP代码和Web接口把它们结合起来。之后,我们的DocStore文档管理系统引擎就这样问世了。
由于我们并没有被任何遗留系统所束缚,能够使用更现代化的技术,从头开始进行开发。我们研究了Flickr和Facebook是运作其基础设施的,Reddit的Alexis Ohanian和Steve Huffman在弗吉尼亚做一场报告时,我有幸结识了他们俩,了解了他们是如何处理网站生成的庞大流量。正是与Alexis在基础设施设计方面的一番交流让我受益良多,得以清楚瓶颈在哪里,如何避免这些瓶颈。因而,我们设计出了单一文档库,必要的话,只要为系统添加更多的组件(积木),该文档库就可以满足美国每一家医院的所有文档存储要求。
为了确保高可用性,我们尝试了几种系统,但是最后选择了结合用于文件存储的ZFS和Gluster、异地复制的在线备份以及用于数据库管理和异地复制的Galera及MariaDB。所有数据都用AES-256加密,那样不仅磁盘故障后,我们能存活下来,就算服务器故障、甚至整个数据中心故障后,照样也能存活下来。
我们的五处地方使用OpenVPN连接起来,我们还实施了一套自定义的iptables + Packetfence网络访问控制(NAC)系统 ,用于内部网络控制,还在网络边界部署了自定义的iptables防火墙。我们是用大众化服务器硬件和Linux搭建好这一切的,成本极少DD我们的网络上根本就没有一个专有的“黑盒子”设备。在去年,我请厂商为把我们的一些高可用性基础设施换成商业数据存储产品报个价,结果发现,仅仅复制我们只花了2万美元的硬件和Linux做成的系统,最低报价也要30万美元。
Linux易于使用,谁都可以安装,甚至是无意安装!
我们使用PXE网络安装服务器和Puppet系统,这让我们用不了10分钟就能搭建好一个新的Linux桌面,而且完全不用插手。我们常常经历成长阶段:我们突然需要部署多个新的桌面,而这套自动化系统为我们的工作人员省掉了好多工时。
有一天,有个用户安装的Windows突然在其笔记本电脑上出现了损坏,她无意中安装了Linux,结果给了我们一个惊喜。她的笔记本电脑无法从硬盘启动后,居然从网络自动启动。她看到PXE安装屏幕后,就按了回车键,Linux桌面自动安装上了所有的默认网络安全设置和应用程序。然后,她用其网络帐户登录进入到里面,发邮件给我,说她的Windows已更新,她想知道为什么微软Office现在看起来大不一样,“原来的Outlook跑哪里去了?” Linux居然如此容易,现在无意中也能安装和配置它,哪怕是在笔记本电脑上,为此我们大笑一场。
我本人的安装系统
我本人的安装系统包括:Gnome 3、Chrome、LibreOffice、PhpStorm、MySQL Workbench和ClusterSSH。我使用的工具几乎都是基于Web服务器,比如用于开发工作的Jira及Stas、phpLDAPadmin、CUPS、BandwidthD、Ganglia以及用于管理和监控的LogAnalyzer。我还使用ownCloud,它可以为我在诸多设备之间同步我的KeePassX数据库文件。
我是游戏迷,Linux最近在游戏领域崭露头角,并取得了长足进展,这让我挺兴奋的。我运行Valve的Steam平台,最近在空余时间你能看到我在网上玩《方舟:生存进化》、《杀戮空间2》或《虚幻竞技场2015》测试版游戏。我目前拥有通过Steam为自己和孩子们购买的61款商用Linux游戏;虽然我在家里仍安装了一套Windows系统用来玩游戏和处理摄影作品,但还是期盼哪一天不需要用它。
在我看来,Linux的核心就是选择、控制和学习新知识。我认为,这是对一些人来说Linux不是那么“容易”的一个原因。一些人更喜欢就只有一个按键的鼠标,因为不容易搞糊涂。但本人还是宁可使用有20个键的鼠标,以获得更大的灵活性,花上几个钟头来摸索用法。没错,我运行Gnome 3是因为我喜欢它,而不是因为我不得不运行它。