Stories
Slash Boxes
Comments

SoylentNews is people

posted by CoolHand on Tuesday September 11 2018, @03:29PM   Printer-friendly
from the zed-eff-ess-or-zee-eff-ess dept.

John Paul Wohlscheid over at It's FOSS takes a look at the ZFS file system and its capabilities. He mainly covers OpenZFS which is the fork made since Oracle bought and shut down Solaris which was the original host of ZFS. It features pooled storage with RAID-like capabilities, copy-on-write with snapshots, data integrity verification and automatic repair, and it can handle files up to 16 exabytes in size, with file systems of up to 256 quadrillion zettabytes in size should you have enough electricity to pull that off. Because it started development under a deliberately incompatible license, ZFS cannot be directly integrated in Linux. However, several distros work around that and provide packages for it. It has been ported to FreeBSD since 2008.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 5, Insightful) by pendorbound on Tuesday September 11 2018, @05:47PM (12 children)

    by pendorbound (2688) on Tuesday September 11 2018, @05:47PM (#733223) Homepage

    Linking ZFS into Linux isn't violating Oracle's license or copyright. They have no standing to take a position against you for doing so.

    Distributing linked binary code consisting of both GPL and CDDL licensed source is a violation of the GPL, not of the CDDL. By doing so, you're distributing the Linux kernel without a valid license to do so and are therefore violating Linux's copyright. You're still good with ZFS's license and copyright at that point. You haven't violated the Oracle's CDDL license for the ZFS code.

    Remember: GPL is a distribution license agreement, not a user license agreement. Whoever gave you your copy of Linux had to do so under the terms of the GPL. If you give a copy of it to anyone else, you must also comply with GPL. In between while you're working on your own computers, the GPL isn't applicable. It's the Free Software Foundation's position that you do not need a license to use code on your own computers. That's considered Fair Use. You only need a license to copy and distribute that code since otherwise that copying would violate copyright law.

    Starting Score:    1  point
    Moderation   +3  
       Insightful=1, Interesting=1, Informative=1, Total=3
    Extra 'Insightful' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   5  
  • (Score: 0) by Anonymous Coward on Tuesday September 11 2018, @07:30PM (7 children)

    by Anonymous Coward on Tuesday September 11 2018, @07:30PM (#733265)

    This is the best analysis I've read on this matter. Thank you!

    I went with FreeBSD because of ZFS support. If Linux becomes comparable, I may go back. Your analysis indicates that it's only a matter of time of when I'll do so.

    • (Score: 2) by pendorbound on Tuesday September 11 2018, @07:46PM (6 children)

      by pendorbound (2688) on Tuesday September 11 2018, @07:46PM (#733277) Homepage

      FWIW, I started with ZFS on FreeBSD in 2008 and jumped (back) to Gentoo in about 2010. I've been running ZFS for rootfs and storage on Gentoo since then over a variety of kernel & userland upgrades. Linux has feature parity with the BSD implementation for ZFS. It's been too long since I've used it on BSD (and too many hardware upgrades) to really compare them on a performance basis.

      Kernel/system updates on Gentoo haven't always been the smoothest with ZFS. Unquestionably that's Gentoo's fault. Having your rootfs driver in an initramfs just complicates that & excitement ensues sometimes. Grub had some issues originally where it failed to read valid pools that the ZFS drivers in both Linux & BSD could import successfully. I submitted a few Grub patches around 2013 that corrected those issues, and I think those have been integrated in most distributions at this point. If you wanted to use ZFS for large storage arrays and used ext4 or something in mainline kernel for rootfs, that would all but remove the upgrade and bootloader issues and still give you the benefits of ZFS for data. I like being able to snapshot the OS drive though...

      I suspect that running ZFS on Ubuntu would make the upgrade story a bit less fraught with excitement, but I have no experience with Ubuntu's implementation at this point. Overall though, ZFS is completely solid on Linux for day to day use. I also run with ZFS on top of LUKS to get encrypted storage which works flawlessly.

      • (Score: 1) by pTamok on Tuesday September 11 2018, @08:29PM

        by pTamok (3042) on Tuesday September 11 2018, @08:29PM (#733292)

        If you wanted to use ZFS for large storage arrays and used ext4 or something in mainline kernel for rootfs, that would all but remove the upgrade and bootloader issues and still give you the benefits of ZFS for data. I like being able to snapshot the OS drive though...

        If you don't mind something slightly funky, also without an fsck, use NILFS2 [wikipedia.org] for your rootfs. So long as you remember to ensure the NILFS2 module is included in GRUB2, it works fine. You probably will need to install via chrooting though, as I don't know of any installers that support NILFS2 natively.

        NILFS supports continuous snapshotting. In addition to versioning capability of the entire file system, users can even restore files mistakenly overwritten or destroyed just a few seconds ago. Since NILFS can keep consistency like conventional LFS, it achieves quick recovery after system crashes.

        NILFS creates a number of checkpoints every few seconds or per synchronous write basis (unless there is no change). Users can select significant versions among continuously created checkpoints, and can change them into snapshots which will be preserved until they are changed back to checkpoints.

        There is no limit on the number of snapshots until the volume gets full. Each snapshot is mountable as a read-only file system. It is mountable concurrently with a writable mount and other snapshots, and this feature is convenient to make consistent backups during use.

        Snapshot administration is easy and quickly performable. NILFS will make snapshotting or versioning of the POSIX filesystem much familiar to you. The possible use of NILFS includes, versioning, tamper detection, SOX compliance logging, and so forth. It can serve as an alternative filesystem for Linux desktop environment, or as a basis of advanced storage appliances.

        Alternatively, run your rootfs on its own LVM volume, sized to allow LVM snapshotting.

      • (Score: 1) by soylentnewsinator on Tuesday September 11 2018, @10:35PM (2 children)

        by soylentnewsinator (7102) on Tuesday September 11 2018, @10:35PM (#733374)

        I finally had to create an account. Gentoo was my primary OS back in 2004-2007. I later transitioned to Ubuntu as I found fewer things broke. (I'm not sure if that's the nature of a rolling release distro versus 6 months or 2 years depending on if you used LTS.) On and off, I've been using FreeBSD for various servers until a couple of years ago where I transitioned all my servers to FreeBSD due to ZFS support (and partially jails).

        I see that Gentoo finally updated their web design. I recall they held a contest over 10 years ago, and despite a winner being selected, they cancelled the idea due to 'reasons'. That was a big red flag to me if their management would hold the contest and then change their mind as soon as a winner was selected.

        Since I left Gentoo around the time you started using it, according to your experience, has the stability noticeably increased? Is there a recommendation of how frequently to upgrade if there's no security reason to do so? Is there a decent tool to update config files to new versions? (That hurt me numerous times in the past.) How often do packages break on you?

        • (Score: 2) by hendrikboom on Wednesday September 12 2018, @12:53PM

          by hendrikboom (1125) Subscriber Badge on Wednesday September 12 2018, @12:53PM (#733574) Homepage Journal

          Breakage of config files? I've often thought config files should be checked into revision control with a vendor branch and a local branch, and that the installer should set this up. After installation it's too late, because the installer has already modified them. Maybe also an installer branch, intermediate between these two.

        • (Score: 2) by pendorbound on Wednesday September 12 2018, @03:10PM

          by pendorbound (2688) on Wednesday September 12 2018, @03:10PM (#733641) Homepage

          I wouldn't say Gentoo has "improved" much in the intervening time. It's definitely the nature of the rolling release beast. Benefit is bleeding edge latest packages. Draw back is the blood on the edge is frequently your own...

          The recommendation for upgrade frequency is, "early and often..."

          The thing about updating Gentoo is it's uncomfortable, but the longer you go between updates, the more it hurts. If you hold off for security related only updates, there's a good chance major chunks of core system will have changed their structure since your last update. You'll have multiple conflicting packages you need to upgrade, big filesystem layout or config format changes, and your life's gonna suck for the next couple of days. If you're lucky, you can manually set version masks to upgrade in stages (assuming the intervening versions are still in the Portage tree). If not, you're manually fixing stuff, forcing versions to get around slot conflicts, etc. If you suck it up and do the updates regularly, you usually get the benefit of migration scripts to fix that stuff. The scripts are seldom maintained for more than a few version updates though. If you wait too long, you're on the wrong side of the gulf between the old & new way with no migration process to automate moving across.

          It's been a while since I've left myself with an unbootable system & had to shove a recovery disc in, but it's happened... Especially with ZFS root, if you munge the ZFS driver in your initramfs, you're cooked. Keeping your previous kernel / initramfs images as alternates in GRUB is usually enough to get back to a usable system and clean up. Usually...

          Configuration file changes are handled with dispatch-conf which is so-so. It gives you a diff of your original versus the proposed changes. The changes are always clobber-jobs. They don't attempt to apply only changes on top of your customizations, just replace whole files. Usually I end up either ignoring the changes and keeping my own or dropping into an editor (which dispatch-conf will facilitate) and hand-merge the changes. I'd love them to use something like Augeas for config migrations, but....

          To be honest, I wouldn't use Gentoo with Portage in production. It's okay for my home stuff. Having latest versions of stuff that I don't have to `./configure && make && make install` is handy. For enterprise level reliability, I wouldn't recommend Gentoo/Portage. The only case I could see using Gentoo "for real" would be in an immutable VM situation where "upgrades" mean canning a new gold template and individualizing it into your various apps using Puppet or something. In that case, I wouldn't even include Portage or the portage tree. Just a super cut-down Linux install with the bare minimum for the app.

      • (Score: 2) by hendrikboom on Wednesday September 12 2018, @01:00PM (1 child)

        by hendrikboom (1125) Subscriber Badge on Wednesday September 12 2018, @01:00PM (#733578) Homepage Journal

        Just wondering: How much RAM did you have on that BSD system using ZFS way back in 2008? Machines were a lot smaller then.

        • (Score: 2) by pendorbound on Wednesday September 12 2018, @03:15PM

          by pendorbound (2688) on Wednesday September 12 2018, @03:15PM (#733647) Homepage

          My 2008 dedupe near-disaster happened with 8GB of RAM (max the motherboard could handle...) for a 3TB pool (4x750GB, RAIDZ-1), SATA attached WD consumer class drives.

          Two ebay surplus MB updates later and a ton of "pulled" DIMMs on the cheap, and I'm at 96GB for 43TB total storage across 4 pools and 18 spindles of various makes and models. Still no dedupe enabled though...

  • (Score: 2) by DannyB on Tuesday September 11 2018, @09:25PM

    by DannyB (5839) Subscriber Badge on Tuesday September 11 2018, @09:25PM (#733324) Journal

    Linking ZFS into Linux isn't violating Oracle's license or copyright.

    I think it's the owner of a GPL licensed copyright work that you must worry about.

    Are there any kernel contributors who would sue because their work is licensed under the GPL, and therefore anything linked with it must, as per the GPL, also be licensed under the GPL. ("viral license")

    Oracle might not care. But a kernel dev would seem to have a technically legitimate claim to assert -- however picky and petty I might think it might be.

    One problem, as I understand it, with kernel licensing is that nobody knows who all of the contributors are. And some are dead, and therefore their copyright ownership would go to their estate, and who knows who might control that. Said differently, it is probably impossible to ever change the license of the kernel, or to get everyone to stipulate to some additional clause. (Example: Java JDK licensed under GPL + Classpath Exception to the GPL. That exception means that running your code on Java as a platform does not bring your code under the scope of the GPL, but any modification or addition to the java platform must be under the GPL license.)

    --
    The lower I set my standards the more accomplishments I have.
  • (Score: 2) by DannyB on Tuesday September 11 2018, @09:44PM (2 children)

    by DannyB (5839) Subscriber Badge on Tuesday September 11 2018, @09:44PM (#733337) Journal

    GPL is a distribution license agreement

    It's not really an agreement. Although at least one court has treated it that way, and did see the requirements of the GPL as consideration, and under that reasoning enforced the GPL requirements upon some GPL violator.

    License: - a Permission. Nothing more. Fishing License. Dog License. Driver License. Marriage License (which doesn't need to be periodically renewed like a Dog License, in order to maintain its validity.)

    Copyright: - right(s) reserved exclusively to the author of a creative work, by law. Books, music, etc, player piano rolls, and computer software. Sometimes these rights are sliced and diced into a million pieces, like the RIAA with performance rights, mechanical rights, distribution rights, etc.

    Copyright infringement: - unauthorized exercise of any of the rights exclusively reserved to the copyright owner.

    Copyright License: - A permission, to exercise some subset (up to and including all) rights exclusively reserved to the copyright owner.

    The only way you can have a copyright license is if the copyright owner or their agent gives you such a license to use certain of the rights.

    In some cases you can get a copyright license by agreeing to a contract which may involve paying money, promising to give your firstborn, your vital organs, etc. as well as other promises on your part, such as not making copies of the licensed work.

    EULA: - a click through "agreement" that purports to bind you to some contract.

    An open source license is a license that gives you a license (eg permission) to use certain of the copyright owner's exclusive rights. You don't have to agree to anything -- but not doing so means you are not granted a license (eg permission) to exercise those rights. The GPL must be waived by the defendant, not the plaintiff. The plaintiff would simply go to court: Dear judge, this soundrel is distributing (or maybe even just using) my GPL licensed work without a license, make him stop and give me damages and attorneys fees!!! It is up to the defendant to waive the GPL and say, "but judge, I have a license". Then plaintiffs can point out that because you are in violation of clauses X, Y and Z of the license, you actually do not have any license to exercise the rights reserved exclusively to the copyright owner. (The license required that any linked code must also be under the GPL)

    Maybe in some sense it is an agreement. But not like a contract. You don't sign it. You don't exchange consideration. (Although one judge did see it differently, that upholding your obligations is your consideration exchanges for the consideration of being granted the permissions to exercise some exclusive rights.)

    --
    The lower I set my standards the more accomplishments I have.
    • (Score: 2) by pendorbound on Wednesday September 12 2018, @03:27PM (1 child)

      by pendorbound (2688) on Wednesday September 12 2018, @03:27PM (#733652) Homepage

      GPL is absolutely a contract which grants you a copyright license as part of its terms. You receive the valuable consideration of the right to distribute a copyrighted work quid pro quo you agree to take certain required actions in exchange. IE in order to distribute binaries, you are required to distribute (or offer in some cases) the corresponding source code. If you refuse to accept the agreement by violating its terms, you lose the benefits afforded you by accepting the agreement and are therefore distributing a copyrighted work without a license to do so, in violation of copyright law.

      Dear judge, this soundrel is distributing (or maybe even just using) my GPL licensed work without a license

      Only half of that is a valid argument in court. Distributing, yes. You're a copyright pirating scoundrel. Using, nope. You are not required to accept the GPL to make use of software licensed under it. Whoever gave you the copy was required to do so in compliance with the license terms (thus accepting the agreement that granted them the license to distribute), and you must do likewise if you make a copy and give it to someone. For use on your own systems in your own environments, no license is required, and GPL doesn't apply to ANYTHING you do. If you read GPLv2 word for word, there isn't a single term which requires anything of an end user who is NOT distributing a copy of the software to a third party. It's impossible to violate the GPL exclusively on your own system.

      The waters get muddy with GPLv3 where making a web app available over a network is considered a "distribution" of it, in part on the basis that any HTML, CSS, etc. contained in it is copyrighted and would require the benefit of the GPL license in order for you to distribute that to another user's web browser. Linux kernel is GPLv2, so that's not relevant to the ZFS case.

      • (Score: 2) by DannyB on Wednesday September 12 2018, @03:54PM

        by DannyB (5839) Subscriber Badge on Wednesday September 12 2018, @03:54PM (#733668) Journal

        At least one court agrees with you that it is a contract.

        If that was its intent, then it should be called an agreement rather than a license. The license (eg permission) is granted as a condition of an agreement.

        The word license means permission.

        I understand that distributing is the context that everyone talks about the GPL. That wouldn't stop someone for suing you over linking, even if you win the lawsuit. Even if you are correct and vindicated.

        I'll point to one example I remember. In the MySQL days, some time back. The DB server is GPL licensed, no problem. But . . . all drivers and connectors to it were also GPL licensed. Not LGPL but GPL. Commercial developers might like to use MySQL. So they all had various ways of dancing around it. One that I learned of was they don't distribute the MySQL driver with their product. Instead the have the customer install the product and separately install the database driver. Thus the "linking", in any sense of the word, was done by the customer. If the vendor distributed the MySQL driver at all, it was strictly under GPL terms and unrelated to the product they sold. It is something I considered doing a long time ago, but decided not to go that route. It was clear that the copyright owner definitely considered this a violation of the GPL even if most open source people did not. Reading the copyright owner's licensing description made it clear that they viewed it this way -- even if they were being deceptive or confused. They wanted to sell a commercial license to commercial developers. It's not worth getting sued over. I don't think it is a problem today.

        I think GPLv3 is a mess. Way unnecessarily complex. I could easily read and understand the GPLv2 as I think most people could. The LGPLv3 is even worse -- in complexity -- because you first have to understand the GPLv3 in order to then understand what the LGPLv3 relaxes. I understand that Stallman wants to prevent Tivoization. And I applaud his efforts in the GPL and LGPL which effectively did prevent the Microsoftization of open source because of its viral nature.

        Don't even get started about the AGPL. The purpose of AGPL, prior to GPLv3, was to make a web app be "distribution" effectively. Even code that you did not distribute into the browser. For example, you could not use an AGPL licensed library in your server, even if that library has no code that ever leaves the server.

        My understanding of Linux + ZFS is this: technically it should be okay. At least Linus says that's his interpretation. But he cannot bind others to that. So a distribution needs to get the end user to link ZFS into the kernel at runtime. I think this is an even more dangerous situation than the MySQL (GPL) driver separately installed into a vendor's product by the customer. Reason is because the distribution is distributing both the ZFS and Linux, they're just not being linked together until runtime -- but the clear intent of the distribution is for it to be linked together. And it is not Oracle to worry about, it is a kernel developer or their estate.

        --
        The lower I set my standards the more accomplishments I have.