- Joined
- Feb 6, 2014
- Messages
- 5,112
Dear HoneyBadger, you a perfectly right that I'm "unlikely to get an official "blessing" and I swear - "blessing" is not even close to what I'm looking for :) I'm seeking some technical advice, backed with practical experience. My guess is that probably just nobody ever used this kind of setup in real production, this simple. Or am I wrong?
Nobody uses this kind of setup for the reasons outlined previously in this thread by myself and others - it is completely against the original design of ZFS, it can compromise array performance, and puts your data at unnecessary risk.
You say, "consider that using ZFS for "software RAID" means that your monster quad-core Xeon is now your "RAID processor" and it's packing 128GB of RAM" - so why on the Earth people are using NVidia GPUs, for example? main CPUs are so powerful and fast now! Intel's onboard graphics is so much fast er than any videocard we were using while playing Doom-2! (just kidding). Offloading some tasks to "hardware" (which in fact is just yet another specialized computer) is not that bad an idea, yes I can emulate i.e. ethernet adapter with main CPU, or even the whole switch (like VMWare does), of I can use a general purpose computer to perform as a BGP border router which holds some 3-4 full views. It's possible and sometimes even brings a better price/performance ratio. (BTW do you recall 80287 floating point coprocessors?) But I already got MegaRAIDs as given, so why should I reject getting the most out of them? Especially when risks are negligible and managed?
A GPU is a specialized chip that is optimized to solve the problem of "rendering graphics" - the mathematics done for RAID are not so complex as calculating inverse square-roots really quickly. And you should reject the MegaRAID for the exact same reason I wouldn't use a hammer to drive a screw - it is the wrong tool for the job. Simply put, if you want to build a ZFS system, build it to ZFS specifications and expectations.
You say "In this scenario, ZFS will not be able to protect you from corrupted data." - Ok, let controller alone take this responsibility. BTW in case I use a RAID-given "disk" for zpool, doesn't ZFS do it's own checksumming of data? Yes, I'll be relying 100% on the MegaRAID card for that. (And free pretty much CPU cycles for other purposes, for LZ4 first of all).
ZFS checksums are not full parity data - it can tell you the data is bad, and needs to be reconstructed from the other copies in the mirror or parity RAID, but is not enough data on its own to reconstruct it. In order to do that, you need another copy - and in this case, you won't have one.
"have to write your own scripts to monitor the array status via megacli and submit emails if/when something goes sideways" - I don't see any problem in writing some scripts and put these into crontab, and even call REST endpoints of my ticketing system to open tickets immediately as soon a problem symptoms are observed (I hate email for this, it's 20th century stuff). I remember the whole SQL interpreter written in plain /bin/sh 20+ years ago, so this is obvious.
Understand that even if the scripts work, you will be 100% on your own doing this. Not just "here at the FreeNAS forums" but on any BBS, forum, or ZFS mailing list. If anything in your system behaves abnormally, the immediate first and only response from any support technician is going to be "you have grossly misconfigured your array and we are unable to support you until it is within the ZFS design specifications."
And great thanks you for the note about the probable performance hit. This is the really valuable remark, I already noticed some mentions of this scenario somewhere while reading around, and I certainly will make some tests for this "massive write case" (and tickle some tunables then) before I'll put the whole beast under load. Probably limiting the write transaction size to maybe 1/3 of controller cache size will do.
So at this point you're now discussing artificially limiting the potential performance of the array.
Does the phrase "slow, ineffective, and mostly misconfigured" ring any bells?
Because to be blunt, this is what you're doing again right now; just on a different platform.
The small sum you spend on supported HBAs to properly implement ZFS will pay off.