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.
(Score: 2) by pendorbound on Tuesday September 11 2018, @07:46PM (6 children)
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
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.
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)
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
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
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)
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
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...