From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7863311311056950145==" MIME-Version: 1.0 From: Luse, Paul E Subject: Re: [SPDK] Replication for SPDK (RAID 1E) Date: Thu, 05 Sep 2019 03:08:33 +0000 Message-ID: <867830F7-CAEF-4F21-88D0-A7696620109B@intel.com> In-Reply-To: 9CB1D7F7-068A-4244-96D2-28567C7D0B27@hitachi.com List-ID: To: spdk@lists.01.org --===============7863311311056950145== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thanks :) I=E2=80=99ll definitely do the function pointer table in the firs= t rev. That=E2=80=99ll be super important for add more levels later... -from my iPhone = > On Sep 4, 2019, at 7:59 PM, =E6=9D=BE=E6=9C=AC=E5=91=A8=E5=B9=B3 / MATSUM= OTO=EF=BC=8CSHUUHEI wrote: > = > But your idea is surely good start! > = > Sent from my iPhone > = >> On Sep 5, 2019, at 10:36, =E6=9D=BE=E6=9C=AC=E5=91=A8=E5=B9=B3 / MATSUMO= TO=EF=BC=8CSHUUHEI wrote: >> = >> Hi Paul, >> = >> It=E2=80=99s great to know you work on raid! >> = >> Ziye proposed a patch for RAID1 before RAID bdev module maybe more than = a year ago. >> = >> IMHO, we will need to have disk replacement feature and degradation mode= first. It may be difficult to use raid1 without them. Because raid1 is for= RAS >> = >> We need to have clean abstraction for RAID level, I.e., extracting commo= n operations and creating function pointer table. >> = >> We need to have copy feature between two bdevs. >> = >> Thanks >> Shuhei >> = >> Sent from my iPhone >> = >>> On Sep 5, 2019, at 8:49, Luse, Paul E wrote: >>> = >>> Hi Everyone, >>> = >>> I've got a pretty simple POC working and wanted to solicit any high lev= el input before I get too far. The idea is to, of course, start very basic= but leave room for adding features later. Here are the broad strokes: >>> = >>> = >>> * Add a new RAID level to the existing RAID module with level "1E= " that requires a "number of replicas" parameter >>> = >>> * The cool thing about 1E is that we can use any number of disks = and also pick the number of times the data is replicated so for example: >>> = >>> o 2 disk 1E with replication of 2 would be your basic 2 disk RAID1. M= apped as follows (columns are physical disks Dn identifies data copies) >>> D0 D0 >>> D1 D1 >>> D2 D2 >>> = >>> * 3 disk 1E with replication of 2: >>> = >>> D0 D0 D1 >>> = >>> D1 D2 D2 >>> = >>> D3 D3 D4 >>> = >>> * 3 disk 1E with replication of 3: >>> = >>> D0 D0 D0 >>> = >>> D1 D1 D1 >>> = >>> D2 D2 D2 >>> = >>> * 3 disk 1E with replication of 1 (RAID0) >>> D0 D1 D2 >>> D3 D4 D5 >>> D6 D7 D8 >>> = >>> * This scheme is obviously very flexible and can provide basic RA= ID1 without disk restrictions and also provide for some super paranoid conf= igs >>> = >>> * At the same time we could consider limiting, at least at first,= the combinations of disks and replicas to minimize complexity and test but= IMHO I think we should leave it wide open >>> = >>> * An even cooler part of this is how well the current implementat= ion lends itself to this. A RAID0, behind the scenes, becomes a RAID1E wit= h 1 replica >>> = >>> = >>> = >>> = >>> Initially we can start with just the RAID level addition (no notificati= on of member failure, no rebuilds, spares, etc). as I don't believe there's= really any existing framework to support these kinds of features. This is= the main question I have for interested parties. Would this be useful wit= hout any of the recovery type features or should we at least have some sort= of async notification on member disk failure when num_replicas > 1? >>> = >>> Trello link: whether it is feasible for 19.10 or not depends on feedbac= k from everyone on features :) https://clicktime.symantec.com/3Ui9u3JQhDqBY= 9P7euvmPEF7Vc?u=3Dhttps%3A%2F%2Ftrello.com%2Fc%2FFR4iHAnI >>> = >>> Thanks! >>> Paul >>> = >>> PS: My current POC is super raw. I have hardcoded number of replicas t= o 3 and have what I believe is the correct block mapping for any # of disks= , any # of replicas but have only tested 3 replicas with 2 and 3 member dis= ks using bdevperf w/verify. After I get it in presentable shape and flesh t= he design and UT out a bit more I'll post something. >>> = >>> = >>> = >>> _______________________________________________ >>> SPDK mailing list >>> SPDK(a)lists.01.org >>> https://clicktime.symantec.com/3NBASeDzyXVbw78PP7EaJro7Vc?u=3Dhttps%3A%= 2F%2Flists.01.org%2Fmailman%2Flistinfo%2Fspdk >> _______________________________________________ >> SPDK mailing list >> SPDK(a)lists.01.org >> https://clicktime.symantec.com/3PQrvrn5FwxupLWdDkJs9Ef7Vc?u=3Dhttps%3A%2= F%2Flists.01.org%2Fmailman%2Flistinfo%2Fspdk > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk --===============7863311311056950145==--