轻松升级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
------