Re: NetBSD Raid5, slow write speeds, using big disks?!
smurfd <[email protected]> Tue, 23 Jun 2026 16:03:42 +0200
| Newsgroups | gmane.os.netbsd.general |
|---|---|
| Message-ID | <[email protected]> |
Thank you kre and riastradh! I have been looking for what to expect in write speeds, and yes 100mb/s sounds great! Will look with the iostat command at next write. Doing an initialization now for a 3 disk raid5. There were a calculation there before in $(( 2048 )), but yea removed that and the paranthesis. Doing this now instead. gpt add -t raid -l raid5@wd0 -b 4096 -a 4096 wd0 .. had not tried the alignment there for some reason... When doing the 3-4 write speed increase below i cant trust that, because i noticed today that it had spewed errors in dmesg when initializing the raid. The raidctl -iv was also instant. Should have know it was to good to be true. :) Again good to hear that there is others running raid5 with big disks, which i expected! Then its worth trying to fix it. Its tiresome though, doing a change then waiting 8 to 72 hours and seeing that the change had no effect. So unfortunately it happens often that i do more changes than one, which is not scientifically good :) Like now, both added alignment to the disks and changed to a 3 drive raid5 :D My raid experience is, as you have guessed, small... coming from zfs, where it was kind of plug and play, i expected some push back here... not this much though. Anyway there is hope now, thank you, thank you... Br smurfd On 6/23/26 2:02 PM, Robert Elz wrote: > Date: Mon, 22 Jun 2026 23:53:56 +0000 > From: Taylor R Campbell <[email protected]> > Message-ID: <[email protected]> > > | > # gpt add -t raid -l raid5@wd0 -b $(( 2048 )) -s 15628051053 wd0 **** > | What was the alignment of this partition? > > Really? -b 2048 (explicitly setting the starting block - though I have > no idea what the shell arith was supposed to be accomplishing there). > > That's @1MB which should be aligned enough. > > The problem was almost certainly having a 3+1 raid5 with 3x16KB data > stripes (but it could be compounded by poor filesystem alignment in > the raid set). > > And FWIW, I run raid5 (two different raidsets) on big discs (the raidsets > are ~ twice as big as that shown here, and can take almost 2 weeks to > init or reconstruct) with entirely acceptable write performance, one > using wd0 drives typically writes at about 100MB/s, the other, on external > USB drives (in one case, connected via one cable, so shared bandwidth) > typically runs about 50MB/s (sometimes between 60 & 70) - those are > sustained write rates, not the initial "write into the UVM" (buffer cache) > startup peaks. > > Both sets are 2+1, 2x16KB stripes, and 32KB or 64KB (I forget) file > system blocks (they may be one each way). One is about 36TB, the other > around 47TB (TiB in each case). 7TB drives are not big (or not any > more, they'd be approaching being called small these days). > > | Does it make a difference if you use `-a 4096' or `-a 1m' with `gpt > | add'? > > Those would truncate a few blocks off the (uselessly odd numbered) size > but not affect performance. > > | zfs will warn if you ... > > Not a bad thing to do, and > > | However, I don't think raidframe detects and warns about this case. > > It doesn't but nor does it necessarily know, I run another raid (a raid1) > where one of the components is on a cgd (currently, I thought one of its > drives had died, so took 2 smaller ones, joined them together with cgd > - which is MUCH faster than raid0 - and use that as the 2nd half of the > raid1 ... since then I believe the issue might be the controller, not > the drive after all, so that drive might come back, connected differently) > The point there is that I don't think cgd will pass through the underlying > geometry to its client, or really can, given there's no requirement that > the drives making up the cgd set all have the same properties. > > | And perhaps gpt(8) should also use the disk's native alignment as the > | default alignment instead of 512 bytes. > > But having got warn, when it is able (it needs to work on cgd as well...) > that a partition is badly aligned is probably useful (and setting the default > as you indicate, is probably also useful). When used on a raidframe, it > could warn about filesystems not aligned on stripes (raidframe should probably > give the stripe size as the "native alignment" - while still using 512 bytes > as the addressing factor.) > > Another alignment with raidframe (and the partitions made in the raid array) > that is important is to make sure the file system blocks correctly align with > the raid stripes - when I was first setting up the first of those raid5's > above (in its initial incarnation - it has grown into bigger drives since > then) I didn't think of that one, and nicely made the file system blocks > exactly the same size as the raid stripes (32KB above), but then (to try > and steal an extra few blocks), started the filesystem 16KB into the raid > array (easily big enough to avoid 4K underlying sector sizes being an issue). > > But then every (and I mean every) file system block write straddled 2 raid > stripes, meaning 2 RMW cycles for every one of them. That version crawled. > > And whatever one believes of LLM messages to the list, what was in the one > in question (apart from the questionable use of TeX fragments, for no reason) > was mostly accurate. It recommendation not to use WAPBL is reasonable, but > not because of small writes (those are just metadata writes, and would exist > for non-WAPBL filesystems as well - except more of them) as big filesystems > like this mostly (when writing) are writing big files (and performance on > small ones, including directories) mostly doesn't matter, but because WAPBL > can be intolerably slow for very large filesystems when mounting (flushing > the log) - a fsck of the filesystem can be faster, and WABPL's speedups > tend not to matter as much when you're largely writing large files, then > mostly only ever reading them again afterwards. > > kre > > ps: I have no idea whether performance would be better in a 3+1 raid5 > by using a strips size/component that matches the file system block size. > Doesn't sound quite right to me, but I have never tried that. I'd be > using 2+1 + 1 drive as hot spare, or 2xraid1 (with cgd under it to make > 2 bigger "drives" to run the raid on top of, rather than 2xraid1 with > either cgd or raid0 on top, though the differences are probably mostly > illusory). Either of those provide less space than the 3+1 (obviously). > The 2+1 + spare is probably best for stability, as if a drive dies, > raidframe should just switch to using the spare immediately, so providing > none of the rest die before that has reconstructed, less window for 2 > drive death killing the raidset completely. > >