[Gluster-devel] Harddisk economy alternatives
Gordan Bobic
gordan at bobich.net
Wed Nov 9 17:51:59 UTC 2011
On Wed, 09 Nov 2011 17:50:00 +0100, Magnus Näslund
<magnus at arkivdigital.se> wrote:
[...]
> We want the data replicated at least 3 times physically (box-wise),
> so we've ordered 3 test servers with 24x3TB "enterprise" SATA disks
> each with an areca card + bbu. We'll probably be running the tests
> feeding raid volumes to glusterfs, and from what I've seen this seems
> to be a standard.
With that amount of space I hope you are going to be using something
like ZFS rather than normal RAID. Otherwise you are likely to find the
error rate will slowly and silently eat your data.
> Possible future:
>
> Since our storage system will be in it for a really long term, we're
> looking at the total economics of the solution vs. the data safety
> concerns.
>
> We've seen suggestions on letting glusterfs manage the disk directly.
What exactly do you mean by that? GlusterFS requires a normal xattr
capable FS underneath it. Thus I presume you are referring to using GLFS
instead of RAID (i.e. stripe+distribute).
> The way I see it, this would give a win in that
> 1) We would be using all disks, no RAID/spare storage overhead
> 2) No RAID-rebuilds
> 3) ...
> 4) Profit
>
> Also, we know that any long time system we build should be planned
> with replacing disks continuously.
My main concern with such data volumes would be the error rates of
modern disks. If your FS doesn't have automatic checking and block level
checksums, you will suffer data corruption, silent or otherwise. Quality
of modern disks is pretty appaling these days. One of my experiences is
here:
http://www.altechnative.net/?p=120
but it is by no means the only one.
Currently the only FS that meets all of my reliability criteria is ZFS
(and the linux port works quite well now), and it has saved me from data
corruption, silent and otherwise, a number of times by now, in cases
where normal RAID wouldn't have helped.
> So in my mind we could buy quality boxes with 24-36 disks run by 3-4
> SATA controller cards (Marvell?),
My experience with Marvell cards is limited. Do they have 8-port cards?
I use 8-port LSI cards without any serious problems. The only issue I
have seen is that they tend to reset the bus when the disk is slow to
respond (specifically due to running a SMART self-test), which means
that on one hand you lose the SMART short/long self-test option for
monitoring, but this is mitigated by weekly ZFS scrubs which I trust
more anyway.
> using cheap and large desktop disks
> (maybe not the "green" variety).
I would suggest you at the very least use disks that have
Write-Read-Verify capabilities. My recent experience shows that only
Seagates include this feature, even though, as it turns out, Samsung
seems to own the patent on it (and my Samsungs definitely don't have
that feature). If you do this, you may want to look into the WRV patch
for hdparm I submitted upstream, too, but there hasn't been a release of
it since then.
Another good idea is to use disks of similar spec from a different
manufacturer in different machines, and make sure that your glfs bricks
are mirrored so that they have different make disks under them.
> We could have a reporting system on
> top of glusterfs that reports defective disks that would be replaced
> as part of our on-duty maintenance. Since the storage is replicated
> over 3+ boxes, the breakage of a single disk would not compromise the
> data safety as long as the disks are replaced in timely manner.
Bear in mind that your network bandwidth is unlikely to be as good as
your internal disk bandwidth, and restoring a 3TB brick by doing a "ls
-laR" is likely to take a very long time. So you may be better off with
RAIDZ2/RAIDZ3 or even just mirrored volumes in each of the machines,
distributed using glfs, in terms of single disk failure recovery time.
Anyway, to summarize:
1) With large volumes of data, you need something other than the disk's
sector checksums to keep your data correct, i.e. a checksum checking FS.
If you don't, expect to see silent data corruption sooner or later.
2) Don't use the same make of disk in all the servers - I have seen
multiple disks from the same manufacturer fail minutes apart more than
once.
3) Use WRV features of they are available.
4) Make sure your glfs bricks are mirrored between machines in such a
way that the underlying disks are different (e.g. say you have 24 disks
in each box, divided into 3x 8-disk RAIDZ3 volumes. Use each one of
those 8-disk volumes as a brick, and mirror it to a another similar
machine so that the 8 disks on the other server are from a different
manufacturer).
The glfs part on top is relatively straightforward and will "just work"
provided you use a reasonably sane configuration. It is the layers
underneath that you will need to get right to keep your data healthy.
Gordan
More information about the Gluster-devel
mailing list