When vSphere 6.5 released towards the end of 2016, it introduced a brand new version of VMFS, VMFS-6. VMFS probably needs little in the way of introduction at this stage, it being VMware’s flagship filesystem for over 10 years at this point. There is an older VMFS whitepaper available here if you are new to VMFS and want to get more of an overview. Now VMFS-6 introduces two new internal block sizes concept for file creation. These are referred to as LFB (Large File Blocks) and SFB (Small File Blocks) and are used to back files on the VMFS-6 volume. This is not to be confused with the VMFS Block Size, which continues to be set to 1MB.
The SFB size is set to 1MB; the LFB size is set to 512MB. When thin disks are created on VMFS-6, these thin files are now initially backed by SFBs. When Eager Zero Thick (EZT) or Lazy Zeroed Thick (LZT) files are provisioned on VMFS-6, these thick files are allocated LFBs as much as possible. If all of a thick file cannot be backed by LFBs, then SFBs are used to back the portion of the thick disk that does not fit into an LFB.
Let’s take a quick look at a vmkfstools -P -v10 output of a VMFS-6 volume that has some large files already provisioned.
VMFS-6.81 (Raw Major Version: 24) file system spanning 1 partitions. File system label (if any): pure-big-vmfs6 Mode: public ATS-only Capacity 536602476544 (511744 file blocks * 1048576), 305319116800 (291175 blocks) avail, max supported file size 70368744177664 Volume Creation Time: Wed Aug 2 12:49:01 2017 Files (max/free): 16384/16253 Ptr Blocks (max/free): 0/0 Sub Blocks (max/free): 16384/16311 Secondary Ptr Blocks (max/free): 256/255 File Blocks (overcommit/used/overcommit %): 0/220569/0 Ptr Blocks (overcommit/used/overcommit %): 0/0/0 Sub Blocks (overcommit/used/overcommit %): 0/73/0 Large File Blocks (total/used/file block clusters): 1000/152/360 Volume Metadata size: 1510866944 UUID: 5981ca3d-a9cb2e29-540a-246e962f4910 Logical device: 5981ca3c-95c4fb10-05c1-246e962f4910 Partitions spanned (on "lvm"): naa.624a9370d4d78052ea564a7e00011139:1 Is Native Snapshot Capable: NO OBJLIB-LIB: ObjLib cleanup done. WORKER: asyncOps=0 maxActiveOps=0 maxPending=0 maxCompleted=0
Highlighted above is the Large File Blocks entry, which is a new entry in this output. This is a 500GB VMFS-6 volume, and with a number of large files (VMDKs) already provisioned, we can see a number of the LFBs have already been consumed.
So what is the purpose of these new LFBs and SFBs? Essentially these are there to improve the performance of file creation operations on VMFS-6. This is especially true for thick files which will use LFBs. Included in this is swap file creation when a VM is powered on, as swap files are always thickly provisioned.
To learn more about storage improvements in vSphere 6.5, check out this core storage white paper.