Archive for the ‘Solaris’ category

ZFS实际压缩情况

December 2nd, 2009

原始数据共210GB,数据类型各种都有。

root@# df -hl /data/e /backup/
Filesystem                 Size  Used Avail Use% Mounted on
data/e                         1.8T  132G  1.7T   8% /data/e
rpool/backup          1.8T   86G  1.7T   5% /backup

数据大小都是一样的,data/e用lzjb压缩,rpool/backup用了gzip-9压缩。
由此可以看出,如果对一些一次写入,然后访问不频繁的数据,采用gzip-9更能节约硬盘空间。
非常适合备份数据,在目前一块SATA硬盘2TB的背景下,ZFS+Amanda或Bacula,磁带机是不是可以退休了?

ZFS性能

February 4th, 2009

在使用ZFS(OpenSolaris200811)的过程中碰到了一个问题,当在DELL2850+220S(8块做raidz)和DELL2850+本地硬盘(5块做raidz)的时候,性能非常差,我拷贝rhel5.3的ISO文件,大概需要10分钟左右才能拷贝完成。这明显是不正常的,跟磕死老大沟通了一下,基本断定是raid卡的驱动不行导致的,raid卡型号是perc 4e,但是仍然不知道根本原因。

基于我目前的几台NFS服务器,做了一些拷贝测试,如下:

RHEL 4.7(DELL2850)
# time cp rhel-server-5.3-x86_64-dvd.iso /export/scratch_qa/test/

real    1m12.942s
user    0m0.212s
sys     0m16.519s

OpenSolaris 200811(DELL 2950)
# time cp rhel-server-5.3-x86_64-dvd.iso /data/export/test/

real    0m44.246s
user    0m0.067s
sys     0m13.097s

Solaris10 update 6(DELL 2850)
# time cp rhel-server-5.3-x86_64-dvd.iso /data/

real    1m43.993s
user    0m0.007s
sys     0m16.932s

虽然不全面,但是基本上也可以看出ZFS的性能并没有大家想像中的那么差,当然OpenSolaris虽然性能好,但是可能是因为硬件好的缘故,不过在旧硬件上,也不应该表现那么差啊,10分钟才拷贝完!!:|

OpenSolaris的rpcbind

January 15th, 2009

OpenSolaris的rpcbind进程默认只监听本地,所以在本机rpcinfo -p localhost是没问题的,但是在其他机器上则会报错。我在配置nis slave的时候,碰到的这个问题。

做如下设置可以使rpcbind容许其他机器查看.

root@chifeng :/etc/default# svccfg -s svc:/network/rpc/bind
svc:/network/rpc/bind> setprop config/local_only=false
svc:/network/rpc/bind> end
root@chifeng :/etc/default# svccfg -s rpc/bind listprop config/local_only
config/local_only  boolean  false

随便找个linux机器试试
[root@ ~]# rpcinfo -p 172.17.33.39
rpcinfo: can’t contact portmapper: rpcinfo: RPC: Authentication error; why = Failed (unspecified error)
设置之后再试,就ok了
[root@ ~]# rpcinfo -p 172.17.33.39
program vers proto   port
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100004    2   udp    896  ypserv
100004    1   udp    896  ypserv
100004    1   tcp    973  ypserv
100004    2   tcp  52454  ypserv
100007    3   udp  38345  ypbind
100007    2   udp  38345  ypbind
100007    1   udp  38345  ypbind
100007    3   tcp  53239  ypbind
100007    2   tcp  53239  ypbind
100007    1   tcp  53239  ypbind

这一点来看,OpenSolaris默认还是比较安全的…….

在OpenSolaris下安装Postfix

January 14th, 2009

OpenSolaris0811默认用的是Sendmail,作为一个Postfix的fans,当然第一件事就是替换他为Postfix,步骤如下:

1,由于我使用pkgutil安装,所以先装这个工具
pkgadd -d http://blastwave.network.com/csw/pkgutil_i386.pkg
我是x86的平台,如果是sparc平台则装pkgutil_sparc.pkg

2,安装Postfix,执行下面命令,一路按y即可
pkgutil -i postfix

3,执行下面几个命令
svcadm disable sendmail
svcadm enable nfs/client
mkdir /var/spool/postfix
chgrp postdrop /var/spool/postfix/
cd /opt/csw/var/spool/postfix/
find . -depth | cpio -pdm /var/spool/postfix/
cd /etc/ && ln -s  opt/csw/postfix/
/opt/csw/bin/newaliases

4,改动几个你常用的参数并且启动postfix
postconf -e myhostname=mail.chifeng.name
svcadm restart cswpostfix

5,发信测试吧,肯定可以了。邮件日志在/var/log/syslog。

6,最好设置一下环境变量,方便使用,这点上我不得不说,OpenSolaris的包管理机制真垃圾,到处乱放!!唉,不说了,贴PATH
PATH=/usr/gnu/bin:/usr/bin:/usr/X11/bin:/usr/sbin:/sbin:/bin:/usr/local/bin:/usr/local/sbin:/root/bin:/opt/csw/bin:/opt/csw/sbin

fsize

December 29th, 2008

当ZFS启用了压缩之后,文件的真实大小(ls看到的)和你用df/du看到的大小已经不一样,因此写了这个sh来统计目录下的文件的真实大小,即ls列出来的大小,在此保存一下。

http://www.chifeng.name/dist/scripts/fsize

缺点:不支持大量文件。

很快会再写一个Perl版本的或者Python版本的fsize,就解决这个问题了,shell版本的不知道如何修复这个问题。

zfs for munin

December 17th, 2008

在使用ZFS的过程中,我想监控到每一个pool的读写速度的历史数据,但是munin里面并没有这个脚本,因此便自己写了一个,收集指定的pool的读写速度数据,形成图表。

哪位老大需要可以直接下载使用,我在OpenSolairs 200811版中测试没问题。

下载地址:

http://www.chifeng.name/dist/patch/zfs_poolname

ZFS Problem

December 9th, 2008

测试zfs的过程中碰到的问题

1. 创建pool的时候,把一块硬盘分了4个分区,使用如下命令创建成功
root@chifeng:~# zpool create test c3t5d0p1 c3t5d0p2 c3t5d0p3 c3t5d0p4 c3t5d0p0

不是很明白Solaris的分区原理,不过从这儿看的话,p1-p4代表了我的四个分区,而p0则代表了整块硬盘,但是为什么又可以同时使用呢?并且test的大小的确变成了2倍,bug?还是?

2. 删除一个pool的时候挂死了
root@chifeng:~# zpool create test c3t5d0p1
cannot create ‘test’: pool already exists
root@chifeng:~# zpool destroy test

^C^X^C
root@chifeng:/etc# sync

^C^C^C^X^C

我在执行如上两个命令,想重新创建pool的时候,挂死在这儿了,至今还未恢复,在另外一个窗口kill -9也不行,执行sync命令也挂死,看似只有靠reboot了。

3. 可算是懂点format命令了,连蒙带猜的知道Solaris分区的意思了
他预先分配了一些设备号来用,但是如果不在format里面分好,他是不能用的,虽然有这个设备号。
另外到现在我还没弄明白partition和slice的对应关系。Solaris的真是难用啊,唉。。。偶还算有点经验,折腾了1天居然还没把分区这事搞明白。难怪流行性不如Linux/FreeBSD,用户体验太差!