Received: from localhost (maia-3.hub.org [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id 40E4D9FB6B4 for ; Wed, 30 May 2007 12:29:53 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-maia, port 10024) with ESMTP id 92664-05 for ; Wed, 30 May 2007 12:29:39 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.5 Received: from h07.llord.com (unknown [195.140.142.194]) by postgresql.org (Postfix) with ESMTP id EA9A49FBF88 for ; Wed, 30 May 2007 12:29:35 -0300 (ADT) Received: from par69-8-88-161-102-87.fbx.proxad.net ([88.161.102.87] helo=apollo13) by h07.llord.com with esmtpa (Exim 4.66) (envelope-from ) id 1HtQ6p-00074K-GC; Wed, 30 May 2007 17:29:11 +0200 Date: Wed, 30 May 2007 17:31:58 +0200 To: "Luke Lonergan" , "Michael Stone" , pgsql-performance@postgresql.org Subject: Re: setting up raid10 with more than 4 drives From: PFC Content-Type: text/plain; format=flowed; delsp=yes; charset=utf-8 MIME-Version: 1.0 References: Content-Transfer-Encoding: Quoted-Printable Message-ID: In-Reply-To: User-Agent: Opera Mail/9.10 (Linux) X-PopBeforeSMTPSenders: junk@peufeu.com, lists@peufeu.com, peufeu@peufeu.com, pfcaillaud@peufeu.com X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - h07.llord.com X-AntiAbuse: Original Domain - postgresql.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - peufeu.com X-Source: X-Source-Args: X-Source-Dir: X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.929 tagged_above=0 required=5 tests=AWL=0.928, BAYES_50=0.001 X-Spam-Level: X-Archive-Number: 200705/618 X-Sequence-Number: 25008 On Wed, 30 May 2007 16:36:48 +0200, Luke Lonergan = wrote: >> I don't see how that's better at all; in fact, it reduces to >> exactly the same problem: given two pieces of data which >> disagree, which is right? > > The one that matches the checksum. - postgres tells OS "write this block" - OS sends block to drives A and B - drive A happens to be lucky and seeks faster, writes data - student intern carrying pizzas for senior IT staff trips over power = cord* - boom - drive B still has old block Both blocks have correct checksum, so only a version counter/timestamp = = could tell. Fortunately if fsync() is honored correctly (did you check ?) postgres = = will zap such errors in recovery. Smart RAID1 or 0+1 controllers (including software RAID) will distribut= e = random reads to both disks (but not writes obviously). * =3D this happened at my old job, yes they had a very frightening serv= er = room, or more precisely "cave" ; I never went there, I didn't want to be= = the one fired for tripping over the wire... From Linux Software RAID howto : - benchmarking (quite brief !) http://unthought.net/Software-RAID.HOWTO/Software-RAID.HOWTO-9.html#ss9= .5 - read "Data Scrubbing" here : http://gentoo-wiki.com/HOWTO_Install_on_Software_RAID - yeah but does it work ? (scary) http://bugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3D405919 md/sync_action This can be used to monitor and control the resync/recovery process of MD. In particular, writing "check" here will cause the array to read all data block and check that they are consistent (e.g. parity is correct, or all mirror replicas are the same). Any discrepancies found are NOT corrected. A count of problems found will be stored in md/mismatch_count. Alternately, "repair" can be written which will cause the same check to be performed, but any errors will be corrected.