Linux各发行版本优缺点点评

Linux最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。

  Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:

  Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

  Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing和unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get /dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)

  Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。

  Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。

  最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对新硬件的支持没有Linux完备,所以并不适合作为桌面系统。

下面给为选择一个Linux发行版本犯愁的朋友一些建议:

  如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。

  如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!

  如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。

  如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。

  如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。

深解CentOS系统单用户模式

通过对CentOS系统长时间的学习,我们懂得了更多知识,CentOS系统处于正常状态时,服务器主机开机(或重新启动)后,由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务。如果系统管理员需要进行系统维护或系统出现启动异常时,就需要进入单用户模式或修复模式对系统进行管理了。

使用单用户模式有一个前提,就是您的系统引导器(grub)能正常工作,否则要进行系统维护就要使用修复模式。特注:进入单用户模式,没有开启网络服务,不支持远程连接

CentOS系统中不同的运行级别(Run Level)代表了系统的不同运行状态,例如 Linux 服务器正常运行时处于运行级别3,是能够提供网络服务的多用户模式;而运行级别 1 只允许管理员通过服务器主机的单一控制台进行操作,即“单用户模式”。

以CentOS系统为例:

CentOS系统进入单用户模式

进入单用户模式的前提是CentOS系统引导器能正常工作。下面以 GRUB 为例说明进入方法。在 GRUB 启动菜单里有“a”、“e”和“c”三个操作按键,使用这三个按键均可进入单用户模式。

使用“a” 操作按键进入单用户模式—推荐:简单操作

这是CentOS系统进入单用户模式最快速的方法。在 GRUB 启动菜单里使用 “a” 操作按键编辑 kernel 参数,在行末输入 single ,以告诉 Linux 内核后续的启动过程需要进入单用户模式,回车即可。

进入单用户模式之后

当CentOS系统进入单用户模式时,不需要输入用户名和口令,CentOS系统启动完成后将直接获得管理员 root 的权限,控制台的提示符为“#”。

单用户模式下的控制台界面

在上面的启动信息中有一条信息很关键: Remounting root filesystem in read-write mode:[OK]表示此时单用户模式下的根文件CentOS系统处于可读可写状态。只有根文件系统是可读写的,CentOS系统管理员才能对系统进行维护。若系统的配置与脚本文件出现错误,单用户模式下的根文件系统进入“read-only file system”只读状态,此时,可以使用如下命令以读写方式重新挂装根文件系统:

以下是代码片段:
sh-3.1 # mount -o remount rw -t ext3 /
当 CentOS系统进入单用户模式后,由于已经停止了任何网络服务和网络配置(网络接口无效),不会有任何其他人(通过网络)干扰CentOS系统的运行状态,管理员可以放心的对CentOS系统进行系统级别的维护操作。在单用户模式下 CentOS系统除了不具备网络功能外,是功能完整的操作系统。在单用户模式下可以进行如下的维护和管理工作:

重新设置超级用户口令

维护CentOS系统的分区、LVM 和文件系统等

进行CentOS系统的备份和恢复

单用户模式的一个典型应用是 root 用户的“口令设置”。对于一些临时使用或实验用途的 CentOS系统,经常会更换使用者,而 root 用户的口令可能会被遗失,这时可以进入单用户模式更改 root 用户的口令。

以下是代码片段:
sh-3.1 # passwd
Changing password for user root.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

当CentOS系统进入单用户模式后,在“#”提示符下执行 passwd 命令可以更新 root 用户的口令,当CentOS系统重新启动后就可以使用已更新的口令以 root 身份登录系统了。

微软将在Hyper-V中支持红帽Linux

微软将在Windows Hyper-V中支持红帽Linux作为客户操作系统,但在近日的OSCON 2011上,微软对这一新闻持沉默态度,可能是因为人们对Windows巨人企图进入开源的愤怒还未消退。

OSCON参会人兼软件架构师Bryan Davis并不受感动,他说:“相同的事情,不同的日期罢了。微软把开源为它们封闭系统上的免费插件,核心技术是占用和创建进程。”

随即Twitter上软件开发员Luke Closs回应了这样一条评论:“关于微软在#OSCON#上的主旨:这是个陷阱!”

其他人称微软的动机实际是自利。SkySQL的CEO Uls Sandberg说:“这很简单。微软这么做是要赚钱。”

在某大型科技公司就知的一句经理也有相似的指责,他的公司支持多厂商的IT部署。他通过电子邮件说:“如果IT商店真得进入混合环境,无论怎么说VMware也有机会。Hyper-V确实不仅仅是一个微软独有的产品,IMHO不只是支持CentOS,RH也不是一个标准操作程序,只会说‘看,我们确实热爱开源,所以考虑我们作为VMware的竞争对手’而不只是想要支持其它人的系统吧”。他说,“我没有看到微软在Linux上放了太多精力。和我谈过的人没有谁对它的前景感到兴奋。RHEL KVM似乎会在我生活的圈子中产生更大的影响。”

但是,微软开源社区的高级主管Gianugo Rabellino尽最大努力招揽OSCON参与者,他强调很多客户同时运行Linux和Windows,且在“混合IT”这个时代里的互动性也因此有必要了。

沿着相同的路线,微软将其SUSE Linux的互操作协议(现在由Attachmate代替了Novell)延至2016年。在这期间,微软同意在新的Linux企业级证书上投资1亿美元来让客户得到来自SUSE的Linux支持。

考虑到微软的大动作地推进,红帽的Linux-Hyper-V新闻并不让人惊讶。年初时,微软称将支持CentOS作为Hyper-V中的来宾操作系统。

Rabellino还谈到其它例子阐述微软的公民资格,包括它支持Drupal和Joomla开源内容管理系统的工作。微软还发布了用于PHP的Windows Azure SDK 4.0版本和在云中实现PHP应用开发的新工具。

但是,Rabellino想通过兜售Apache Software基金会成员来吸引观众的企图加上他在微软相对来说还很短的任期,他并没有影响到更多愤世嫉俗的与会者。

轻松升级CentOS 5.6到CentOS 6.0

RedHat Linux 的社区免费版本 CentOS 6.0 于7月11日正式发布。CentOS 6.0 基于上游的 RHEL 6.0 制作,同时基本包含了所有的上游软件包。CentOS 完全遵守上游供应商的再发行政策,并且以百分之百的软件兼容性为目标。

准备工作

  • cat /etc/redhat-release,查看版本
  • uname -a – 显示版本和内核信息
  • rpm -q kernel – 显示内核版本
  • yum -y update – 升级所有应用版本,更新CentOS到最新镜像版本

备份MySQL

首先备份MySQL,方法多种,下面介绍一种标准方法。

#1,导出MySQL数据库内容

mysqldump --user=root --password=passme db_1 > db_1.sql

#2,导入备份内容到新的版本

mysqldump --user=root --password=passme db_1 < db_1.sql

#3,相关命令查看运行的Mysql:

mysql -u root -p

列出所有已安装应用

yum list | grep installed > installed.txt

备份文件和相关配置

tar cvf /backup.tar /root /home /var /etc

在CentOS 6中解压文件

tar xf backup.tar

保留用户和组

备份下面这些重要文件:

  • /etc/passwd – 包含用户和主目录信息
  • /etc/shadow – 包括每个用户的密码信息
  • /etc/group – 每个用户组的信息
  • /etc/gshadow – 每个用户组密码信息

Facebook打造高密数据中心 启用Tilera

脸谱网站可能从不认为自己是一家社交网络公司,但是对于业界新贵-服务器处理器制造商Tilera来说,社交媒体巨头脸谱公司内部用来执行Memcached工作负载的至强和皓龙处理器相对Tilera来说确实是种暴利。

  脸谱网站可能从不认为自己是一家社交网络公司,但是对于业界新贵-服务器处理器制造商Tilera来说,社交媒体巨头脸谱公司内部用来执行Memcached工作负载的至强和皓龙处理器相对Tilera来说确实是种暴利。

脸谱公司在美国佛罗里达州奥兰多市召开的国际绿色计算大会上带来的Memcached性能说明书详细介绍了脸谱公司是如何对目前搭载TilePro64多核处理器与配置英特尔至强处理器和AMD皓龙处理器的标准服务器进行对比测试的。

Tilera, SeaMicro和Calxeda等公司一直以Hadoop大规模数据计算和Memcached Web高速缓存来宣传微服务器,但在提及运行这些分布式工作负载时,由功能强大的大型处理器核心所承担的超大规模互联网工作负载并不总是像智能互联网和核心设计那样重要。

研发了高密度集群(基于双核64位凌动服务器,一个10U机箱中容纳了768个核心)的SeaMicro公司最近展示了这个服务器集群某些Hadoop离散数据计算的能力,并与搭载至强处理器的服务器性能进行了对比。他们用于测试的SM1000服务器运行的是真实世界的Hadoop工作负载,成本比至强服务器集群的费用降低了大概25%,机架占用空间仅为至强服务器集群的四分之一,能耗也仅为至强服务器集群的四分之一。

Memcached由Danga Interactive在2003年作为分布式网络高速缓存而创建,可以用来存储主存中的数据并使用网络服务器和应用软件。Memcached曾经被称作是key-value store,目前只有由脸谱,推特,Zynga, YouTube, Reddit, Flickr和一系列超大规模互联网公司用来为数百万用户提供数据,无需等待硬盘来完成这项工作。

Tilera公司的云计算应用软件总监Ihab Bishara在接受采访时表示”众所周知脸谱公司是Memcached的霸主,就我们目前掌握的数据来看,他们运行着世界上数量最庞大的Memcached服务器。他们是我们在过去一年半时间来主攻的一级用户”。

Bishara没有谈及有关脸谱公司的服务器计划或者脸谱公司是否已经安装了由Tilera旗下的Quanta Computer制造的Tilera服务器。当然Quanta是一家台湾的个人计算机和服务器制造商,他们刚刚和脸谱公司结成联盟,帮助脸谱公司制造他们自己的开源开放式计算服务器,这些服务器已经在于今年四月在脸谱公司位于俄勒冈州Prineville的数据中心投入使用,预计今年夏天英特尔和AMD推出最新的至强E5和皓龙6200处理器之时进行升级。

脸谱公司在Quanta QS2机架服务器上进行了Memcached测试,也就是大家所熟知的QSSC-X5-2Q,在一个2U机架式机箱中配置了8个处理器,核心总数达到了512个。

每个处理器作为一个单个的节点使用,因此Quanta服务器确实是一款8节点的微处理器。32位TilePro64处理器中的四个核心被分配给LINUX操作系统使用,剩余的其他60个核心用来运行Memcached工作负载。由MIPS体系架构派生出来的核心频率为866MHz,有互相连接的网络来连接核心内部的内存和输入/输出。TilePro64服务器节点的主存容量为32GB。

脸谱公司选择搭载Tilera处理器的Quanta服务器与配置主频为2.27GHz的英特尔四核至强L5520处理器和主频为2GHz的8核皓龙6128HE处理器的不同服务器进行对比。这两种X64处理器都是低电压,低功率。脸谱公司在32GB主存的单路1U机架式服务器和64GB主存的双路1U机架式服务器上分别进行了测试。

所有这三款机型运行的都是2.6.33 kernel和Memcached 1.2.3h的CentOS Linux操作系统。

脸谱公司的性能说明书中包含了非常详细的Memcached性能信息,描述了TCP和UDP协议对这些不同机型的性能是如何造成影响的,但是下面的图示是这些机型最直观的写照:

  图示:皓龙,至强和Tilepro64服务器上的Memcached性能

  正如你所看到的,X64服务器在执行Memcached扩展时,每秒钟传输的能力并不是非常出色。举例来说,在皓龙采取上,超出四个核心却是会影响到性能,要增加一个二级中央处理器来保证精确。

至强处理器的表现要好一些,但是也需要增加一个二级处理器来加以辅助。最好是扩展到多个单路皓龙或者至强节点-就像Quanta用Tilera处理器所做的那样。

但是很显然的一点是,至少与低电压低核的皓龙处理器和至强处理器相比,拥有30个核心的TilePro64处理器可以满足或者胜过这些X64处理器的性能。专用于Memcached的60核TilePro64处理器则完胜X64处理器。

显然英特尔和AMD处理器比这些处理器要更加现代。但Tilera处理器刚刚推出Tile-Gx 3000系列的64位36核处理器,最终最高可以扩展到100核心。

性能只是公司吸引脸谱的一个方面,耗电和散热(两者同样重要)物理体积和成本也是脸谱要应对的问题。脸谱公司在他们的性能说明书中对电源使用也做了说明。根据所测试机型所预估的性能,以下图示是各个机型的耗电情况:

  图示:Tilera 和 x64服务器的性能和能耗

  根据这些测算结果,脸谱公司推断出构建256GB的Memcached集群需要多少节点,然后从性能和能效上来看,Tilera处理器也超过了英特尔和AMD的处理器。

搭载TilePro64处理器的8节点Quanta服务器每秒可以处理268万TPS,耗能462瓦,每瓦性能为5801TPS。四节点皓龙服务器集群执行Memcached工作负载时每秒可以处理66万TPS,耗能484瓦,每瓦性能为1364TPS。四节点至强服务器集群(主存总容量为256GB)比皓龙处理器的表现的出色一些,每秒可以处理75.2万TPS,耗能也要低一些,为400瓦。但是这种四节点至强处理器每秒的性能只有1880TPS。还不到TilePro64处理器服务器每瓦性能的三分之一。

综上所述,与4U的X64服务器相比,TilePro64处理器最高只需占用2U的使用空间。

初探CentOS 6.0

作为一款服务器版Linux操作系统,CentOS想必是没有Ubuntu那样得到普通用户的追捧。但是,如果你或者你身边的朋友作为企业IT管理员,则对于CentOS一定非常熟悉。

在Distrowatch.com网站排名上,我们可以看到在最近的六个月内,CentOS页面点击次数排名位列第八,而排在它前面的,皆为桌面级Linux操作系统居多。可以说,虽然CentOS没有排在第一位,但是它却为无数个企业服务器正常运行立下汗马功劳,可谓是真正的无冕之王。

为何CentOS如此受器重?原因就在于CentOS是RHEL(Red Hat Enterprise Linux)源代码再编译的产物的免费版,它继承了 Red Hat Linux 的稳定性,而且又提供免费更新。因此,它被认为是在众多数据中心中装机量最大的一款Linux发行版。也正是因为其庞大的装机量,所以,每次版本更新,都受到了广泛的关注。

在经过一轮又一轮的跳票之后,CentOS 6.0终于在7月10日发布了。需要下载的读者可以通过CentOS官网以及其他镜像地址进行下载。

CentOS与RHEL的渊源

总是有一些Linux初学者,在论坛里面发帖子请Linux高手们给他们推荐一款Linux发行版作为蓝本学习。在回帖中,我们经常可以看见往往CentOS作为首选被推荐。当然也有推荐Fedora以及SUSE的。

CentOS是Community ENTerprise Operating System的简称,中文翻译是“社区企业操作系统”。由于CentOS来自于RHEL(Red Hat Enterprise Linux)依照开放源代码规定释出的源代码所编译而成,出自同样的源代码,因此众多要求高度稳定性的服务器操作系统同时又不愿意支付服务费用的企业,纷纷以CentOS替代商业版的RHEL。因此,CentOS也成为很多企业和个人服务器的首选。

不同于RedHat官方支持的RHEL(Red Hat Enterprise Linux),使用CentOS的用户并不需要专门的商业支持就能自行展开业务。并且,CentOS不涉及认证和支持方面的开销,也不包含封闭的源代码软件。所以,从整体上可以说,CentOS是RHEL的克隆版本,由RHEL的100%兼容的重新组建,并完全符合Red Hat的再发行要求。

而RHEL也是目前很多企业在数据中心采用的Linux发行版本,不过区别于CentOS,需要向RedHat付费才可以使用,同时也将获得相应的服务和技术支持等。

在构成RHEL的大多数软件包中,都是基于GPL协议发布的,Red Hat公司也遵循这个协议,将构成RHEL的软件包公开发布。CentOS就是这样在RHEL发布的基础上将RHEL的构成克隆再现的一个Linux发行版本。当然,RHEL的克隆版本不只CentOS一个,还有White Box Enterprise Linux和TAO Linux 和Scientific Linux。

在CentOS的全称里面我们可以看到Enterprise OS,也就是说企业系统,这个企业系统并不是企业级别的系统,而是它可以提供企业级应用所需要的要素。例如:稳定的环境、长期的升级更新支持、保守性强、大规模的系统也能够发挥很好的性能。

所以,虽然说CentOS是RHEL的克隆,但并不是完全的一模一样,大家都认为CentOS与RHEL具有100%的互换性,但这并不能保障对应RHEL的软件在CentOS上也能够100%的正常工作。

CentOS 6.0新在什么地方

CentOS 6.0的发布可谓是“犹抱琵琶半遮面”,在RedHat公司的RHEL 6.0发布八个之后才姗姗来迟。话说,CentOS 6.0是完全基于RHEL 6.0制作开发的,同时也包含了所有的上游软件包。因此,CentOS 6.0也具备了RHEL 6.0所有特性。

集成基于内核的虚拟化。CentOS 6.0集成了基于内核的虚拟化,将KVM管理程序完全集成到内核中。这样的功能可以帮助CentOS 6.0用户在主机之间轻松迁移虚拟机,更加灵活地部署和管理IT资源,有效为企业节省资源。利用内核的硬件抽象使应用程序能够独立于底层硬件,并且提高CPU和内存可扩展性,使每个服务器可容纳更多虚拟机。

提升系统和资源管理功能。基于标准的Linux可管理性规范(SBLIM)使用基于Web的企业管理(WBEM)来管理系统。用Dracut取代了mkinitrd,最大限度地减少底层硬件改变的影响,更易于维护,并使支持第三方驱动程序更容易。

加强电源管理,按时的内核改进使CentOS 6.0可以将没有活动任务的处理器置为空闲状态,以达到降低CPU的温度和更进一步减少能耗。

在一种叫做控制组(即cgroups)的新框架的帮助下CentOS 6.0提供对硬件资源的细颗粒度控制、分配和管理。cgroups运行在进程组水平上,可被用于为应用管理从CPU、内存、网络和硬盘I/O的资源。

增强了系统的可靠性、可用性和适用性。CentOS 6.0利用新硬件能力提供热插拔特性,并且可以通过AER的PCIe设备的增强错误检查。CentOS 6.0包括高级数据完整性特性(DIF/DIX)。这类特性通过硬件检查和检验来自应用的数据。自动缺陷报告工具(ABRT)的引进提供了确定和报告系统异常情况,包括内核故障和用户空间应用崩溃等。

改进了可伸缩性和内核性能。CentOS 6.0提供了适应未来系统的可伸缩性,其可伸缩性能力从对大量CPU和内存配置的优化的支持到处理更多数量的系统互联总线和外设的能力。在虚拟化变得同裸机部署一样无处不在之时,这些能力适合于裸机环境和虚拟化环境。

CentOS 6.0改进了内核性能,可以通过让更高优先级的进程在最低限度的较低优先级处理干扰的条件下,更公平地在处理器之间分配计算时间。同时CentOS 6.0将多种多处理器锁同步进行改进,以消除不必要的锁定事件、用睡眠锁定代替许多旋转(spin)锁定和采用更高效的锁定基元。

稳定的应用程序开发与生产平台。CentOS 6.0是一个高性能、高度可扩展、分布式、基于内存的对象缓存系统,大大提高了动态Web应用程序的速度。在Web基础架构上主要改进了Apache、Squid和Memcached三个方面的改进。在Java性能支持上,CentOS 6.0和OpenJDK的紧密集成包括在SystemTap中支持Java探测器,从而可支持更好的Java调试。同时,CentOS 6.0也在逐步完善Tomcat 6的支持。

将 RHEL 5.4 升级为 CentOS 5.5

因为 RHEL 5.4 trial 到期不能 yum,一些安全 BUG 看着不能升级真的感到很蛋疼。于是尝试着将 RHEL 5.4 转换为 CentOS 5。首先当然是用 root 登录

yum clean all
mkdir ~/centos
cd ~/centos/
wget http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

wget http://mirror.centos.org/centos/5.5/os/i386/CentOS/centos-release-5-5.el5.centos.i386.rpm
wget http://mirror.centos.org/centos/5.5/os/i386/CentOS/centos-release-notes-5.5-0.i386.rpm
wget http://mirror.centos.org/centos/5.5/os/i386/CentOS/yum-3.2.22-26.el5.centos.noarch.rpm
wget http://mirror.centos.org/centos/5.5/os/i386/CentOS/yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm
wget http://mirror.centos.org/centos/5.5/os/i386/CentOS/yum-updatesd-0.9-2.el5.noarch.rpm
rpm –import RPM-GPG-KEY-CentOS-5
rpm -e –nodeps RedHat-release
rpm -e –nodeps yum-rhn-plugin
rpm -Uvh –force *.rpm
yum clean all
rpm –rebuilddb
yum update
重启一下,应该就是 CentOS 5.5 咯。

四步轻松升级CentOS内核

因为需要测试一些软件,需要2.6.30以上的内核,安装好CentOS 5.5,内核是2.6.18-194.el5.这次的升级还算比较顺利,具体的过程如下:

[root@localhost ~]# uname -r
2.6.18-194.el5
1.下载linux-2.6.30内核包到/usr/src目录
cd /usr/src
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.gz
tar -xzvf linux-2.6.30.tar.bz2 -C /usr/src
cd linux-2.6.30
make mrproper 清除环境变量,即清除配置文件
make menuconfig 在菜单模式下选择需要编译的内核模块:
networking support—>networking options—>network packet filtering framework(netfilter)
(1).core netfilter configuration
A 勾中”Netfilter connection tracking support” -m state相关模块是依赖它的,不选则没有。
B 将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启动时会出错
C 勾中“Netfilter Xtables support (required for ip_tables)”
(2).IP: Netfilter Configuration
A 将 “IPv4 connection tracking support (require for NAT)” 编译成模块。
B 勾中IP tables support (required for filtering/masq/NAT) 。
C 将 “Full NAT” 下的 “MASQUERADE target support” 和 “REDIRECT target support” 编译成模块
(3).其它模块可以根据自己的需要进行选择,若不懂可以参考内核配置手册.
make clean 确保所有东西均保持最新状态.
make bzImage 生成内核文件
make modules 编译模块
make modules_install 安装模块
make install 安装
mkinitrd /boot/initrd_2.6.30.img 2.6.30 根据内核版本和指定参数生成映像文件
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30
cp /usr/src/linux-2.6.30/System.map /boot/System.map-2.6.30

2.在/etc/grub.conf添加如下2.6.30的信息,并把default=1改为default=0
[root@localhost ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
title CentOS (2.6.30)
root (hd0,0)
kernel /vmlinuz-2.6.30 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.30.img

3.此步若没有操作,重启会报错”insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”,原因是重复了,根据网上查到的资料,2.6.x自编译内核会有这个小bug,我测试过不修改直接重启,虽然有报错,但仍然可以进入系统的.
[root@localhost]cp /boot/initrd-2.6.30.img /tmp
[root@localhost]cd /tmp/
[root@localhost tmp]mkdir newinitrd
[root@localhost tmp]cd newinitrd/
[root@localhost newinitrd]zcat ../initrd-2.6.30.img |cpio -i
[root@localhost newinitrd]vi init 删掉重复的如下两行:
echo “Loading dm-region-hash.ko module”
insmod /lib/dm-region-hash.ko
[root@localhost newinitrd]# find .|cpio -c -o > ../initrd
14765 blocks
[root@localhost newinitrd]# cd ..
[root@localhost tmp]# gzip -9 < initrd > initrd-2.6.30.img
[root@localhost tmp]# ls
gconfd-root initrd initrd-2.6.30.img mapping-root newinitrd scim-panel-socket:0-root
[root@localhost tmp]# mv /boot/initrd-2.6.30.img /home/
[root@localhost tmp]# cp initrd-2.6.30.img /boot/
[root@localhost tmp]#reboot

4.重启成功后,再看看内核,是2.6.30,ok了。
[root@localhost ~]# uname -r
2.6.30

在CentOS上安装Oracle11g

1,修改centos 的release文件以便oracle识别,并关闭SElinux
vi /etc/redhat-release
Red Hat Enterprise Linux AS release 5 (Taroon)

2,安装没有默认安装的一些包,在Oracle安装过程中会有些提示,但最好先装上。

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11
unixODBC-devel-2.2.11

3,创建系统用户:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -g oinstall -G dba oracle
passwd oracle

4,创建数据库安装目录,赋权:
mkdir -p /u01/app/oracle/product/  //设置oracle的安装目录
chown -R oracle:oinstall /u01  //设置安装目录所属的用户和组
chmod -R 775 /u01

5,修改系统参数:
vi /etc/sysctl.conf
在最末尾的地方加上:
kernel.shmall = 2097152 //固定大小为2M
kernel.shmmax = 2147483648 //一般设置为物理的一半
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

sysctl -p

6,修改系统limits.conf文件:
vi /etc/security/limits.conf 在末尾添加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

7,修改login配置
vi /etc/pam.d/login 在末尾添加
session required /lib/security/pam_limits.so
session required pam_limits.so

8,修改/etc/profile文件,在末尾添加
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

9,修改Oracle用户的/home/oracle/.bash_profile 注意路径必须和安装目录一样
# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export ORACLE_BASE=/u01
export ORACLE_HOME=$ORACLE_BASE/app/oracle/product/11.2.0/dbhome_1
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export ORACLE_SID=jmj
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

10,解压缩文件,./runInstaller 即可,当然,也可以远程打开VNC进行安装。

11,设置Oracle开机启动,编写一个脚本:oracleinit.sh

在这个脚本之前,有一点点准备工作,需要将环境变量参数加入到启动停止脚本:dbstart dbshut
在dbstart 和 dbshut 找到此段话,在最前端
# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1
//需要将此处的 ORACLE_HOME_LISTNER=$1 修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME
------
#!/bin/bash
# description: Oracle11g Server
# processname: oraserver  

RETVAL=0
prog="oraserver"  

ORACLE_HOME=/app/oracle/product/11.2.1/dbhome/
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
    echo "Oracle11g cannot start:Cannot find dbstart..."
    exit
fi  

start() {
    echo "Starting Oracle11g Server..."
    su - oracle -c "$ORACLE_HOME/bin/dbstart"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
    return $RETVAL
}
stop() {
    su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
    echo "Stoping Oracle10g Server..."
    su - oracle -c "$ORACLE_HOME/bin/dbshut"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
}  

restart() {
echo "Restart Oracle11g Server"
stop
start
echo
}  

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 2
esac  

exit $RETVAL
------

Apache and PHP FastCGI

虽然Nginx加上php有相当优秀的表现,但是有时候,基于业务需要,不得不用ApachephpApache下有两种运行方式,一种是编译成Apache的模块,一种是以cgi方式运行,cgi则可细分为fastcgi,以模块方式运行,无论Apache还是php出现安全漏洞,需要升级软件版本,都需要同时重新编译二者,这是一个很没有统筹科学的态度,以普通cgi方式运行,配置简单,但比之于fastcgi效率不高,每个脚本执行都需要reload script和php.ini,基本上,这个意思就是说,脚本缓存是无效的,所以,我们需要fastcgi。

需要说明的是,在当前php5.3.6版本中,php-fpm已经包含在源代码中,只需要在编译的时候加入相应参数: –enable-fpm,安装完成后,拷贝/src/php-5.3.6/sapi/fpm/init.d.php-fpm 到/usr/local/bin/,然后chmod +x 就可以了

Usage: /usr/local/bin/init.d.php-fpm {start|stop|force-quit|restart|reload}

当然,你知道配置文件默认放在/usr/local/etc/php-fpm.conf,修修改改就可以start了!

php的配置很简单,但Apache的mod_fastcgi是需要单独下载编译的:
1,下载mod_fastcgi:http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
解压缩了来安装到Apache里面去,例如,我们把Apache安装在了/usr/local/httpd:

tar zxf mod_fastcgi-current.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
make install top_dir=/usr/local/httpd

2,在配置文件中启用mod_fastcgi,例如我们可以包含一个配置文件在extra目录中,起个名字叫httpd-fastcgi.conf,这个例子呢,我是把php-fpm的socket放在/tmp目录下的:

LoadModule fastcgi_module modules/mod_fastcgi.so
ScriptAlias /php-bin /usr/local/bin
AddHandler application/x-httpd-php5 php
Action application/x-httpd-php5 /php-bin/php-cgi
FastCgiExternalServer /usr/local/bin/php-cgi -socket /tmp/php.sock

当然,基于安全考虑,可以将配置文件单独放在不同的虚拟主机中。