June 2021 FreeBSD Developer Summit: Raid-Z Expansion
FreeBSD2 HN recommenders · 2021–2023
4K views · talk · dated · Uploaded 2021-06-28
Matt Ahrens presents the FreeBSD Foundation sponsored RAID-Z Expansion project for ZFS at the June 2021 FreeBSD Developer Summit. It explains how a RAID-Z vdev can be grown by adding disks on the fly.
HN points to it as the video explanation of how RAID-Z expansion works without block pointer rewrite.
47:18The Tragedy of systemd
linux.conf.au
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
31:44The Value of Values with Rich Hickey
InfoQ
1:48:55The Thirty Million Line Problem
Molly Rocket
1:03:51VCF East: Ken Thompson interviewed by Brian Kernighan
Vintage Computer Federation
59:56AWS re:Invent 2018: Amazon DynamoDB Deep Dive: Advanced Design Patterns for DynamoDB (DAT401)
Amazon Web Services
45:35The Real Story Behind Wayland and X - Daniel Stone (linux.conf.au 2013)
Mladen Mijatov
1:04:04LISA11 - Fork Yeah! The Rise and Development of illumos
USENIX
3 comments from Hacker News
> AFAIK ZFS pools can't easily be resized > you generally have to recreate them Not anymore. There is RAIDZ Expansion available. Happens on the fly. - [VIDEO] - [LINK]
For those that like videos more than text, there is a youtube video from last year [1] that explain the feature (unless it's changed since ,but it seems not to be the case). One downside that I see of this approach, if I understand it correctly, is that the data already present on disk will not take advantage of the extra disk per slice. For example, if I have a raidz of 4 disks (so 25% of space "wasted"), and add another disk, new data will be distributed on 5 disks (so 20% of space "wasted") but the old data will keep using stripes of 4 blocks, they will just be reshuffled between the disks. Do I understand it correctly ? [1] [VIDEO]
That is not how this will work. The reason the parity ratio stays the same, is that all of the references to the data are by DVA (Data Virtual Address, effectively the LBA within the RAID-Z vdev). So the data will occupy the same amount of space and parity as it did before. All stripes in RAID-Z are dynamic, so if your stripe is 5 wide and your array is 6 wide, the 2nd stripe will start on the last disk and wrap around. So if your 5x10 TB disks are 90% full, after the expansion they will contain the same 5.4 TB of data and 3.6 TB of parity, and the pool will now be 10 TB bigger. New writes, will be 4+2 instead, but the old data won't change (they is how this feature is able to work without needing block-pointer rewrite). See this presentation: [VIDEO]