Hallo, seit dem 14. Januar gibt es von http://kqinfotech.com, einem Indischen Technologieunternehmen, nun den nötigen POSIX-Layer und zfs on linux in der zpool version v28. Das Ganze scheint mit zfs v4 zu laufen. Es gibt Links auf ein Howto und ein Installscript, das die git sourcen zieht alles kompiliert und installiert. Das Skript sorgt dafür, dass nötige Abhängiggkeiten für 10.04 oder 10.11 nachinstalliert werden.
Bezeichnungen der Pakete:
$ cat lzfs/META
Meta: 1
Name: lzfs
Branch: 1
Version: 1.0
Release: 1
Release-Tags: relext
$ cat zfs/META
Meta: 1
Name: zfs
Branch: 1.0
Version: 0.5.1
Release: 1
Release-Tags: relext
License: CDDL
Author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
$ cat spl/META
Meta: 1
Name: spl
Branch: 1.0
Version: 0.5.2
Release: 1
Release-Tags: relext
Kernel und Module:
$ uname -a
Linux ubuntu 2.6.32-28-preempt #55-Ubuntu SMP PREEMPT Tue Jan 11 00:11:58 UTC 2011 x86_64 GNU/Linux
$ lsmod |grep zfs
lzfs 37235 4
zfs 970777 1 lzfs
zcommon 42140 1 zfs
znvpair 47453 2 zfs,zcommon
zavl 6891 1 zfs
zunicode 323310 1 zfs
spl 118520 7 lzfs,zfs,zcommon,znvpair,zavl,zunicode,splat
zlib_deflate 21834 3 zfs,deflate,btrfs
$ modinfo lzfs
filename: /lib/modules/2.6.32-28-preempt/addon/lzfs/lzfs.ko
license: GPL
srcversion: CE01A092104BE873B866A3D
depends: zfs,spl
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
gerhard@ubuntu:/mnt/custom/zfspool$ modinfo spl
filename: /lib/modules/2.6.32-28-preempt/addon/spl/spl/spl.ko
license: GPL
description: Solaris Porting Layer
author: Lawrence Livermore National Labs
srcversion: 08963022EE0E20D76AD6A0F
depends:
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
parm: spl_debug_subsys:Subsystem debugging level mask. (ulong)
parm: spl_debug_mask:Debugging level mask. (ulong)
parm: spl_debug_printk:Console printk level mask. (ulong)
parm: spl_debug_mb:Total debug buffer size. (int)
parm: spl_debug_panic_on_bug:Panic on BUG (uint)
gerhard@ubuntu:/mnt/custom/zfspool$ modinfo zfs
filename: /lib/modules/2.6.32-28-preempt/addon/zfs/zfs/zfs.ko
license: CDDL
author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
description: ZFS
srcversion: F97608907C167060A7CF464
depends: spl,znvpair,zcommon,zunicode,zavl,zlib_deflate
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
parm: zvol_major:Major number for zvol device (uint)
parm: zvol_threads:Number of threads for zvol device (uint)
parm: zio_bulk_flags:Additional flags to pass to bulk buffers (int)
parm: zfs_vdev_max_pending:Maximum pending VDEV IO (int)
parm: zfs_vdev_min_pending:Minimum pending VDEV IO (int)
parm: zfs_vdev_aggregation_limit:Maximum VDEV IO aggregation (int)
parm: spa_config_path:SPA config file (/etc/zfs/zpool.cache) (charp)
parm: zevent_len_max:Maximum event queue length (int)
parm: zevent_cols:Maximum event column width (int)
parm: zevent_console:Log events to the console (int)
parm: zfs_prefetch_disable:Disable all ZFS prefetching (int)
parm: zfs_arc_min:Minimum arc size (ulong)
parm: zfs_arc_max:Maximum arc size (ulong)
parm: zfs_arc_meta_limit:Meta limit for arc size (ulong)
$ modinfo zcommon
filename: /lib/modules/2.6.32-28-preempt/addon/zfs/zcommon/zcommon.ko
license: CDDL
author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
description: Generic ZFS support
srcversion: E408A83FE6351C8FFCAFD0F
depends: spl,znvpair
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
$ modinfo znvpair
filename: /lib/modules/2.6.32-28-preempt/addon/zfs/nvpair/znvpair.ko
license: CDDL
author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
description: Generic name/value pair implementation
srcversion: 975E8F8B8CCDFBF44CA74F5
depends: spl
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
$ modinfo zavl
filename: /lib/modules/2.6.32-28-preempt/addon/zfs/avl/zavl.ko
license: CDDL
author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
description: Generic AVL tree implementation
srcversion: 5835515F233A845D5B11799
depends: spl
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
$ modinfo zunicode
filename: /lib/modules/2.6.32-28-preempt/addon/zfs/unicode/zunicode.ko
license: CDDL
author: Sun Microsystems/Oracle, Lawrence Livermore National Laboratory
description: Unicode implementation
srcversion: 943EB776D6CC4E1BCED8C36
depends: spl
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversions
$ modinfo splat
filename: /lib/modules/2.6.32-28-preempt/addon/spl/splat/splat.ko
license: GPL
description: Solaris Porting LAyer Tests
author: Lawrence Livermore National Labs
srcversion: 3BD340BC00BCDA7E1C4E048
depends: spl
vermagic: 2.6.32-28-preempt SMP preempt mod_unload modversion
Beispiel:
$ sudo zpool get version zfspool
[sudo] password for floogy:
NAME PROPERTY VALUE SOURCE
zfspool version 28 default
$ sudo zfs get version zfspool
NAME PROPERTY VALUE SOURCE
zfspool version 4 -
$ sudo zfs list zfspool
NAME USED AVAIL REFER MOUNTPOINT
zfspool 293G 78,9G 21K /zfspool
$ sudo zpool list zfspool
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zfspool 372G 287G 84,8G 77% 1.05x ONLINE -
$ sudo zpool status zfspool
pool: zfspool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zfspool ONLINE 0 0 0
sdd2 ONLINE 0 0 0
sdb3 ONLINE 0 0 0
errors: No known data errors
bonnie++
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ubuntu 6G 37 49 64139 21 34414 13 110 67 126738 21 122.8 6
Latency 471ms 1378ms 8569ms 127ms 868ms 946ms
Version 1.96 ------Sequential Create------ --------Random Create--------
ubuntu -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 419 3 +++++ +++ 3804 34 4268 37 +++++ +++ 2829 43
Latency 599ms 7589us 972ms 103ms 9980us 16794us
1.96,1.96,ubuntu,1,1295664977,6G,,37,49,64139,21,34414,13,110,67,126738,21,122.8,6,16,,,,,419,3,+++++,+++,3804,34,4268,37,+++++,+++,2829,43,471ms,1378ms,8569ms,127ms,868ms,946ms,599ms,7589us,972ms,103ms,9980us,16794us
$ time dd if=/dev/zero of=/mnt/custom/zfspool/outfile bs=16k count=1638400
1638400+0 Datensätze ein
1638400+0 Datensätze aus
26843545600 Bytes (27 GB) kopiert, 203,495 s, 132 MB/s
real 3m23.503s
user 0m0.490s
sys 0m54.962s
Hier ein zpool aus zwei gespiegelten imagedateien, die unter / liegen:
$ time sudo dd if=/dev/zero of=/myzfs/floogy/outfile bs=16k count=16384
16384+0 Datensätze ein
16384+0 Datensätze aus
268435456 Bytes (268 MB) kopiert, 1,0935 s, 245 MB/s
real 0m1.127s
user 0m0.011s
sys 0m0.545s
Zum Vergleich auf das ext3 gemountete / Verzeichnis:
$ time sudo dd if=/dev/zero of=/outfile bs=16k count=16384
16384+0 Datensätze ein
16384+0 Datensätze aus
268435456 Bytes (268 MB) kopiert, 1,36552 s, 197 MB/s
real 0m3.026s
user 0m0.012s
sys 0m0.936s
Ich bin mal gespannt wie sich das auf die Distributionen auswirkt, ob es dort Modelle geben wird in denen zfs ähnlich den proprietären Treibern wie nvidia etc. angeboten wird, eventuell noch mit Kompilierung und sourcedownload, ähnlich den msttcorefonts...
Hier gibt es einen Artikel mit vergleichenden Benchmarks:
http://www.phoronix.com/scan.php?page=article&item=linux_kqzfs_benchmarks&num=1
Ich habe hier einmal zum Vergleich die BRTFS Performance:
$ mount|grep media
/media/cdrom0 on /var/chroot/media/cdrom type none (rw,bind)
/dev/sdd1 on /media/898c8973-ae88-454d-b76b-c540660909d1 type btrfs (rw,nosuid,nodev,uhelper=udisks)
$ blkid|grep btrfs
/dev/sdb1: UUID="898c8973-ae88-454d-b76b-c540660909d1" UUID_SUB="4a38e4b4-f100-4e8f-b3f8-5f59b51deff3" TYPE="btrfs"
/dev/sdd1: UUID="898c8973-ae88-454d-b76b-c540660909d1" UUID_SUB="8cea971c-949c-434d-8c90-73c7da3f6c3d" TYPE="btrfs"
$ df -h /media/898c8973-ae88-454d-b76b-c540660909d1
Dateisystem Größe Benut Verf Ben% Eingehängt auf
/dev/sdd1 373G 310G 64G 83% /media/898c8973-ae88-454d-b76b-c540660909d1
$ time sudo dd if=/dev/zero of=/media/898c8973-ae88-454d-b76b-c540660909d1/outfile bs=16k count=16384
16384+0 Datensätze ein
16384+0 Datensätze aus
268435456 Bytes (268 MB) kopiert, 1,7911 s, 150 MB/s
real 0m4.637s
user 0m0.008s
sys 0m0.773s
$ time sudo dd if=/dev/zero of=/media/898c8973-ae88-454d-b76b-c540660909d1/outfile bs=16k count=1638400
1638400+0 Datensätze ein
1638400+0 Datensätze aus
26843545600 Bytes (27 GB) kopiert, 508,981 s, 52,7 MB/s
real 8m29.375s
user 0m0.432s
sys 0m53.355s
$ bonnie++ -d /media/898c8973-ae88-454d-b76b-c540660909d1/bonnie++
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ubuntu 6G 57 45 40289 16 21937 7 74 31 42479 7 109.4 76
Latency 305ms 242ms 645ms 52716us 190ms 253ms
Version 1.96 ------Sequential Create------ --------Random Create--------
ubuntu -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 4026 19 +++++ +++ 3738 27 5141 25 +++++ +++ 2807 21
Latency 26209us 20734us 28343us 32137us 22047us 32759us
1.96,1.96,ubuntu,1,1295664961,6G,,57,45,40289,16,21937,7,74,31,42479,7,109.4,76,16,,,,,4026,19,+++++,+++,3738,27,5141,25,+++++,+++,2807,21,305ms,242ms,645ms,52716us,190ms,253ms,26209us,20734us,28343us,32137us,22047us,32759us