问题在底部。
我有几个ZFS文件系统我想使用ZFS压缩,但是由于启用压缩只会影响写入文件系统的新数据,所以我想编写一个可以迁移文件系统的脚本,这样所有的数据都被压缩了。
这是我的testing尝试
du -h /tmp/dump.txt zfs create -p tank3/xtest1/fs cp /tmp/dump.txt /tank3/xtest1/fs zfs list | grep xtest zfs create tank3/xtest2 zfs set compression=lzjb tank3/xtest2 zfs inherit compression tank3/xtest2 zfs snapshot tank3/xtest1/fs@snap zfs send tank3/xtest1/fs@snap | zfs receive tank3/xtest2/fs zfs get compression tank3/xtest2/fs zfs list | grep xtest zfs destroy -r tank3/xtest1 zfs destroy -r tank3/xtest2 echo "test 2" zfs create tank3/xtest2 zfs set compression=lzjb tank3/xtest2 zfs list | grep xtest cp /tmp/dump.txt /tank3/xtest2 zfs list | grep xtest zfs get compressratio tank3/xtest2 zfs destroy -r tank3/xtest2
这使
344M /tmp/dump.txt tank3/xtest1 575K 6.38T 288K /tank3/xtest1 tank3/xtest1/fs 288K 6.38T 288K /tank3/xtest1/fs NAME PROPERTY VALUE SOURCE tank3/xtest2/fs compression off default tank3/xtest1 344M 6.38T 304K /tank3/xtest1 tank3/xtest1/fs 344M 6.38T 344M /tank3/xtest1/fs tank3/xtest2 344M 6.38T 288K /tank3/xtest2 tank3/xtest2/fs 344M 6.38T 344M /tank3/xtest2/fs test 2 tank3/xtest2 288K 6.38T 288K /tank3/xtest2 tank3/xtest2 288K 6.38T 288K /tank3/xtest2 NAME PROPERTY VALUE SOURCE tank3/xtest2 compressratio 1.00x -
在第一次testing中,我会希望在创buildtank3/xtest2/fs时复制会压缩数据,但新创build的文件系统在使用发送/接收接口时不会inheritance压缩。
在testing2中,我看不到344MB文件需要任何空间。
从我可以告诉压缩不起作用。
题
为什么我看到这些奇怪的结果?
我应该如何迁移一个没有压缩的文件系统进行压缩?
更新
增加了compressratio属性,显示没有压缩。 dump.txt可以压缩到190MB。
复制数据。
就这些。
在你的例子中有一堆缺less的输出,但没关系。 将数据移动到压缩文件系统中唯一需要做的就是通过复制,移动或填充新的文件系统来重写数据。
通过在池级别启用压缩以避免在将来的情况下出现问题,从而使其由新的文件系统inheritance。 另外,使用lz4压缩标志。 这通常更好 。
尽pipedump.txt是高度可压缩的,但事实certificate,由于某些原因,zfs不会压缩它。
再次用其他数据重做我的实验,事实certificate,发送/接收将压缩数据。 这里我已经在zpool上设置了压缩,所以所有的文件系统都会inheritance这个。 我也在这里使用Linux,但这不应该。
# dd if=/dev/zero of=/mnt/dat0/zpool1 bs=1M count=1000 # dd if=/dev/zero of=/mnt/dat0/zpool2 bs=1M count=1000 # service zfs-fuse restart # zpool create zpool1 /mnt/dat0/zpool1 # zpool create zpool2 /mnt/dat0/zpool2 # zfs set compression=on zpool1 # zfs create zpool1/fs1 # zfs create zpool2/fs2 # cp -r /etc/ /var/log /zpool2/fs2/ # zfs snapshot zpool2/fs2@snap # zfs send zpool2/fs2@snap | zfs receive zpool1/fs2 # zfs get compressratio zpool1/fs2 NAME PROPERTY VALUE SOURCE zpool1/fs2 compressratio 4.75x -