After my last foray into creating a new Storage Space, I converted my file server’s data partition to a storage space with parity using the original 2 1.5TB drives plus a new 2TB drive. (I obtained this drive as a way to expand my space since I was running low and this was the only size available – 1.5TB drives were not available at my local store). I copied off all my data and built a new storage space with the 3 drives and formatted it with ReFS. This used 1.5TB from the three drives as the maximum available space leaving the extra 0.5TB as “spare”.
Now, the 2TB drive that failed (mentioned in my last post) as covered with a warranty and I now have it’s replacement. I wanted to add the drive to my new storage space and grow the partition to take advantage of the extra capacity. This, however, is harder than it seems at first. Since the volume built on the storage space is based on a number of factors such as data columns that, once created, cannot be modified, I really needed to create a new volume using all four disks in the storage space. I had intended to simply add the disk and expand the volume, but this cannot be done apparently. I also thought that maybe I could shrink the volume and make a new one using the remainder, moving the data, and repeating the process until all the data was moved. However, it seems that at the present time, you cannot shrink an ReFS volume. I cannot find a link yet to support that, but as I’m unable to do it, I must simply do the brute-force approach: move the data off and rebuild the volume.
I can easily change the size of the pool, but the volume had a fixed number of parity columns that couldn’t be changed. So, the data is now being moved and once it’s done, I’ll create a new volume with more space. That should last me a little while.
Afterwards, I know that the best way to increase my storage would be to simply buy larger drives and replace the smaller ones. If, for example, I replaced the two 1.5TB drives (one at a time, of course, letting the array “service” itself each time) with 3TB drives, I could then likely grow the volume that the partition sits on from 4x1.5TB stripes to 4x2TB stripes (the other two disks are only 2TB). I could replace them as well, and then there would be 4x3TB stripes in total growing the pool and increasing the volume capacity from 4.5TB to 6TB with parity. But, that would assume that in the future, ReFS formatted volumes could be resized.
Let’s hope they can.
[2013-07-25 UPDATE]: So I've done some more experimenting, and my last paragraph is inaccurate. I had a storage space of two 1TB disks and a mirror volume configured on it, taking all the space, with an ReFS formatted partition on the volume. I added two additional drives (thus exhausting the capacity for internal drives on this particular server) and wanted to add these drives to the pool and stretch the volume and partition out to match. Adding the new disks to the pool is easy. Based on my previous writing, I thought it would be impossible to grow the volume out to fit the new pool size, BUT it seems that if you have a matching number of data columns (since I had 2 previously, adding 2 more worked like a champ), you actually can extend your volume easily. I now have grown my volume to encompass 4 disks in a mirrored configuration. Then, it was left to me to grow the partition on the newly larger value to match the complete size. It was formatted ReFS, so I wasn't sure it could be done, but wonderfully, it was possible. I have now doubled my available VM storage capacity and increased my performance without destroying the volume and rebuilding!
Excellent work, Windows team!