linux下测试磁盘的读写IO速度

转载于:http://blog.chinaunix.net/uid-24250828-id-3239100.html

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.

下面是两种测试方法:
(1)使用hdparm命令
这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord , the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单
# hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads: 6676 MB in 2.00 seconds = 3340.18 MB/sec
Timing buffered disk reads: 218 MB in 3.11 seconds = 70.11 MB/sec

可以看到,2秒钟读取了6676MB的缓存,约合3340.18 MB/sec;
在3.11秒中读取了218MB磁盘(物理读),读取速度约合70.11 MB/sec

(2)使用dd命令
这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.
另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站.写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试方法:
a.测试磁盘的IO写速度
# time dd if=/dev/zero of=/test.dbf bs=8k count=300000
300000+0 records in
300000+0 records out
10.59s real 0.43s user 9.40s system
# du -sm /test.dbf
2347 /test.dbf

可以看到,在10.59秒的时间里,生成2347M的一个文件,IO写的速度约为221.6MB/sec;
当然这个速度可以多测试几遍取一个平均值,符合概率统计.

b.测试磁盘的IO读速度
# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
19214 9545 8693 53% /
/dev/sda1 99 13 82 14% /boot
none 506 0 506 0% /dev/shm

# time dd if=/dev/mapper/VolGroup00-LogVol00 of=/dev/null bs=8k
2498560+0 records in
2498560+0 records out
247.99s real 1.92s user 48.64s system

上面的试验在247.99秒的时间里读取了19214MB的文件,计算下来平均速度为77.48MB/sec

c.测试IO同时读和写的速度
# time dd if=/dev/sda1 of=test.dbf bs=8k
13048+1 records in
13048+1 records out
3.73s real 0.04s user 2.39s system
# du -sm test.dbf
103 test.dbf

上面测试的数据量比较小,仅作为参考.

相比两种方法:
前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)
后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

/usr/bin/ld: cannot find -lxxx 的解决办法

在软件编译过程中,经常会碰到类似这样的编译错误:

/usr/bin/ld: cannot find -lhdf5

这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字。

解决方法有:

1. 安装此库文件和相关软件

一般库文件属于某个软件,google搜索该软件并安装,或者使用 yum 安装。

2. 将库文件所在路径添加到gcc的搜索路径

使用以下命令查询gcc能否搜寻到指定的库文件:

$ gcc -lhdf5 --verbose

查询库文件 libhdf5.so 是否能在搜索路径中找到。

若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:

2.1 使用 /etc/ld.so.conf 配置文件

将库文件所在的路径加入到 /etc/ld.so.conf 尾部,并使之生效:

$ sudo echo '/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> /etc/ld.so.conf
libhdf5.so 在路径 /opt/biosoft/hdf5-1.8.15-patch1/lib/ 下,将该路径加添加到配置文件中
$ sudo ldconfig
运行该命令,重新载入 /ext/ld.so.conf 中的路径,使修改生效。

2.2 修改环境变量

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/
修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。

$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> ~/.bashrc
$ source ~/.bashrc
将上述 export 命令加入到配置文件 ~/.bashrc,使之永久生效。

$ export LIBRARY_PATH=/opt/biosoft/hdf5-1.8.15-patch1/lib/:$LIBRARY_PATH
若修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH 。

解决Apache中文网页乱码

CentOS系统默认情况下,显示GB2312的中文,会显示乱码,解决方法如下:

1. 修改/etc/httpd/conf/httpd.conf文件

AddDefaultCharset off

默认下,设置的Charset为UTF-8。将其设为 off。

2. 网页中指定charset的值

在很多中文网页中,存在如下一行:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

使用浏览器去浏览此类网页的时候,若没有做第一步中的修改,则中文会显示乱码。

但是作了第一步中的修改,则会在普通网页中显示中文乱码。解决方法是在html文件的head部分添加:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

apache的网页安全设置

1. 限制IP访问

使用deny和allow来设定允许和不允许访问网页的IP段。

Order deny,allow:以 deny 优先处理,但没有写入规则的则默认为 allow 。常用于:拒绝所有,开放特定的条件;
Order allow,deny:以 allow 为优先处理,但没有写入规则的则默认为 deny。 常用于:开放所有,拒绝特定的条件。
如果 allow 与 deny 的规则当中有重复的,则以预设的情况 (Order 的规范) 为主。

一般情况下,这样写,用于不允许某些IP的访问:

<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    allow from all
    deny from 192.168.1.0/24
    deny from .gov.tw
</Directory>

2. 设置保护网页的用户名密码访问

2.1 修改/etc/httpd/conf/httpd.conf文件

[root@linux ~]# vi /etc/httpd/conf/httpd.conf
# 确定底下这几行是存在的!
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

# 在某个不受影响的地方加入这一段:
<Directory "/var/www/html/protect">
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
</Directory>

[root@linux ~]# apachectl restart  <==重新启动,不要忘记了!

2.2 在保护目录下建立.htaccess 档案

[root@linux ~]# cd /var/www/html/protect
[root@linux ~]# vi .htaccess
# 只要加入底下这几行即可
AuthName     "Protect test by .htaccess"
Authtype     Basic
AuthUserFile /var/www/apache.passwd
require user test

2.3 建立密码档案 htpasswd

Apache 默认读取的账号/密码设定数据是由 htpasswd 所建立的,这个指令的语法是这样的:

[root@linux ~]# htpasswd [-c] 密码文件文件名 用户账号
参数:
-c :建立后面的密码档案。如果该档案已经存在,则原本的数据会被删除!
     所以如果只是要新增使用者(档案已存在时),不必加上 -c 的参数!

1. 建立 apache.passwd ,账号为 test
[root@linux ~]# htpasswd -c /var/www/apache.passwd test
New password:  <==这里输入一次密码,注意,屏幕不会有任何讯息。
Re-type new password:  <==这里再输入一次
Adding password for user test

[root@linux ~]# cat /var/www/apache.passwd
test:FIquw/..iS4yo   <==您瞧瞧!已经建立一个新使用者!

2. 在已存在的 apache.passwd 内增加 test1 这个账号:
[root@linux ~]# htpasswd /var/www/apache.passwd test1

wine的安装与microsoft office在linux上的运行

1. CentOS 64位系统上安装wine

1.1 使用yum进行安装

此方法安装的版本较低。推荐安装使用此方法进行wine的安装:安装容易;版本稳定;快捷方便。

# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
# yum makecache
# yum install wine

1.2 源码包安装

可以安装最新版,建议使用普通用户安装。

# yum -y groupinstall 'Development Tools'
# yum -y install libX11-devel freetype-devel
$ wget http://citylan.dl.sourceforge.net/project/wine/Source/wine-1.7.3.tar.bz2
$ tar -xvf wine-1.7.3.tar.bz2
$ cd wine-1.7.3/

32位系统的安装:
$ ./tools/wineinstall

64位系统的安装
$ ./configure --enable-win64 --prefix=/opt/wine
$ make -j 8; make install

# yum groupinstall "X Window System" "GNOME Desktop Environment"
OR
# yum groupinstall "X Window System" "KDE (K Desktop Environment)"

2. 使用wine安装microsoft office 2007

office 2003不能打开office2007的文件,同时wine安装office2010出错,故选择安装office 2007。office 2007不区分64位和32位。应该为32位。

2.1 安装wine下中文支持

此处参考:http://www.360doc.com/content/13/0811/16/7256015_306408693.shtml

2.2 下载office2007并安装

首先,运行winecfg进行wine的配置。模拟环境windows xp, 在函数库选项卡中新增函数库顶替riched20(原装先于内建),即使用系统自带的riched20,而不是wine内置的riched20。然后使用wine安装office2007。

$ winecfg

然后,从Microsoft官网下载MSXML 3.0并安装。

$ msiexec /i msxml3.msi

最后安装office2007.

$ sudo mount -o loop cn_office_professional_plus_2007_sp3_dvd_X12-38713.iso /mnt/
$ cd /mnt
$ wine setup.exe

运行程序的方法:

$ wine /home/chenlianfu/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Office/Office12/WINWORD.EXE
$ wine /home/chenlianfu/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Office/Office12/POWERPNT.EXE
$ wine /home/chenlianfu/.wine/drive_c/Program\ Files\ \(x86\)/Microsoft\ Office/Office12/EXCEL.EXE

最后,运行PPT和EXCEL正常,但是运行word的问题是关闭word总是“遇到问题需要关闭”,这个时候,去掉复选框的勾,点击“不发送”即可。

3. yozo office

发现永中office在linux上运行很不错。

4. CrossOver

发现使用CrossOver才是王道。它是wine的商业版本。使用CrossOver能非常简单的安装并使用Office;同时也能正常使用QQ2013。不过是需要人民币,也不贵,88元永久性使用。

CentOS 6 64位系统安装BCM4312无线网卡驱动

1. 下载64位的BCM4312无线网卡驱动

# mkdir /root/wl/
# cd /root/wl
# wget ftp://ftp.debian.hu/pub/linux/distributions/frugalware/frugalware-testing/source/network-extra/bcmwl/hybrid-portsrc_x86_64-v5_100_82_112.tar.gz
# tar zxf hybrid-portsrc_x86_64-v5_100_82_112.tar.gz

2. 安装驱动

# ln -s /usr/src/kernels/2.6.32-358.23.2.el6.x86_64/ build
# make API=WEXT
# make install
# cp wl.ko /lib/modules/2.6.32-358.23.2.el6.x86_64/kernel/net/wireless/

3. 移除可能冲突的其它BROADCOM无线网卡驱动

# lsmod  | grep "b43\|ssb\|bcma\|wl"
# rmmod b43
# rmmod ssb
# rmmod bcma
# rmmod wl
# lsmod  | grep "b43\|ssb\|bcma\|wl"

# echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf
# echo "blacklist bcma" >> /etc/modprobe.d/blacklist.conf
# echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf

4. 载入新驱动并添加开机启动

# modprobe lib80211
# imsmod wl.ko
# depmod -a
# echo "modeprobe wl" >> /etc/rc.local

wordpress的域名转移

今天将wordpress转到新的域名下: www.chenlianfu.com。同时服务器也换了一台。我的方法很简单:

1. 数据转移

由于更换了服务器,直接将wordpress相关的数据库文件打包,copy到新的服务器上。同时下载新的wordpress版本,解压到指定位置。

在旧的服务器上打包wordpress数据库文件:
# cd /home/mysql
# tar zcf wordpress.tar.gz wordpress/

在新的服务器上释放数据:
# cd /home/mysql
# tar zxf wordpress.tar.gz
# chown -R mysql:mysql wordpress/

下载最新的wordpress,或将旧服务器上的wordpress文件夹copy过来:
# cd /home
# wget http://211.69.141.2/files/4044000000134017/cn.wordpress.org/wordpress-3.6.1-zh_CN.zip
# unzip wordpress-3.6.1-zh_CN.zip
# mv wordpress chenlianfu_blog
# chown -R apache:chenlianfu chenlianfu_blog

2. 修改apache配置文件

编辑/etc/httpd/conf/httpd.conf文件,内容如下:

NameVirtualHost *:80
<VirtualHost *:80>
        DocumentRoot /home/chenlianfu_blog
        ServerName www.chenlianfu.com
</VirtualHost>
<Directory "/home/chenlianfu_blog">
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

重启apache:

# /etc/init.d/httpd restart

3. 修改wordpress对应的mysql数据库文件

# mysql -u *** -p
mysql> use wordpress;
mysql> UPDATE chenlianfu_options SET option_value='http://www.chenlianfu.com' where option_name like 'home';
mysql> UPDATE chenlianfu_options SET option_value='http://www.chenlianfu.com' where option_name like 'siteurl';
exit

至此,则功成了。可以正常访问www.chenlianfu.com了