目前我们公司的greenplum是建立在Solars上ZFS上的,听数据仓库部门反映,当有硬盘出现问题时,ZFS会hang住。由于目前oracle收购了sun公司,而oracle也关闭了Open Solars项目。以后Solars也要收费了,所以就想能否让greenplum跑在Linux下,而greenplum建议在Linux使用xfs文件系统,而xfs文件系统本身没有快照功能,而我们数据仓库又需要使用快照,所以我就想能否直接在Linux下使用ZFS。但是由于Linux kernel的许可证与ZFS的CDDL协议的不兼容,所以无法在Linux 内核中直接使用ZFS。去年就知道,在Linux下有ZFS的FUSE的版本可以使用,但 FUSE 的ZFS作为一个程序在用户空间(userspace)内使用,虽然绕过法律了障碍,但性能不高,据网上说的只是目前的性能仅仅只有XFS的一半。这个FUSE的ZFS我也使用过,对于一般对性能要求不高的应用还不可以的。但对于数据仓库这样对性能要求很高的应用明显是不可行的。今天,与SA同事聊时,他们说Linux下的原生ZFS发布了,而把这个ZFS编译成一个模块,而不是放入内核中,也是可以绕过法律障碍的。于是,晚上就准备试一下。
首先在google上找到了一篇文章:《在 Linux 上编译和安装 ZFS 文件系统》,按这篇文章开始安装ZFS。我的笔记本上安装的是ubuntu10.04,于是就先在自己的笔记本电脑上安装ZFS:
到网站:https://github.com/behlendorf/zfs下载ZFS包,我下载的为zfs-0.5.1.tar.gz
由于zfs需要包spl包,还需要下载spl包:https://github.com/behlendorf/spl,我下载spl-0.5.1.tar.gz
root@osdba-laptop:/usr/src# wget http://github.com/downloads/behlendorf/spl/spl-0.5.1.tar.gz
--2010-11-09 20:58:54-- http://github.com/downloads/behlendorf/spl/spl-0.5.1.tar.gz
正在解析主机 github.com... 207.97.227.239
正在连接 github.com|207.97.227.239|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
位置:https://github.com/downloads/behlendorf/spl/spl-0.5.1.tar.gz [跟随至新的 URL]
--2010-11-09 20:58:55-- https://github.com/downloads/behlendorf/spl/spl-0.5.1.tar.gz
正在连接 github.com|207.97.227.239|:443... 已连接。
错误: 证书通用名 “*.github.com” 与所要求的主机名 “github.com” 不符。
要以不安全的方式连接至 github.com,使用‘--no-check-certificate’。
wget 时报错,说是需要加“--no-check-certificate”:
wget --no-check-certificate http://github.com/downloads/behlendorf/spl/spl-0.5.1.tar.gz
下载到/usr/src 目录下,解压,进入目录,运行./configure,然后make、make install就完成了spl的安装。
按文章《在 Linux 上编译和安装 ZFS 文件系统》测试一下spl是否正常:
root@osdba-laptop:/usr/src/spl-0.5.1# /sbin/modprobe splat
root@osdba-laptop:/usr/src/spl-0.5.1# splat -t kmem:all
------------------------------ Running SPLAT Tests ------------------------------
kmem:kmem_alloc Pass
kmem:kmem_zalloc Pass
kmem:vmem_alloc Pass
kmem:vmem_zalloc Pass
kmem:slab_small Pass
kmem:slab_large Pass
kmem:slab_align Pass
kmem:slab_reap Pass
kmem:slab_age Pass
kmem:slab_lock Pass
kmem:slab_overcommit Pass
kmem:vmem_size Pass
OK,没有问题。
然后把ZFS解压到/usr/src/下
这时进行./configure时报如下一个错误:
configure: error: in `/usr/src/zfs-0.5.1':
configure: error:
*** uuid/uuid.h missing, libuuid-devel package required
See `config.log' for more details.
说是需要安装libuuid-devel的包,没有找到libuuid-devel的包,找到一个uuid-dev的包,估计差不多,安装:
root@osdba-laptop:/usr/src/zfs-0.5.1# aptitude install uuid-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
正在读取扩展状态文件
正在初始化软件包状态... 完成
下列“新”软件包将被安装。
uuid-dev
0 个软件包被升级,新安装 1 个, 0 个将被删除, 同时 0 个将不升级。
需要获取 76.6kB 的存档。 解包后将要使用 193kB。
正在编辑扩展状态信息... 完成
读取:1 http://cn.archive.ubuntu.com/ubuntu/ lucid/main uuid-dev 2.17.2-0ubuntu1 [76.6kB]
已下载 76.6kB,耗时 0秒 (83.3kB/s)
选中了曾被取消选择的软件包 uuid-dev。
(正在读取数据库 ... 系统当前总共安装有 241612 个文件和目录。)
正在解压缩 uuid-dev (从 .../uuid-dev_2.17.2-0ubuntu1_amd64.deb) ...
正在处理用于 man-db 的触发器...
正在设置 uuid-dev (2.17.2-0ubuntu1) ...
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
正在读取扩展状态文件
正在初始化软件包状态... 完成
正在编辑扩展状态信息... 完成
然后再./configure就通过了,然后,准备使用一下ZFS:
root@osdba-laptop:/usr/src/zfs-0.5.1# zpool status
zpool: error while loading shared libraries: libspl.so.0: cannot open shared object file: No such file or directory
说明找不到libspl.so.o,这个原因估是是没有把/usr/local/lib目前加到库的搜索路径中:
root@osdba-laptop:/usr/local/lib# export LD_LIBRARY_PATH=/usr/local/lib
root@osdba-laptop:/usr/local/lib# zpool status
Unable to open /dev/zfs: 没有那个文件或目录.
Verify the ZFS module stack is loaded by running '/sbin/modprobe zfs'.
root@osdba-laptop:/usr/local/lib#
root@osdba-laptop:/opt/zfs# dd if=/dev/zero of=c0d2 bs=1024k count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,0.193669 秒,541 MB/秒
root@osdba-laptop:/opt/zfs# dd if=/dev/zero of=c1d0 bs=1024k count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,0.217518 秒,482 MB/秒
root@osdba-laptop:/opt/zfs# dd if=/dev/zero of=c1d1 bs=1024k count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,0.33618 秒,312 MB/秒
root@osdba-laptop:/opt/zfs# dd if=/dev/zero of=c1d2 bs=1024k count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,0.202078 秒,519 MB/秒
root@osdba-laptop:/opt/zfs#
root@osdba-laptop:/opt/zfs# ls -l
总用量 614404
-rw-r--r-- 1 root root 104857600 2010-11-09 21:49 c0d0
-rw-r--r-- 1 root root 104857600 2010-11-09 21:49 c0d1
-rw-r--r-- 1 root root 104857600 2010-11-09 21:49 c0d2
-rw-r--r-- 1 root root 104857600 2010-11-09 21:49 c1d0
-rw-r--r-- 1 root root 104857600 2010-11-09 21:49 c1d1
-rw-r--r-- 1 root root 104857600 2010-11-09 21:49 c1d2