用grub引导software raid1上的Linux

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

使用soft raid的一个好处就是和硬件无关。当硬件完蛋的时候你只能找一样的硬件来读数据,而软件的话完全就挂在

一个新的LINUX系统上就OK。如果不是RAID5,那么实际上作RAID1的话性能应该不用太担心,毕竟有8个逻辑CPU…

可以做这么一个方案:

系统主板上两个同样的硬盘,安装redhat enterprise linux 4.2,安装的时候将两个硬盘的分区改为一致,并都设置为

SOFTWARE RAID1。然后继续安装。

那么安装完毕后,完全可能出现系统不能启动,或者grub可以进行第一步启动,但是找不到/分区或者核心的问题,那么

就要采取如下的方法来解决这个问题了,原文出处:

http://www.redhat.com.cn/kbase/6046.php

现象:

如果你在软件RAID上安装了一个操作系统,系统会无法引导或者只能从其中的一个硬盘引导。而不是所需要的硬盘冗余,即可以从任意一个硬盘引导。

你最好多少能够熟悉一些硬盘寻址和分区的知识和一些基本的Linux引导信息。还需要能够熟练的使用vi来编辑一些配置文件。

解决方法:

因为存储设备的差异非常大,安装程序(Anaconda)可能不能正确设置每一个引导驱动器的主引导记录(MBR)。MBR使用硬盘前512个字节的一部分,位于分区表之后。它包含引导加载Linux所需的自举程序的代码。

如果磁盘没有包含GRUB,系统将不能从第二个硬盘启动,第二种可能是GRUB被安装到了另一个磁盘的MBR上去了,第三种可能,如果机器没有正确 的关闭,则MBR中的GRUB信息可能会在同步的时候被空字节所代替。确认是否以上的可能性,可以手工的重新安装GRUB.可以在一个正在运行的机器或者 启动到救援模式下,

如果在救援模式下,使用chroot改变当前root到/mnt/sysimage,切换到GRUB目录/boot/grub. 编辑文件device.map. 设置要安装GRUB的磁盘和设备。如果你的软件RAID是基于两个IDE硬盘hda和hdc,这个文件可以设置如下:

# this device map was generated by anaconda
(fd0)     /dev/fd0
(hd0)     /dev/hda
(hd1)     /dev/hdc

请注意,上文中的设备指的是整个设备(hdx)而非一个分区。 假设你的/boot分区是硬盘上的第一个分区,GRUB会把他们认成(hd0,0)和(hd1,0)。确认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=LABEL=/
#          initrd /initrd-version.img
#boot=/dev/hda1
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#Boot from /boot partition, /dev/hda1
title Red Hat Enterprise Linux Disk A (version)
  root (hd0,0)
  kernel /vmlinuz-version ro root=LABEL=/
  initrd /initrd-version.img
#Boot from /boot partition, /dev/hdc1
title Red Hat Enterprise Linux Disk C (version)
  root (hd1,0)
  kernel /vmlinuz-version ro root=LABEL=/
  initrd /initrd-version.img

最后,使用grub命令,并在grub SHELL中手动的安装GRUB到每个设备的MBR.你可以使用GRUBroot命令和setup命令来实现上述操作。现把包含/boot的分区传递给 root命令。然后使用setup命令把GRUB MBR的代码写入需要引导的设备。操作步骤如下:

# /sbin/grub

    GNU GRUB  version 0.xx  (640K lower / xxxxK upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]

grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd0) (hd0)1 15 p (hd0,0)/grub/stage2 /grub/grub
.conf"... succeeded
Done.

grub> root (hd0,0)
 Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd0) (hd0)1 15 p (hd0,0)/grub/stage2 /grub/grub
.conf"... succeeded
Done.

grub> quit

在上述例子中,在两块硬盘上都已经安装成功,我们可以返回安装程序或者是正常运行的系统。重新启动系统确认系统是否能够引导。还需要模拟SoftRAID中的一个硬盘失败的情况下,系统可以从另一快硬盘引导而且数据可以恢复。

在Ubuntu 8.04下配置nginx和fastcgi方式的php

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

最近一个客户要求在他的Ubuntu 8.04 VPS上安装一个高性能的web服务器nginx,下面是我的安装记录。 由于Ubuntu 804已经包含了nginx,所以根本不要编译,安装超简单! 在VPS上修改/etc/apt/sources.list文件内容为:

deb http://ubuntu.cn99.com/ubuntu hardy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu hardy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu hardy-updates main restricted universe multiverse

然后运行:

apt-get update
apt-get install nginx

即可完成安装 启动nginx:

/etc/init.d/nginx start

然后就可以访问了,http://58.30.17.160/ , 一切正常!如果不能访问,先不要继续,看看是什么原因,解决之后再继续。 下面配置php和mysql。 安装php和MySQL:

apt-get install php5-cli php5-cgi mysql-server-5.0 php5-mysql

我们需要/usr/bin/spawn-fcgi这个文件,而它是属于lighttpd这个包里面的,所以我们安装lighttpd然后把它设置为开机不启动:

apt-get install lighttpd #我们只要/usr/bin/spawn-fcgi
rcconf #去掉lighttpd开机自启动

修改nginx的配置文件:/etc/nginx/sites-available/default 修改 server_name 58.30.17.154; 修改index的一行修改为: index index.php index.html index.htm; 去掉下面部分的注释:

location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}

重新启动nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start

启动fastcgi php:

spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

为了让php-cgi开机自启动:

cd /etc/init.d
cp nginx php-cgi

vim php-cgi 替换nginx为php-cgi 并修改相应部分为:

DAEMON=/usr/bin/spawn-fcgi
DAEMON_OPTS="-a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi"
...
 stop)
        echo -n "Stopping $DESC: "
        pkill -9 php-cgi
        echo "$NAME."

然后运行rcconf设置php-cgi为开机自启动 在/var/www/nginx-default/目录下创建一个文件:

echo '< ?phpinfo();?>'  > /var/www/nginx-default/index.php

然后浏览器访问nginx就可以看到一切正常了

配置Apache虚拟主机

Posted by zuzhihui in apache on 2008/05/24 with No Comments

在安装了 CentOS 5.1的 瑞豪开源Xen VPS 下简单配置Apache的虚拟主机的过程如下:

安装apache,php:
yum install httpd php

假设VPS的IP是58.130.17.168,有两个域名指向该IP,分别是domain1.com, domain2.com,

修改/etc/httpd/conf/httpd.conf,在文件的最后加入:

ServerName 58.130.17.168
NameVirtualHost 58.130.17.168

<VirtualHost 58.130.17.168>
ServerName domain1.com
DocumentRoot /var/www/domain1.com
<Directory “/var/www/domain1.com”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost 58.130.17.168>
ServerName domain2.com
DocumentRoot /var/www/domain2.com
<Directory “/var/www/domain2.com”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

然后在/var/www/domain1.com和/var/www/domain2.com下创建不同的index.html文件:
echo “domain1″>/var/www/domain1.com/index.html
echo “domain2″>/var/www/domain2.com/index.html

在浏览器里输入http://domain1.com和http://domain2.com即可看到效果了

在Linux下怎样允许产生core文件

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

在程序出错的时候,会产生core文件,这个core文件有利于debug程序为什么产生错误。

在Linux系统中,缺省是不允许产生core文件的。要想运行产生core文件,需要修改/etc/security/limits.conf 然后重新启动即可:

需要在/etc/security/limits.conf中添加:
* soft core 20480
* hard core 40960
即可

以上方法在瑞豪开源VPS(包括CentOS,Debian,Ubuntu)上测试通过

MySQL数据库的快速重建

Posted by zuzhihui in mysql on 2008/05/24 with No Comments

如果mysql不能启动了,库损害了,或者密码忘记了,而数据库里面又没有重要数据,可以这样重建mysql数据库:

用root用户操作:

/etc/init.d/mysql stop #先停止
rm -rf /var/lib/mysql #删除所有数据库
mysql_install_db #重新建库
/etc/init.d/mysql start #启动
mysqladmin password rashost.com #修改新密码为 rashost.com

在Ubuntu 8.04下安装配置Zend Optimizer

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司透露使用这个软件某些情况下至少可以提高性能30%以上。今天我在安装了Ubuntu Hardy的VPS上配置了最新的ZendOp。过程记录如下:

按照正常流程,在官方网站下载Zend Optimizer是需要注册用户登录之后才能下载的。下载一次后发现其实匿名用户也能下载,用下面这个URL即可:
http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

在安装Zend Optimizer之前需要先把apache,php安装好:
apt-get install libapache2-mod-php
然后在/var/www/下创建index.php,仅包含一行php代码phpinfo();

然后用浏览器访问VPS,在首页里面搜索不到Zend Optimizer的字样.安装完成后应该能够搜索到Zend Optimizer才对。

tar zxf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz

cd ZendOptimizer-3.3.3-linux-glibc23-i386
./install.sh

然后安装程序会询问几个路径,一个个回答即可完成安装。

安装完成,重启apache,然后再访问首页,应该能搜索到Zend Optimizer的字样,说明安装成功了,接下来就可以开始测试性能了。

在putty中输入中文

Posted by zuzhihui in ssh on 2008/05/24 with No Comments

目前几乎所有的Linux的缺省编码都是UTF-8,而Windows用的编码是GBK,putty是个Windows下的软件,用putty登录Linux系统时输入中文经常会碰到问题,好像在putty里面没法输入中文一样。

这个问题的解决方法是,在putty的选项里面选择:

Window -> appearance: Font Fixedsys 12 points
Window -> translation: select UTF-8 in the dropdown menu

另外我常去的其他putty选项是:

Window -> Lines of scrollback 20000
Connection -> seconds between keepalives 60
Connection -> SSH -> auth: Allow agent forwarding
Connection -> SSH -> auth: 选我的private key

(版权:如转贴,请注明来自瑞豪开源VPS的博客)

三分钟整合Apache和Tomcat

Posted by zuzhihui in apache on 2008/05/24 with No Comments

在Ubuntu或者Debian下整合Apache和Tomcat非常方便

安装

安装Apache,JDK,Tomcat的过程很简单,一个命令搞定:

在Deiban下:

apt-get install apache2-mpm-worker sun-java6-jdk tomcat5.5-webapps libapache2-mod-jk

在Ubuntu下:

apt-get install apache2-mpm-worker sun-java6-jdk tomcat5.5-webapps libapache2-mod-jk

然后访问本机的80端口,确保apache启动了; 访问本机的8180端口,确保tomcat启动了(Debian/Ubuntu的tomcat默认8180端口)

以上命令把apache的jk插件也安装了,不用编译jk了。jk的配置文件安装在了/etc/libapache2-mod-jk/workers.properties 修改这个文件,修改后的有效内容是:

workers.tomcat_home=/usr/share/tomcat5.5
workers.java_home=/usr/lib/jvm/java-1.5.0-sun-1.5.0.14
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13

然后配置apache的配置文件/etc/apache2/apache2.conf,在文件的最后加入:

JkWorkersFile /etc/libapache2-mod-jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions ForwardKeySize ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /* ajp13_worker

重新启动apache:

/etc/init.d/apache2 restart

然后用浏览器访问apache,就会出现tomcat的页面了,大功告成!

在Debian4下配置awstats分析apache的日志

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

AWStats是在一个很流行的基于Perl的WEB日志分析工具。本文讲述在Debian4下怎么安装配置awstats。

下载和安装

Debian4自带有awstats,安装只需执行:

apt-get install awstats

然后输入以下命令重新启动apache

/etc/init.d/apache2 force-reload

然后通过浏览器访问:http://rashost.com/cgi-bin/awstats.pl 发现有出错信息,说明awstats已经安装了,perl cgi也工作了,只是awstats还没有配置,所以报错了。

初始配置

在/etc/awstats/awstats.conf文件中修改:

LogFile="/var/log/apache2/access.log"
LogType=W
LogFormat=1
SiteDomain="rashost.com"
HostAliases="rashost.com localhost 127.0.0.1"

然后再次访问,awstats的界面出来了,但是没有数据。

awstats靠cron定期分析apache日志,在文件/etc/cron.d/awstats中我们能找出数据处理的脚本,但在debian下,这个脚本是有点问题的,我们需要手工修改脚本中的日志文件的文件名为:/var/log/apache2/access.log

现在手工运行一下awstats的数据分析脚本:

chmod og r /var/log/apache2/access.log*
/usr/lib/cgi-bin/awstats.pl -config=awstats -update

然后再次浏览器访问,数据就出来了。还有没有出来的是图标,我们需要在apache的配置文件
/etc/apache2/sites-available/default
中加入:

    Alias /awstats-icon/ "/usr/share/awstats/icon/"
    <directory "/usr/share/awstats/icon/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all

重启apache,完整的内容就出来了。

剩下的唯一问题就是控制不让别人随便访问awstats,还是在
/etc/apache2/sites-available/default
文件中修改:

 <directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews  SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
                AuthType Basic
                AuthName "RasHost CGI"
                AuthBasicProvider file
                AuthUserFile /etc/apache2/password
                Require user admin

然后在/etc/apache2目录下执行:

htpasswd -c password admin

给admin用户一个密码即可

最后的完善
为了让awstats能够显示出IP来自什么地方,我们还需要安装一些东西:

apt-get install libgeoip-dev liburi-perl
wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.4.tar.gz
tar zxf GeoIP-1.4.4.tar.gz
./configure --prefix=/usr
make
make install
perl -MCPAN -e 'install "Geo::IP"'
perl -MCPAN -e 'install "Geo::IP::PurePerl"'

安装以上perl需要gcc等编译工具

cd /usr/share/awstats
wget http://www.maxmind.com/download/geoip/database/GeoIP.dat.gz
wget http://www.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity_20080501.zip
gunzip GeoIP.dat.gz
unzip GeoLiteCity_20080501.zip
mv GeoLiteCity_20080501 GeoLiteCity

vim /etc/swstats/swstats.conf
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /usr/share/awstats/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/awstats/GeoIPCity.dat"

重启apache就可以了

Xen虚拟化技术首次进入国内IDC行业应用

Posted by zuzhihui in Linux技术 on 2008/05/24 with No Comments

如今,虚拟化技术正是IT业界的热门话题。虚拟化技术能使多个操作系统在一台物理服务器上同时运行,这种虚拟化对操作系统来说是透明的。虚拟化技术能够给企业减少维护成本和硬件成本。在IBM,英特尔,SUN,惠普,戴尔等硬件厂商和VMware等软件厂商的大力支持下,虚拟技术已经成为企业的成熟的解决方案。

Xen是一种著名的开放源代码的虚拟化技术,它基于Linux平台。由于Xen采用半虚拟化的技术,也就是说操作系统要经过一点修改才能在Xen上运行,所以Xen的性能要优于其他虚拟化技术。Xen由XenSource公司负责开发,后来Citrix公司在2007年8月以5亿美元收购了XenSource公司。IBM,SUN,英特尔,惠普等硬件厂商都在自己的硬件上对Xen提供了很好的支持。RedHat,Novell等 Linux操作系统厂商也都在自己的操作系统上集成了开源的Xen软件。

在国际IDC市场上,由于Xen稳定,高性能,低成本的特点,基于Xen的VPS主机产品选择非常丰富。而目前国内市场上的VPS主机产品几乎全部都是基于商业软件的。这些商业软件比Xen成本高,性能不如Xen。瑞豪开源VPS 是国内唯一的基于Xen的VPS主机产品。瑞豪开源VPS提供多种Linux操作系统选择,VPS空间全部存储在RAID1上,能够有效防止数据丢失。瑞豪开源采用具有VT技术的英特尔至强CPU,从而也能提供Windows 2003等操作系统。

低成本,高性能的Xen进入国内VPS市场,定会加剧VPS市场竞争,降低VPS价格,从而为用户带来最大利益。

Back to Top

2007-2017 © 北京瑞豪开源科技有限公司 京ICP备13004995号-2