I have a raidz2 pool that I created a few years back (4 * 3TB SATA 3.0 disks in an external thunderbolt enclosure) and I'm beginning to run low on space so am planning how to proceed.
Ideally what I'd like to do is replace two of my disks with 8TB ones as those seem to offer the best balance of capacity/affordability right now and leave the other two 3TB disks in place until I run low again, by which time I hope that 12 or maybe even 16TB disks will be more affordable.
It's my understanding that I need to replace the disks one at a time and allow them to fully resilver before finally expanding the pool.
I've identified the following steps as hopefully all that is needed:
1. List the IDs of all disks in the pool...
- Code: Select all
zpool status "External Raid"
This currently gives me the following:
- Code: Select all
pool: External Raid
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
External Raid ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
media-BAA31399-5116-4045-A5C3-FC4221F15928 ONLINE 0 0 0
media-22261235-A526-AC46-918F-DE1475BB6E32 ONLINE 0 0 0
media-AA2B3A84-64D4-9848-8654-11D9E6525FC8 ONLINE 0 0 0
media-DADC56B1-AED9-1141-96E4-EEAD8CE059B8 ONLINE 0 0 0
2. Power down and replace disk then boot back up and repeat to determine which disk has been replaced...
- Code: Select all
zpool status "External Raid"
I'd now expect to see something along the lines of this (the disk marked UNAVAIL being the one removed obviously):
- Code: Select all
pool: External Raid
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
External Raid DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
media-BAA31399-5116-4045-A5C3-FC4221F15928 UNAVAIL 0 0 0
media-22261235-A526-AC46-918F-DE1475BB6E32 ONLINE 0 0 0
media-AA2B3A84-64D4-9848-8654-11D9E6525FC8 ONLINE 0 0 0
media-DADC56B1-AED9-1141-96E4-EEAD8CE059B8 ONLINE 0 0 0
3. Determine the disk number of the new blank disk
- Code: Select all
diskutil list
4. Get the ID of the new disk
- Code: Select all
ls -l /var/run/disk/by-id | grep disk<numberfromdiskutil>
5. Tell O3X to replace the missing disk with the new one...
- Code: Select all
zpool replace "External Raid" <missingdiskID> /var/run/disk/by-id/<newdiskID>
6. Monitor the resilvering process with...
- Code: Select all
zpool status "External Raid"
7. Once complete repeat steps 1-6 with the next disk.
8. Check the new space is available under EXPANDSZ
- Code: Select all
zpool list
9. Determine the disk numbers of all disks in the array
- Code: Select all
diskutil list
10. Export the pool
- Code: Select all
zpool export "External Raid"
11. Re-import the pool using disk number references
- Code: Select all
zpool import -d /dev "External Raid"
12. Bring the first disk in the array back online using all available space
- Code: Select all
zpool online -e "External Raid" /dev/disk<disknumber>
13. Repeat step 12 for all disks in the array.
14. Check that EXPANDSZ is now empty and the pool size has increased.
- Code: Select all
zpool list
15. Export the pool and re-import with the usual media identifier references
- Code: Select all
zpool export "External Raid"
zpool import "External Raid"
16. Check that finder reports the new size correctly.
Can anyone see anything wrong with the above? Am I correct in thinking that my 2 * 8 + 2 * 3 TB disks will now provide me with an 11TB of redundant storage as opposed to the 6TB I have now?
Thanks so much in advance for any help or advice offered.