A couple of years ago I did a VMworld session with Cormac and we discussed the top things everyone should know about vSAN. One of the items discussed was which policy changes would trigger a rebuild. We tested the various situations and documented them. Two weeks ago a question around this was asked on a VMware internal Slack channel so I shared our findings. Considering it is already a few years ago, I wanted to make sure that our documented findings were still valid, so I redid the tests.
Now before I provide a table with the findings, I just want to explain what I tested, what I did is I created a VM with a default policy. I dumped a bunch of random data on the two VMDKs attached to the VM, and I then changed the policy of the VM while the VM is running. After changing the policy I verified through the command-line, and UI, if a rebuild of the objects was occurring or not. In some cases a policy change does not require a rebuild, while in other cases it does. This, of course, depends on what is being changed within the policy, and what that means for the objects associated with the policy. Hopefully, you will find the below table useful.
|RAID-1||RAID-1 with higher FTT||Yes|
|RAID-1||RAID-1 with lower FTT||No|
|Stripe width 1||Stripe width increase by 1 (or more)||Yes|
|Stripe width x||Stripe width decrease by 1 (or more)||Yes|
|Space Reservation 0||Increase to larger than 0||No|
|Space Reservation >= 1||Increase by 1 (or more)||No|
|Space reservation > 0||Decrease to 0||No|
|Read Cache 0||Increase to larger than 0||No|
|Read Cache >= 1||Increase by 1 (or more)||No|
|Read Cache >= 1||Decrease by 1 (or more)||No|
|Checksum enabled||Checksum disabled||No|
|Checksum disabled||Checksum enabled||Yes|