-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Raidz expand #14840
Raidz expand #14840
Commits on May 8, 2023
-
Configuration menu - View commit details
-
Copy full SHA for f4caf7b - Browse repository at this point
Copy the full SHA f4caf7bView commit details -
This feature allows disks to be added one at a time to a RAID-Z group, expanding its capacity incrementally. This feature is especially useful for small pools (typically with only one RAID-Z group), where there isn't sufficient hardware to add capacity by adding a whole new RAID-Z group (typically doubling the number of disks). == Initiating expansion == A new device (disk) can be attached to an existing RAIDZ vdev, by running `zpool attach POOL raidzP-N NEW_DEVICE`, e.g. `zpool attach tank raidz2-0 sda`. The new device will become part of the RAIDZ group. A "raidz expansion" will be initiated, and the new device will contribute additional space to the RAIDZ group once the expansion completes. The `feature@raidz_expansion` on-disk feature flag must be `enabled` to initiate an expansion, and it remains `active` for the life of the pool. In other words, pools with expanded RAIDZ vdevs can not be imported by older releases of the ZFS software. == During expansion == The expansion entails reading all allocated space from existing disks in the RAIDZ group, and rewriting it to the new disks in the RAIDZ group (including the newly added device). The expansion progress can be monitored with `zpool status`. Data redundancy is maintained during (and after) the expansion. If a disk fails while the expansion is in progress, the expansion pauses until the health of the RAIDZ vdev is restored (e.g. by replacing the failed disk and waiting for reconstruction to complete). The pool remains accessible during expansion. Following a reboot or export/import, the expansion resumes where it left off. == After expansion == When the expansion completes, the additional space is available for use, and is reflected in the `available` zfs property (as seen in `zfs list`, `df`, etc). Expansion does not change the number of failures that can be tolerated without data loss (e.g. a RAIDZ2 is still a RAIDZ2 even after expansion). A RAIDZ vdev can be expanded multiple times. After the expansion completes, old blocks remain with their old data-to-parity ratio (e.g. 5-wide RAIDZ2, has 3 data to 2 parity), but distributed among the larger set of disks. New blocks will be written with the new data-to-parity ratio (e.g. a 5-wide RAIDZ2 which has been expanded once to 6-wide, has 4 data to 2 parity). However, the RAIDZ vdev's "assumed parity ratio" does not change, so slightly less space than is expected may be reported for newly-written blocks, according to `zfs list`, `df`, `ls -s`, and similar tools. Sponsored-by: The FreeBSD Foundation Contributions-by: Fedor Uporov <[email protected]> Contributions-by: Stuart Maybee <[email protected]> Contributions-by: Thorsten Behrens <[email protected]> Contributions-by: Fmstrat <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 18cb9f0 - Browse repository at this point
Copy the full SHA 18cb9f0View commit details -
Increase the number of txgs added to last reflow complete sync txg
Some blocks, which were synced in the same txg as raidz_reflow_complete_sync(), can have incorrect logical width. The increasing of txg value, which was added to expand txgs array, can help in this case.
Configuration menu - View commit details
-
Copy full SHA for 2e850ec - Browse repository at this point
Copy the full SHA 2e850ecView commit details -
Configuration menu - View commit details
-
Copy full SHA for 80cc84d - Browse repository at this point
Copy the full SHA 80cc84dView commit details -
Configuration menu - View commit details
-
Copy full SHA for fad7722 - Browse repository at this point
Copy the full SHA fad7722View commit details -
ztest: Make ztest_vdev_raidz_attach() error checking more closer to z…
…test_vdev_attach_detach()
Configuration menu - View commit details
-
Copy full SHA for ac4637e - Browse repository at this point
Copy the full SHA ac4637eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 935af3e - Browse repository at this point
Copy the full SHA 935af3eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0e4f962 - Browse repository at this point
Copy the full SHA 0e4f962View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5e3c16e - Browse repository at this point
Copy the full SHA 5e3c16eView commit details -
fix a bug where we can fail to repair a few blocks while in the middl…
…e of reflow The "shadow block" repair write was not acutally being executed due to bypassing in lower layers.
Configuration menu - View commit details
-
Copy full SHA for 1ac2855 - Browse repository at this point
Copy the full SHA 1ac2855View commit details -
Configuration menu - View commit details
-
Copy full SHA for ec9cf17 - Browse repository at this point
Copy the full SHA ec9cf17View commit details -
Configuration menu - View commit details
-
Copy full SHA for 40750f0 - Browse repository at this point
Copy the full SHA 40750f0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8a8423c - Browse repository at this point
Copy the full SHA 8a8423cView commit details -
Configuration menu - View commit details
-
Copy full SHA for dccddfe - Browse repository at this point
Copy the full SHA dccddfeView commit details -
Configuration menu - View commit details
-
Copy full SHA for afc1123 - Browse repository at this point
Copy the full SHA afc1123View commit details -
Configuration menu - View commit details
-
Copy full SHA for 33e2141 - Browse repository at this point
Copy the full SHA 33e2141View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2fb3d7e - Browse repository at this point
Copy the full SHA 2fb3d7eView commit details -
Skip mmp ub writing if scratch object is active.
MMP uberblock could be owerwritten by scratch object if raidz expansion is in progress.
Configuration menu - View commit details
-
Copy full SHA for 84b0814 - Browse repository at this point
Copy the full SHA 84b0814View commit details -
Revert "Make vdev_rz_expanding config variable syncing more earlier"
This reverts commit d99d9a3.
Configuration menu - View commit details
-
Copy full SHA for 95c65b6 - Browse repository at this point
Copy the full SHA 95c65b6View commit details -
Skip mmp ub writing if scratch object is active.
Improve comment.
Configuration menu - View commit details
-
Copy full SHA for c64d563 - Browse repository at this point
Copy the full SHA c64d563View commit details -
Configuration menu - View commit details
-
Copy full SHA for 91d1813 - Browse repository at this point
Copy the full SHA 91d1813View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8cd6c85 - Browse repository at this point
Copy the full SHA 8cd6c85View commit details -
Remove skip mmp ub writing if scratch object is active.
Add mmp uberblock actualization from scratch object side
Configuration menu - View commit details
-
Copy full SHA for 6a6be8e - Browse repository at this point
Copy the full SHA 6a6be8eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 914f429 - Browse repository at this point
Copy the full SHA 914f429View commit details -
Configuration menu - View commit details
-
Copy full SHA for b1c0c3d - Browse repository at this point
Copy the full SHA b1c0c3dView commit details