I was looking into vSAN File Services this week as I had some customers asking about requirements and constraints. I wanted to list some of the things to understand about vSAN File Service as it is important when you are designing and configuring it. First of all, it is good to have an understanding of the implementation, well at least somewhat as vSAN File Services is managed/upgraded/update as part of vSAN. It is not an entity you as an admin don’t manage the appliance you see deployed. I created a quick demo about vSAN File Services which you can find here.
If you look at the diagram (borrowed from docs.vmware.com) above you can see that vSAN File Service leverages Agent/Appliance VMs and within each Agent VM a container, or “protocol stack”, is running. The protocol stack is what exposes the file system as an NFS file share. That has a few implications, and I want to make sure that people understand those before they start with vSAN File Services. Let’s list the requirements, constraints, and some of the things to know so they are obvious.
- NFS v3 and NFS v4.1 are both supported for 7.0
- Kerberos authentication is supported with NFS for 7.0 U1
- SMB v2.1 and v3 are supported for 7.0 U1
- Active Directory authentication is supported with SMB for 7.0 U1
- Use of spaces in OU names is not supported at this moment
- A minimum of 3 hosts within a cluster
- A maximum of 64 hosts within a cluster
- Not supported today on 2-node
- Not supported today on a stretched cluster
- Not supported today on a cluster with “compute only” nodes
- It is not supported to mount the NFS share from your ESXi host
- Maximum of 32 active FS containers/protocol stacks are provisioned
- Each host will have an FS VM, you can have more FS VMs than containers!
- Maximum number of shares per cluster is 32
- Maximum size of the file share is equal to the maximum available capacity of the vSAN cluster
- FS VMs are provisioned with 4 vCPUs and 8GB of memory
- FS VMs are provisioned by vSphere ESX Agent Manager
- You will have one FS VM for each host up to 32 hosts
- FS VMs are tied to a specific host from a compute and storage perspective, and they align of course!
- FS VMs are not integrated with vSAN Fault Domains
- FS VMs are powered off
and deleted(With 7.0 U1 the deletion doesn’t happen anymore!) when going into maintenance mode
- FS VMs are provisioned and powered on when exiting maintenance mode
- The IP addresses assigned to file services need to be on the same L2 segment
- On a standard and distributed (v)Switch, the following settings are enabled on the port group automatically: Forged Transmits, Promiscuous Mode
- For NSX-T you will only need to enable Mac Learning on the Segment Profile
- vSAN automatically downloads the OVF for the appliance, if vCenter Server cannot connect to the internet you can manually download it
- The ovf is stored on the vCenter Appliance here, if you ever want to delete it: /storage/updatemgr/vsan/fileService/
- The FS VM has its own policy (FSVM_Profile_DO_NOT_MODIFY), which should not be modified!
- The appliance is not protected across hosts, it is RAID-0 as resiliency is handled by the container layer!
- Can I increase the memory size or the number of vCPUs of the FS VM?
Yes, you can via the API. Do note that vSAN FS needs to be disabled before you configure this, the following KB describes the process.
So what does this mean? Well, from a networking standpoint, I would highly recommend creating a dedicated port group for vSAN File Service! Why? Well, Forged Transmits and Promiscuous Mode or MAC Learning are enabled by default during the configuration on the port group you selected for the vSAN File Service deployment. You may ask why this needs to be enabled, well basically because a MAC address and IP address are assigned to the container within the FS VM. This allows for resilience at the container layer but means that from a networking perspective the environment needs to be aware of it.
I hope the above details will help folks when deploying vSAN File Services in their environment. Remember, some of the limitations and constructs will definitely change with upcoming releases!
** updated to include OU name and compute only limitations on February 15th of 2021 **