ZFS compression algorithm lzjb, gzip, gzip-[0-9], zle, lz4 compare

zfs提供几种压缩算法, 

lzjb, gzip, gzip-[0-9], zle, lz4

其中默认的压缩算法为lzjb, 这个是ZFS的作者Jeff Bonwick提供的, gzip默认的压缩级别为6, 或者指定压缩级别.

这里主要测试一下压缩时间和压缩比.

注意, 压缩选项默认是关闭的, 压缩选项针对dataset来设置, 同一个pool中不同的dataset可以设置不同的压缩算法, 也可以开关混用. 对于未使用压缩的dataset, 如果已经存在数据的话, 开启压缩后, 之后的数据会压缩, 但是之前存储的数据不会变动. 

首先测试的是lzjb.

[root@spark01 digoal]# rm -rf /zp/test/*
[root@spark01 digoal]# zfs set compression=lzjb zp/test
[root@spark01 digoal]# date +%F%T; cp -r hadoop-2.4.0* spl-0.6.2* zfs-0.6.2* /zp/test/ ; date +%F%T;
2014-05-1916:00:45
2014-05-1916:01:00  15秒
[root@spark01 digoal]# zfs get all zp/test|grep compress
zp/test  compressratio         1.49x                  -
zp/test  compression           lzjb                   local
zp/test  refcompressratio      1.49x                  -

测试gzip

[root@spark01 digoal]# rm -rf /zp/test/*
[root@spark01 digoal]# zfs set compression=gzip zp/test
[root@spark01 digoal]# date +%F%T; cp -r hadoop-2.4.0* spl-0.6.2* zfs-0.6.2* /zp/test/ ; date +%F%T;
2014-05-1916:01:47
2014-05-1916:02:02  15秒
[root@spark01 digoal]# zfs get all zp/test|grep compress
zp/test  compressratio         1.77x                  -
zp/test  compression           gzip                   local
zp/test  refcompressratio      1.77x                  -

测试gzip-9

[root@spark01 digoal]# rm -rf /zp/test/*
[root@spark01 digoal]# zfs set compression=gzip-9 zp/test
[root@spark01 digoal]# date +%F%T; cp -r hadoop-2.4.0* spl-0.6.2* zfs-0.6.2* /zp/test/ ; date +%F%T;
2014-05-1916:03:01
2014-05-1916:03:18  17秒
[root@spark01 digoal]# zfs get all zp/test|grep compress
zp/test  compressratio         1.59x                  -
zp/test  compression           gzip-9                 local
zp/test  refcompressratio      1.59x                  -
测试zle
[root@spark01 digoal]# rm -rf /zp/test/*
[root@spark01 digoal]# zfs set compression=zle zp/test
[root@spark01 digoal]# date +%F%T; cp -r hadoop-2.4.0* spl-0.6.2* zfs-0.6.2* /zp/test/ ; date +%F%T;
2014-05-1916:03:47
2014-05-1916:04:04  17秒
[root@spark01 digoal]# zfs get all zp/test|grep compress
zp/test  compressratio         1.09x                  -
zp/test  compression           zle                    local
zp/test  refcompressratio      1.09x                  -

测试lz4

[root@spark01 digoal]# rm -rf /zp/test/*
[root@spark01 digoal]# zfs set compression=lz4 zp/test
[root@spark01 digoal]# date +%F%T; cp -r hadoop-2.4.0* spl-0.6.2* zfs-0.6.2* /zp/test/ ; date +%F%T;
2014-05-1916:04:25
2014-05-1916:04:39  14秒
[root@spark01 digoal]# zfs get all zp/test|grep compress
zp/test  compressratio         1.43x                  -
zp/test  compression           lz4                    local
zp/test  refcompressratio      1.43x                  -

不压缩的情况测试 : 

[root@spark01 digoal]# zfs set compression=off zp/test
[root@spark01 digoal]# rm -rf /zp/test/*
[root@spark01 digoal]# date +%F%T; cp -r hadoop-2.4.0* spl-0.6.2* zfs-0.6.2* /zp/test/ ; date +%F%T;
2014-05-1916:09:19
2014-05-1916:09:38  19秒

从测试结果来看, gzip6的压缩比最高, 同时时间也比较折中, 推荐使用.

另外作者的算法lzjb也是被大多数人推荐使用的.

建议所有的dataset都开启压缩, 从测试数据来看, 显然CPU不是问题, IO是大问题. 因为未开启压缩的情况下, 耗时是最长的.

[参考]

1. https://pthree.org/2012/12/18/zfs-administration-part-xi-compression-and-deduplication/

时间: 2024-12-23 22:17:18

ZFS compression algorithm lzjb, gzip, gzip-[0-9], zle, lz4 compare的相关文章

Node.js站点使用Nginx作反向代理时配置GZip压缩的教程_nginx

node.js 开发的站点,如果你也是用了nginx实现反向代理. 那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅. 前提条件: node.js + nginx 反向代理. node.js 需要做的工作: express 4.0以下版本: app.use(express.compress()); //主要是这句 app.use(express.json()); app.use(express.urlencoded()); app.use(express.bodyParser());

php使用gzip压缩传输js和css文件的方法_php技巧

本文实例讲述了php使用gzip压缩传输js和css文件的方法.分享给大家供大家参考.具体如下: <?php /** * 完整调用示例: * 1.combine.php?t=j&b=public&fs=jslib.jquery,function * * 该例子调用的是网站根目录下的public/jslib/jquery.js和public/function.js * * 2.combine.php?t=j&fs=jslib.jquery,function * * 该例子调用的

apache和nigx中GZIP开启方法介绍

如何查看自己的网站已经开启gzip了? 方法-: 通过在线的工具比如(站长之家)查询,比如的我的博客开启了在查询就如图:QQ截图     方法二: 通过浏览器的审查元素或者firebug之类工具查看服务器返回的header是否包含了"gzip" 如图: 如何开启呢? 要让apache支持gzip功能,要用到deflate_Module和headers_Module.打开apache的配置文件httpd.conf,大约在100行左右,找到以下两行内容:(这两配置隔个好几行) #LoadM

nginx下gzip配置参数详解_nginx

Nginx自带的有gzip模块 http://wiki.nginx.org/NginxChsHttpGzipModule ,这个模块支持在线实时压缩输出数据流.经过良好的配置优化,可以大幅的提升网站的输出效率. __使用范例__ 复制代码 代码如下: gzip on; gzip_min_length 1000; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain application/xml; 内

gzip压缩传输的几种配置方法

第一种方案:在.htaccess 中添加  代码如下 复制代码 AddHandler application/x-httpd-php .css .html .js #这是添加你要压缩的类型 php_value auto_prepend_file "/home/a4284418/public_html/gzip.php" #这是你给这些类型增加一个自动运行的php代码,后面一定要填你空间的绝对地址 gzip.php  代码如下 复制代码 <?php ob_start("o

VBS获取GZIP压缩的HTTP内容的实现代码_vbs

不少网站为了提高加载速度,启用HTTP服务器的GZIP压缩功能,当客户端发送的HTTP请求中声明可以接受GZIP编码时,服务器自动对HTTP响应内容进行GZIP压缩.但是,在VBS中想自动对GZIP编码进行解压就没有那么容易了. 不同组件对GZIP压缩的处理不尽相同,首先看Msxml2.XMLHTTP: 'By Demon 'http://demon.tw Dim http Set http = CreateObject("Msxml2.XMLHTTP") http.open &quo

ZFS (sync, async) R/W IOPS / throughput performance tuning

本文讨论一下zfs读写IOPS或吞吐量的优化技巧, (读写操作分同步和异步两种情况). 影响性能的因素 1. 底层设备的性能直接影响同步读写 iops, throughput. 异步读写和cache(arc, l2arc) 设备或配置有关. 2. vdev 的冗余选择影响iops, through. 因为ZPOOL的IO是均分到各vdevs的, 所以vdev越多, IO和吞吐能力越好. vdev本身的话, 写性能 mirror > raidz1 > raidz2 > raidz3 , 

use export and import move ZPOOL&#039;s underdev from one machine to another OR upgrade a zfs version OR recover destroyed pools

前面我们介绍了zfs的pool, 类似LVM. 由多个块设备组成. 如果这些块设备要从一个机器转移到另一台机器的话, 怎么实现呢? zfs通过export和import来实现底层块设备的转移. 在已有POOL的主机上, 先将会读写POOL或dataset的正在运行的程序停止掉, 然后执行export. 执行export会把cache flush到底层的块设备, 同时卸载dataset和pool. import时, 可能需要指定块设备的目录, 但是并不需要指定顺序. 例如 : [root@spar

用.NET 2.0压缩/解压功能处理大型数据

数据|压缩 摘要 如果你的应用程序从未使用过压缩,那么你很幸运.而对于另一部分使用压缩的开发人员来说,好消息是,.NET 2.0如今提供了两个类来处理压缩和解压问题.本文正是想讨论何时以及如何使用这些有用的工具. 引言 .NET框架2.0中的一个新名称空间是System.IO.Compression.这个新名称空间提供了两个数据压缩类:DeflateStream和GZipStream.这两个压缩类都支持无损压缩和解压,其设计目的是为了处理流式数据的压缩和解压问题. 压缩是减少数据大小的有效办法.