I was defining a VM storage policy for VSAN and it resulted in something unexpected. You might have read that when no policy is defined within vCenter that VSAN defaults to the following for availability reasons:
- Failures to tolerate = 1
So I figured I would define a new policy and include “stripe width” in this policy. I wanted to have a stripe width of 2 and “failures to tolerate” set to the default of 1. I figured as “failures to tolerate” is set to 1 anyway by default I would specify it, but would just specify stripe width. Why add rules which already have the correct value right?
Well that is what I figured, no point in adding it… and this was the result:
Do you notice something in the above screenshot? I do… I see no “RAID 1” mentioned and all components reside on the same host, esx014, in this case. So what does that mean? It means that when you create a profile and do not specify “failures to tolerate” that is default to 0 and no mirror copies are created. This is not the situation you want to find yourself in! So when you define stripe width, make sure you also define “failures to tolerate”. Even better, when you create a VM Storage Policy always include “failures to tolerate. Below is an example of what my policy should have looked like.
So remember this: When defining a new VSAN VM Storage Policy always include “Number of failures to tolerate”! If you did forget to specify it, the nice thing here is that you can change VM Storage Policies on the fly and apply them directly to your VMs. Cormac has a nice article on this subject!
Christian Hansen says
Hopefully that will be bug reported before release.
I could at least see myself forget that!
Filed it before posting this, engineering looking at it as we speak. Hopefully will go in to VSAN GA.
How can i apply a VSAN storage policy to a large number of VM’s ?
Does that apply for all default VSAN rules or just the failures to tolerate? For example – if you don’t include ‘flash read cache reservation’ does it still default to 0 or something else?