The subject of space management always seems to generate some interesting discussions, particularly in my Data ONTAP Fundamentals class. I think part of the reason for this is the terminology surrounding some of these concepts.
The first concept I want to clarify is space guarantees as they apply to flexible volumes. A flexible volume is actually a WAFL file system inside an aggregate. It is possible to have one or more of this volume/filesystems inside a single aggregate. This seems simple enough, but, as with many things WAFL related, it is not as simple beneath the surface. WAFL just behaves differently compared with other filesystems that I am familiar with. For example, one of the things I noticed when I first began working with Data ONTAP is that WAFL filesystems were never formatted.
Normally, when a filesystem is created a particular set of block is assigned to that filesystem and then organized by writing certain data structures onto those blocks. A WAFL filesystem behaves more like the concept of sparse files in UNIX. When a sparse file is created, the meta data is updated like a normal file, but blocks containing empty space are not updated. The actually size of the file and the apparent size of the file will be different. The actual size of the file will change as data updated or written into the file, but the apparent size of the file, as reported in the file system will not change.
WAFL volumes are like this. When the volume is created, metadata within the aggregate is updated to reflect the presence of the volume, but specific blocks are not actually assigned to the volume until we need them to store something. When a volume is created we have the several options that control when the space for that volume will be set aside, but specific blocks will not be assigned until they are needed.
If space guarantee is set to volume – the default behavior – then a certain number of blocks from the total in the aggregate will be set aside for use by that volume. This “guarantees” that I will have enough space within the aggregate to supply that volume. Here that looks like from FilerView:
We can check the settings on a volume by using the vol options command:
Notice here that guarantee=volume is set for vol3.
If space guarantees are set to none when the volume is created, metadata within the aggregate is updated to reflect the presence of the volume, but the number of blocks that would reflect the size of the volume is not subtracted from the total number of blocks in the aggregate. In this case, it is possible to create a volume bigger than the aggregate. This is called “thin provisioning.” If this volume were a Windows share, then a windows user who checked the properties value for the volume would see the volume size that the storage administrator used to create the volume, but he would not be able to actually write more data into the volume than could be accommodated by the aggregate.
If is also possible to have more than one volume in an aggregate without space guarantees. In this situation, blocks will be assigned to the volumes as they are needed on a first come, first served basis. Anyone looked at the volume from the user’s perspective would see the volume size the storage admin created, even though there are not enough blocks to supply the space reported.
In either case, it is up to storage administrator to stay ahead of the situation and grow the aggregate before the blocks are actually needed.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.