分类: LINUX
2011-02-06 22:19:52
因为版权的问题,使用 GPL 协议的 Linux 内核无法直接使用 CDDL 协议的 ZFS 文件系统,有一个办法可以绕过这个问题,就是先把 ZFS 代码编译成版权为 CDDL 的内核模块,然后 Linux 内核加载一个 CDDL 协议的内核模块,很高兴已经有人这么做了,所以我们终于有了原生的 Linux ZFS 文件系统。在 Linux 上和 ZFS 相似的还有一个 Btrfs 文件系统,被称为 Linux 下一代文件系统,起初是由 Oracle 开发的,有意思的是 Oracle 收购 SUN 后又得到了 ZFS,不过因为 Btrfs 使用的是 GPL 协议,所以不管 Oracle 的态度如何,对 Btrfs 的影响有限。
安装必备软件包:
# yum install kernel-devel rpm-build
下载、编译和安装 SPL 包:
# wget # tar zxvf spl-0.5.1.tar.gz # cd spl-0.5.1 # ./configure # make rpm # rpm -Uvh *.x86_64.rpm
加载 splat 模块到内核,并测试:
# /sbin/modprobe splat # 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
下载、编译和安装 ZFS 包:
# wget # tar zxvf zfs-0.5.1.tar.gz # cd zfs-0.5.1 # ./configure # make pkg # rpm -Uvh *.x86_64.rpm
加载 zfs 模块到内核,并测试:
# /sbin/modprobe zfs # /usr/libexec/zfs/zpios-sanity.sh status name id wr-data wr-ch wr-bw rd-data rd-ch rd-bw ------------------------------------------------------------------------------- PASS: file-raid0 0 64m 64 112.68m 64m 64 4.81g PASS: file-raid10 0 64m 64 10.46m 64m 64 876.71m PASS: file-raidz 0 64m 64 12.14m 64m 64 780.49m PASS: file-raidz2 0 64m 64 17.68m 64m 64 14.66m PASS: lo-raid0 0 64m 64 1.30g 64m 64 876.71m PASS: lo-raid10 0 64m 64 666.67m 64m 64 14.65m PASS: lo-raidz 0 64m 64 1.10g 64m 64 876.71m PASS: lo-raidz2 0 64m 64 492.31m 64m 64 876.71m
如果上述加载内核模块有问题,建议重启系统后重新加载试一下,并检查是否模块加载成功:
# reboot # /sbin/modprobe splat # /sbin/modprobe zfs # lsmod Module Size Used by zfs 866368 0 zcommon 75504 1 zfs znvpair 82432 2 zfs,zcommon zavl 40576 1 zfs zlib_deflate 52825 1 zfs zunicode 353664 1 zfs splat 160848 0 ...