While there is a lot of buzz about Apple using ZFS, Solaris express of course uses it, and soon Solaris regular will use it (as of Solaris update 2). Yet there are many people that say ZFS is great for servers but people don’t need it at home. This blog entry seeks to clear up this falacy. ZFS is possibly more needed at home.
Snapshots are the baumb, and one of the few things I sorely miss on my Mac’s HFS+ drive.
However, snapshots are not unique to ZFS as NTFS, UFS2, XFS, and others already have this.
The most useful feature for server and home use that is unique to ZFS is its storage pool abstraction. You can add & remove physical drives at will, ending any need for system re-formats or installations when you run out of space on an aging drive. Simply add a new drive to the pool and, viola! Expanded storage.
As HiDef and disk-based media become mainstream, ZFS’s flexibility in storage expansion will be a killer feature. No wonder Apple wants to port ZFS to Mac.
P.S.
My only nit-pick is the author’s claim to ZFS being infinitely scalable. 🙂
Edited 2006-05-02 20:24
The most useful feature for server and home use that is unique to ZFS is its storage pool abstraction. You can add & remove physical drives at will, ending any need for system re-formats or installations when you run out of space on an aging drive. Simply add a new drive to the pool and, viola! Expanded storage.
Thats what lvm been doing for some time now.
Do snapshots in LVM take only a second or two? Given their speed, how much space is needed?
Do snapshots in LVM take only a second or two?
Sorry, can’t give you numbers for big volumes but it takes 0.6s to snapshot a 13GB one.
Given their speed, how much space is needed?
Quoting the man page:
The snapshot does not need the same amount of storage the origin has. In a typical scenario, 15-20% might be enough.
True, but isn’t an LVM an extra layer on top of a filesystem and much more complicated to use than what ZFS has? ZFS has this feature built-in.
Also, aren’t ZFS storage pools much faster to create than LVM?
iirc LVM is more like a layer below the filesystem then a layer above. only diff i can see is that ZFS have this layer buildt in, while LVM is filesystem agnostic…
The most useful feature for server and home use that is unique to ZFS is its storage pool abstraction. You can add & remove physical drives at will, ending any need for system re-formats or installations when you run out of space on an aging drive. Simply add a new drive to the pool and, viola! Expanded storage.
http://www.fsl.cs.sunysb.edu/project-unionfs.html
unionfs *does not* provide facilities to provide such scalability. Look in the archives of the users list, there are plenty of people who’s had that idea, but it doesn’t fly.
My only nit-pick is the author’s claim to ZFS being infinitely scalable.
Why is that a nitpick? Is it because if you can put a number to it then it can’t be infinite?
Think about how many bits there are in 2^128. Now think about how many atoms you need … for all intents and purposes, 2^128 is actually infinite.
The most useful feature for server and home use that is unique to ZFS is its storage pool abstraction. You can add & remove physical drives at will, ending any need for system re-formats or installations when you run out of space on an aging drive. Simply add a new drive to the pool and, viola! Expanded storage.
That’s a nightmare for home use ! The older drive will fail faster than the new drive, effectively limiting the lifespan of all your data on that storage pool to that of the oldest disk (or the first to fail).
Just use them as seperate disks that way you only use half your data when one dies.
That’s a nightmare for home use ! The older drive will fail faster than the new drive, effectively limiting the lifespan of all your data on that storage pool to that of the oldest disk (or the first to fail).
ZFS makes raid availble, when one disk of your mirror or raidz dies your data lives on. ZFS also has checksums all the way from the application to drive and back, as soon as a drive begins to fail, ZFS will notice and log the occurance and automaticly rewrites the data on faulty disk if possible. No phd is storage technology needed. If you have 2 disks you mirror, if you have 3 or more you use raidz (like raid 5 with other features that make it even better). With ZFS the drives don’t even have to be exactly the same size. Note these rules are over simplified and aimed at the home user, a bussiness may want to use mirror’s for all of its storage.
Of course if you still beleve its better to have one drive per pool, ZFS is more than happy to do that just add each drive to its own pool, and it still gives you all the ease of use features, snapshots, easy interface, quotas, reversations, and on disk compression.
Note that I said home use. The original parent was talking about just adding a disk to a system then adding it to the storage pool. to expand capacity. Sure you can raid, mirror, whatever but that won’t be the case for home use and it wasn’t in his example (one disk there + one disk added for expansion).
I think about it the opposite way: Why not use ZFS at home? Even if you don’t use multiple drives or snapshots, it’s still faster and more reliable. It can’t hurt.
BTW, the ZFS command line usability argument doesn’t apply to OS X. Whatever Apple does, it will be easy to use.
As much as I like ZFS, why do you think it’s faster on single disk?
Random writes could be (much) faster, since they become sequential on zfs managed disk, but for other situations, I don’t think ZFS is faster in most cases.
Higher reliability (correctness) come with some costs
Random writes could be (much) faster, since they become sequential on zfs managed disk, but for other situations, I don’t think ZFS is faster in most cases.
Faster random writes, and only saving the delta (as far as I understand it) should give plenty of performance on a desktop system.
I’ve oft wondered what the ideal desktop system would look like, and having unified disks, with built in failsafes, easy rollbacks and decent performance, would be part of it.
I do not know what properties make a file system fast, but with all of its advanced features, how is performance?
Especially when you add HDD and the virtual HDD size grows, doesn’t that impact performance?
performance is awesome, and getting better. I should give some details on my setup used in the document. First those times aren’t from some opteron box, but a 10 year old Sun Ultra 2 2x 300mhz cpus. It has 20MB/s scsi channel lots of new boxes have better IO speed but its no slouch. It has 4x 9GB 10k rpm scsi drives + 5x 4.3GB 7200 rpm drives in a single pool. I’m currently behind on upgrades. I run Solaris Express build 27, current is 37 and there have been lots of speed improvements in those last 10 builds. Yet this setup manages 19MB/s reads of the pool, and 11-13MB/s writes. Anyone that has experience with software raid on a fast/wide scsi setup will be amazed that I can get 13MB/s writes but this is part of how ZFS’s raidz works.
Here is my drive pool.
# zpool status
pool: data
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz ONLINE 0 0 0
c0t11d0 ONLINE 0 0 0
c0t12d0 ONLINE 0 0 0
c0t13d0 ONLINE 0 0 0
c0t14d0 ONLINE 0 0 0
raidz ONLINE 0 0 0
c0t3d0 ONLINE 0 0 0
c0t4d0 ONLINE 0 0 0
c0t8d0 ONLINE 0 0 0
c0t9d0 ONLINE 0 0 0
c0t10d0 ONLINE 0 0 0
#
# mkfile 1g test2 &
[1] 27949
# zpool iostat 1
capacity operations bandwidth
pool used avail read write read write
———- —– —– —– —– —– —–
data 44.5G 8.83G 0 2 579 7.78K
data 44.5G 8.83G 3 90 24.0K 11.3M
data 44.5G 8.83G 30 97 123K 12.2M
data 44.5G 8.83G 3 91 15.8K 11.4M
data 44.5G 8.83G 2 109 23.7K 13.7M
data 44.5G 8.83G 6 97 27.7K 12.1M
# dd if=test2 of=/dev/null bs=128k &
[2] 28031
# zpool iostat 1
capacity operations bandwidth
pool used avail read write read write
———- —– —– —– —– —– —–
data 47.8G 5.58G 0 2 1.95K 18.8K
data 47.8G 5.58G 156 0 19.4M 0
data 47.8G 5.58G 130 0 16.2M 0
data 47.8G 5.58G 150 0 18.7M 0
data 47.8G 5.58G 139 0 17.2M 0
data 47.8G 5.58G 155 0 19.3M 0
data 47.8G 5.58G 163 0 19.9M 0
data 47.8G 5.58G 144 0 17.4M 0
Well there are the numbers not too shabby for a 10 year old box with a 20MB/s scsi channel? Newer boxes I have seen do over 300MB/s both read and write.
For a normal home user to master ZFS technology by command line, it would require him a time that is equivalent to probably mastering a whole new OS lets say like windows or Mac. These technologies that come out of Sun are like those that come out of IBM, I mean they are meant for big partners to implemet them.
So, lets say if apple or linux didn’t implemet this technology in the right simple user-friendly way then it would be useless.
Solaris for example did have this technology but it is targeting administrators because it’s difficult to understand by new comers, even the web page of this article was named “Unix Admin”
The same obstacles hold true for RAID and other technologies on modern OSs.
I have always wished to see solaris as a viable desktop OS that competes with other high quality desktop OSs out there but the time didn’t come yet.. I am waiting Sun.
Edited 2006-05-03 06:43
I read somewhere there’s some license issue with Linux kernel why ZFS can’t be ported to Linux, is this true? Will I never be able to use ZFS? I think of myself as quite a typical home user, I don’t do backups (because it’s just annoying and time-consuming), I just use the system. But just slapping a new hard drive, typing a few commands on the console and instantly having the space available sounds quite great indeed. And I think I’d like to have all my document directories and such compressed, just to save what little space I can. But, still, as far as I understood, I’d need atleast 3 drives for fault-tolerant raidz. I just don’t know would ZFS be worth all the fuss after all?
The GPL is incompatible with CDDL. I think you can figure out the issue for yourself there.
Yes, because GPL2 is viral. Other license aren’t (for example the BSD license, or the Apache license). So feel free to port ZFS for FreeBSD, OpenBSD, NetBSD, MacOSX etc.
The problem here is the Linux license. DTrace for example (another feature of OpenSolaris) is already being ported to FreeBSD.
To clarify, the issue here is with GPL2, not CDDL.
As I understand it, GPL3 may fix this (but Linux won’t be made available under GPL3)
Licenses are incompatible, but why can’t zfs be implemented as a kernel module?
Becuase it is still linked dynamically at run time which the GPL forbids cross-licence. Maybe you could get away with a binary blob and a small wrapper like NVidia/ATI do?
Or implement it with FUSE. Lots of options, none of which are very realistic. The amount of users who use something other than ext2/3, or who are even aware alternatives exist still make up the majority. The rest of us is too small of a group to cather to unless someone really needs ZFS on linux in any way for himself. Itch, scratch, etc.
But who knows, nothing is impossible.
I think the only feasbile option (at least in the near future) for people that want a *nix system to run Linux apps (for the few binary only Linux apps or the open source ones that don’t run [well] natively on Solaris) and use ZFS will be BrandZ + lx brand but I don’t see it ever becoming an issue really, Linux users seem quite happy with what they have. I would love to see ZFS on my Mac though…
Why some linux users want something from Sun ?
They are always saying that Linux is the best outa there and that all the things made bu Sun suxe …
Heh, I just wonder what will happen with resource/data fork support. I remember trying out UFS(IIRC) when I first got the initial 10.0 release(never tried it with the DP builds or the public beta) only to watch it not even be able to fully boot up OSX with nary a word of warning in the printed docs(hah!) or through the on computer installation process. Needless to say UFS didn’t last any longer than it took me to reboot the install CD reformat the drive to HFS+, and re-install.
Hopefully Apple will add in good enough resource/data fork support (preferable) or do a complete migration away from that file storage system(non-preferable, as I have visions of registry hell).
My only other current problem are the bloated universal binary apps. I mean I just cut both firefox AND Camino app sizes in half by removing x86 support from them. As it stands now, I’m on broadband again for the time being so the dl is not bad, but if I have to go back to dialup for whatever reason the size of the apps will be killer, and the mac notebooks that I use are older models with limited (still large, but I use alot of it for my own data and really don’t want to be wasting good size chunks for x86 support) disk space. ATM it’s not worth upgrading their drives, and probably by the time it is, it’d be cheaper/better just to invest in a new mac notebook, at which point I can bitch about the powerpc code sucking up disk space. (Also blow away foreign languages with monolingual, which netted me around .5G more of disk space…) I really wish that developers with x86/ppc support would just release separate binary packages. Universal/FAT binaries are a “neat” feature, but still needlessly increase app size.