In this article we will take a look on how to connect a network folder from Windows 2012 R2 Server as a datastore on the VMware ESXi host and use it to store files of your virtual machines (VMs) or ISO images. VMWare ESXi cannot work directly with Windows shares (over SMB protocol), so we have to use it in another way.
ESXi host can use 2 types of storages as a datastore:
- Local disk or LUN from external storage device connected over Fibre Channel or iSCSI
- Network File System (NFS) – network protocol for remote access access to file systems, commonly used in Unix/Linux environment
Firstly Microsoft implemented basic NFS server functionality in Windows Server 2003 R2 and it is still present in Windows Server 2012 R2.
Tip. NFS directory usage as a storage for VMWare VM’s files should be considered only for the test or non-critical production environment.
So, at first we first need to configure NFS share on Windows 2012 R2 and then connect it as a datastore on ESXi host. We already have a server with configured role File and Storage Services. To install NFS Server feature:
- Open Server Manager console and select Manage -> Add Roles and Features
- On the Server Roles tabs expand section File and Storage Services -> File and iSCSI Services
- Tick the item Server for NFS
- After installation is finished, click on “Close”
Tip. You can install Server for NFS Features even easier with a single Powershell command:
Add-WindowsFeature "FS-NFS-Service"
Next you need to create a new Windows directory that will be used as an NFS mount point. In this example we created folder c:\nfs , and it is not the best practice :).
Switch to the Server Manager console and go to File and Storage Services-> Shares. Run New Share Wizard (Tasks -> New Share) and then select NFS Share-Quick.
Specify share path and desired name. In this example we are using share name nfs. In this case, full NSF path (Remote path to share), that can be used on Unix environment looks like this: srv_fs01:/nfs
On authentication method page disable Kerberos authentication methods and select only “No Server authentication” and “Enable unmapped user access”.
To configure share permissions enter your ESXi host FQDN name / IP address, select Read/Write permissions and tick Allow root access.
Tip. Also you can restrict access to NFS service using Windows Firewall by denying access except the required IP address or subnet
You can create an NFS share and restrict access to it via PowerShell:
New-NfsShare -Name "NFS " -Path "c:\nfs" -AllowRootAccess $true -Permission Readwrite -Authentication sys
Grant-NfsSharePermission -Name “NFS” -ClientName 192.168.1.111 -ClientType host -LanguageEncoding ANSI
So we have created a new network NFS share on Windows Server 2012 R2. It remains to connect it as a datastore to VMWare host.
Tip. Make sure that vmkernel port is configured on your ESXi host.
- Login to your vSphere server / ESXi host and select your host. From Action menu select Storage – New > Datastore
- Select NFS as a datastore type
- Select NFS 4.1 (supported on Windows Server starting from Server 2012)
- Give your Datastore a name (WindowsNFS), enter NFS Folder (/nfs) and NFS server name (IP address or DNS name)
After successfull adding the NFS datastore, it appears in the list of available host datastores. You can use this datastore (yet empty) to place the VM files or store operating systems ISO images.
- Lens Kubernetes IDE – Opensource Lens Desktop - January 27, 2023
- Using Select-Object Cmdlet in PowerShell - January 26, 2023
- How to Turn Off Siri Suggestions on iPhone? - January 25, 2023
Just what I was looking for, thanks!
After giving me a lot of headaches, I found out that a Windows Server performance for NFS shares is really awful – just forget Windows and install a proper Linux for your NFS server, and prevent those slow transfer rates.
Thank you for the very helpful article. I have two 6.5 ESXi machines. Following your instructions, I was able to mount the NFS Share successfully on one of them. However the attempt failed on the second ESXi server with an unspecified error that the NFS Server had rejected the request. Any clues as to why the NFS Server would accept the request from one ESXi Server but reject the request from the second?