As an adjunct to the last SmartPools blog post, there have been a couple of questions from the field along the following lines:
“When a new file is written, will it have the default +2d:1n protection or the +3n protection from a file pool policy applied?”
With all user-defined file pools, a file is either a member or not. This is governed by the file pool policy rules which define that particular pool. Although a file can theoretically be a member of multiple file pools, SmartPools only applies the attribute settings associated with the first rule that matches. However, the default file pool is special.
This default file pool is really just a way of specifying what the attribute settings for files should be in general. This is where files that don’t belong to any user-defined file pool get their attribute settings from. However, not all file pool policies set all possible attributes. So, if the first file pool that a file is a member of leaves some attributes unset, the remaining attributes are inherited from the default file pool settings.
If a file is set to use the default pool protection policy, then it will go look that up every time it makes a decision about the protection level for a file. But there's a gotcha that’s worth noting here: SmartPools only makes that decision on files creates and certain restripe operations. Therefore, when a file is created, it sees that it is using the default pool protection policy and will go look up what that means. Next, it turns it into a protection level, depending on the number of writable nodes and drives in that pool. Finally, it saves that protection level on the file, and future writes to the file just use that. So, if you then change what the default pool policy is, normal writes to the file will continue to use the same saved level, but newly created files will pick a level based on the updated policy. Certain job engine restripe operations (essentially everything other than FlexProtect) will also trigger a recalculation of that saved level.
So, to summarize, if you change the protection policy on a pool, new files will see it immediately, but new writes to old files, and existing data in old files, will not. New writes to old files and existing data in old files will see the protection change only after a SmartPools, SetProtectPlus, Autobalance, or Multi scan job engine job is run.
The interaction of file pool policies and the tiering of snapshots is covered in the following blog article: