A little more background...

The choice of a pool with 4x raid2:3d has more to do with a sweet spot for
our use case and budget.

I have twenty or so small NAS appliances, currently each with 5x 3.8TB
enterprise SATA SSDs and an Optane log. These each serve a handful of
datasets via NFSv3 to a pool of ESXi heads over 10gbe.

The NAS servers send in regular incremental ZFS send streams to a backup
server over gigabit WAN links, which my code then replicates to the other
backup servers.

The backup servers use 3.5" SAS drives in good old Supermicro JBODs (which
came from our old HA NAS appliances), with no SLOG or L2ARC and with
primarycache=metadata.

4x raid2:3d turned out to be a sweet spot for achieving line speed when
propagating multiple zfs send streams over 10gbe.

It also turns out that we probably don't need it to be quite so fast or
safe, so we could reconfigure later down the path to get more space for no
extra cost.

We only ever have three backup servers online at any one time, and
resyncing a server from scratch only takes a day or so, so reconfiguring
pools (or just rebuilding to refrag etc) are really easy to achieve.

In addition to the bulk backups, the NAS servers each retain some snapshots
for local data recovery without needing to resort to the bulk backups.

We currently make extensive use of Storage vMotion. In the future we may
switch to NFSv4.1 to allow multiple ZFS datasets behind one NFS mount
(managing lots of volumes in ESXi is a pain), at which point the number of
datasets will increase by at least an order of magnitude.

Each NAS server maintains a sqlite3 database with a table holding a
complete dump of its current 'zfs get all' state. Other tables hold 'find .
-ls' for large files, and JSON output from smartctl and lsblk etc. These
are then merged centrally and used to drive snapshot creation, replication,
pruning etc as discrete tasks, as well as for monitoring and compliance
assurance.

As an aside: it would be amazing to have things like 'zfs/zpool get all'
available through, say, a fast VFS, oh and in JSON format. For extra marks,
your API should include the ability to take snapshots of the state and a
means of determining what has changed between snapshots :)

Phil

On Tue, 6 Dec 2022 at 21:59, Phil Harman <phil.har...@gmail.com> wrote:

> Hi Richard, a very long time indeed!
>
> I was thinking more of the accumulated allocation (not instantaneous IOPS).
>
> The pool was created with both DRAID vdevs from the get-go. We had 32x
> 12TB and 12x 14TB drives to repurpose, and wanted to build two identical
> pools.
>
> Our other two servers have 16x new 18TB. Interestingly, (and more by luck
> than design) the usable space across all four servers is the same.
>
> In this pool, both vdevs use a 3d+2p RAID scheme. But whereas
> draid2:3d:16c:1s-0 has three 3d+2p, plus one spare (16x
> 12TB), draid2:3d:6c:1s-1 has just one 3d+2p, plus one spare (6x 14TB
> drives).
>
> The disappointing thing is the lop-sided allocation,
> such that draid2:3d:6c:1s-1 has 50.6T allocated and 3.96T free (i.e. 92%
> allocated), whereas raid2:3d:16c:1s-0 only has 128T allocated, and 63.1T
> free (i.e. about 50% allocated).
>
> Phil
>
> On Tue, 6 Dec 2022 at 13:10, Richard Elling <
> richard.ell...@richardelling.com> wrote:
>
>> Hi Phil, long time, no see. comments embedded below
>>
>>
>> On Tue, Dec 6, 2022 at 3:35 AM Phil Harman <phil.har...@gmail.com> wrote:
>>
>>> I have a number of "ZFS backup" servers (about 1PB split between four
>>> machines).
>>>
>>> Some of them have 16x 18TB drives, but a couple have a mix of 12TB and
>>> 14TB drives (because that's what we had).
>>>
>>> All are running Ubuntu 20.04 LTS (with a snapshot build) or 22.04 LTS
>>> (bundled).
>>>
>>> We're just doing our first replace (actually swapping in a 16TB drive
>>> for a 12TB because that's all we have).
>>>
>>> root@hqs1:~# zpool version
>>> zfs-2.1.99-784_gae07fc139
>>> zfs-kmod-2.1.99-784_gae07fc139
>>> root@hqs1:~# zpool status
>>>   pool: hqs1p1
>>>  state: DEGRADED
>>> status: One or more devices is currently being resilvered.  The pool will
>>> continue to function, possibly in a degraded state.
>>> action: Wait for the resilver to complete.
>>>   scan: resilver in progress since Mon Dec  5 15:19:31 2022
>>> 177T scanned at 2.49G/s, 175T issued at 2.46G/s, 177T total
>>> 7.95T resilvered, 98.97% done, 00:12:39 to go
>>> config:
>>>
>>> NAME                                      STATE     READ WRITE CKSUM
>>> hqs1p1                                    DEGRADED     0     0     0
>>>  draid2:3d:16c:1s-0                      DEGRADED     0     0     0
>>>    780530e1-d2e4-0040-aa8b-8c7bed75a14a  ONLINE       0     0     0
>>>  (resilvering)
>>>    9c4428e8-d16f-3849-97d9-22fc441750dc  ONLINE       0     0     0
>>>  (resilvering)
>>>    0e148b1d-69a3-3345-9478-343ecf6b855d  ONLINE       0     0     0
>>>  (resilvering)
>>>    98208ffe-4b31-564f-832d-5744c809f163  ONLINE       0     0     0
>>>  (resilvering)
>>>    3ac46b0a-9c46-e14f-8137-69227f3a890a  ONLINE       0     0     0
>>>  (resilvering)
>>>    44e8f62f-5d49-c345-9c89-ac82926d42b7  ONLINE       0     0     0
>>>  (resilvering)
>>>    968dbacd-1d85-0b40-a1fc-977a09ac5aaa  ONLINE       0     0     0
>>>  (resilvering)
>>>    e7ca2666-1067-f54c-b723-b464fb0a5fa3  ONLINE       0     0     0
>>>  (resilvering)
>>>    318ff075-8860-e84e-8063-f77775f57a2d  ONLINE       0     0     0
>>>  (resilvering)
>>>    replacing-9                           DEGRADED     0     0     0
>>>      2888151727045752617                 UNAVAIL      0     0     0  was
>>> /dev/disk/by-partuuid/85fa9347-8359-4942-a20d-da1f6016ea48
>>>      sdd                                 ONLINE       0     0     0
>>>  (resilvering)
>>>    fd69f284-d05d-f145-9bdb-0da8a72bf311  ONLINE       0     0     0
>>>  (resilvering)
>>>    f40f997a-33a1-2a4e-bb8d-64223c441f0f  ONLINE       0     0     0
>>>  (resilvering)
>>>    dbc35ea9-95d1-bd40-b79e-90d8a37079a6  ONLINE       0     0     0
>>>  (resilvering)
>>>    ac62bf3e-517e-a444-ae4f-a784b81cd14c  ONLINE       0     0     0
>>>  (resilvering)
>>>    d211031c-54d4-2443-853c-7e5c075b28ab  ONLINE       0     0     0
>>>  (resilvering)
>>>    06ba16e5-05cf-9b45-a267-510bfe98ceb1  ONLINE       0     0     0
>>>  (resilvering)
>>>  draid2:3d:6c:1s-1                       ONLINE       0     0     0
>>>    be297802-095c-7d43-9132-360627ba8ceb  ONLINE       0     0     0
>>>    e849981c-7316-cb47-b926-61d444790518  ONLINE       0     0     0
>>>    bbc6d66d-38e1-c448-9d00-10ba7adcd371  ONLINE       0     0     0
>>>    9fb44c95-5ea6-2347-ae97-38de283f45bf  ONLINE       0     0     0
>>>    b212cae5-5068-8740-b120-0618ad459c1f  ONLINE       0     0     0
>>>    8c771f6b-7d48-e744-9e25-847230fd2fdd  ONLINE       0     0     0
>>> spares
>>>  draid2-0-0                              AVAIL
>>>  draid2-1-0                              AVAIL
>>>
>>> errors: No known data errors
>>> root@hqs1:~#
>>>
>>> Here's a snippet of zpool iostat -v 1 ...
>>>
>>>                                             capacity     operations
>>> bandwidth
>>> pool                                      alloc   free   read  write
>>> read  write
>>> ----------------------------------------  -----  -----  -----  -----
>>>  -----  -----
>>> hqs1p1                                     178T  67.1T  5.68K    259
>>> 585M   144M
>>>   draid2:3d:16c:1s-0                       128T  63.1T  5.66K    259
>>> 585M   144M
>>>     780530e1-d2e4-0040-aa8b-8c7bed75a14a      -      -    208      0
>>>  25.4M      0
>>>     9c4428e8-d16f-3849-97d9-22fc441750dc      -      -   1010      2
>>> 102M  23.7K
>>>     0e148b1d-69a3-3345-9478-343ecf6b855d      -      -    145      0
>>>  34.1M  15.8K
>>>     98208ffe-4b31-564f-832d-5744c809f163      -      -    101      1
>>>  28.3M  7.90K
>>>     3ac46b0a-9c46-e14f-8137-69227f3a890a      -      -    511      0
>>>  53.5M      0
>>>     44e8f62f-5d49-c345-9c89-ac82926d42b7      -      -     12      0
>>>  4.82M      0
>>>     968dbacd-1d85-0b40-a1fc-977a09ac5aaa      -      -     22      0
>>>  5.43M  15.8K
>>>     e7ca2666-1067-f54c-b723-b464fb0a5fa3      -      -    227      2
>>>  36.7M  23.7K
>>>     318ff075-8860-e84e-8063-f77775f57a2d      -      -    999      1
>>>  83.1M  7.90K
>>>     replacing-9                               -      -      0    243
>>>  0   144M
>>>       2888151727045752617                     -      -      0      0
>>>  0      0
>>>       sdd                                     -      -      0    243
>>>  0   144M
>>>     fd69f284-d05d-f145-9bdb-0da8a72bf311      -      -    306      0
>>>  54.5M  15.8K
>>>     f40f997a-33a1-2a4e-bb8d-64223c441f0f      -      -     47      0
>>>  16.9M      0
>>>     dbc35ea9-95d1-bd40-b79e-90d8a37079a6      -      -    234      0
>>>  16.7M  15.8K
>>>     ac62bf3e-517e-a444-ae4f-a784b81cd14c      -      -    417      0
>>>  15.9M      0
>>>     d211031c-54d4-2443-853c-7e5c075b28ab      -      -    911      0
>>>  48.4M  15.8K
>>>     06ba16e5-05cf-9b45-a267-510bfe98ceb1      -      -    643      0
>>>  60.1M  15.8K
>>>   draid2:3d:6c:1s-1                       50.6T  3.96T     19      0
>>> 198K      0
>>>     be297802-095c-7d43-9132-360627ba8ceb      -      -      3      0
>>>  39.5K      0
>>>     e849981c-7316-cb47-b926-61d444790518      -      -      2      0
>>>  23.7K      0
>>>     bbc6d66d-38e1-c448-9d00-10ba7adcd371      -      -      2      0
>>>  23.7K      0
>>>     9fb44c95-5ea6-2347-ae97-38de283f45bf      -      -      3      0
>>>  39.5K      0
>>>     b212cae5-5068-8740-b120-0618ad459c1f      -      -      3      0
>>>  39.5K      0
>>>     8c771f6b-7d48-e744-9e25-847230fd2fdd      -      -      1      0
>>>  31.6K      0
>>> ----------------------------------------  -----  -----  -----  -----
>>>  -----  -----
>>>
>>> Lots of DRAID goodness there. Seems to be resilvering a q good whack.
>>>
>>> My main question is: why have the DRAID vdevs been so disproportionately
>>> allocated?
>>>
>>
>> When doing a replace to disk, which is not the same as replace to logical
>> spare, then the
>> disk's write performance is the bottleneck. The draid rebuild time
>> improvements only apply
>> when rebuilding onto a logical spare.
>>
>> The data should be spread about nicely, but I don't think you'll see that
>> with a short time interval.
>> Over perhaps 100 seconds or so, it should look more randomly spread.
>>  -- richard
>>
>>
>>
>>>
>>> *openzfs <https://openzfs.topicbox.com/latest>* / openzfs-developer /
>> see discussions <https://openzfs.topicbox.com/groups/developer> +
>> participants <https://openzfs.topicbox.com/groups/developer/members> +
>> delivery options
>> <https://openzfs.topicbox.com/groups/developer/subscription> Permalink
>> <https://openzfs.topicbox.com/groups/developer/T386dac0e170785f1-Md3fbc777aeb31f7281232275>
>>

------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/T386dac0e170785f1-Me4ad6a5093ae3412cc99d80b
Delivery options: https://openzfs.topicbox.com/groups/developer/subscription

Reply via email to