Previous blog post FlashArray File Multi-Server was a feature overview from the perspective of a system, which already has that setup.
Let's look at the same feature from a viewpoint of a storage admin, who needs to start using it. For purpose of this blogpost, I'll be starting with an empty test-array. Please let me know if there is a demand for similar post focused on brown field use-case.
Setting up a data to share
Let's create a filesystem and a managed directory
# purefs create myfs
Name Created
myfs 2025-06-27 06:30:53 MDT
# puredir create myfs:mydir --path dir
Name Path File System Created
myfs:mydir /dir myfs 2025-06-27 06:31:27 MDT
So far nothing new..
Setting up a server
To create a server on FlashArray, Local Directory Service needs to be either created during Server creation or reference to existing one needs to be provided. What's Local Directory Service? It's a container for Local Users and Local Groups. It's a new container, which helps to manage users for different servers.
# pureds local ds create mylds --domain domain.my
Name Domain
mylds domain.my
Nothing prevents us now to create a actual Server object.
# pureserver create myserver --local-ds mylds
Name Dns Directory Services Local Directory Service Created
myserver management - mylds 2025-06-27 06:41:49 MDT
(Another option would be to use "built in" server, which is guaranteed to be there - "_array_server". That would also be a server, which contains all the exports which were created before migration to Multi-Server enabled release. As stated before, this post is focusing on a green field scenario, thus creating a new server object.)
Setting up an export
The server can now be used when creating export
# puredir export create --dir myfs:mydir --policy smb-simple --server myserver --export-name myexport
Name Export Name Server Directory Path Policy Type Enabled
myserver::smb::myexport myexport myserver myfs:mydir /dir smb-simple smb True
One configuration object wasn't created as part of this blog post - policy "smb-simple". That's a pre-created policy, which (unless modified) only sets the protocol to "SMB" and accepts all clients.
The name of the export has been set to "myexport", meaning that this is the string to be used by the client while mounting. The address of this export will be "${hostname}/myexport".
Setting up networking
This is a bit tough to follow, since networking pretty much depends on the local network setup and won't be reproducible in your environment, but let's see what needs to be done in the lab setup, hopefully it would be similar to what needs to be done in simple "test" scenario any reader could be doing.
Let's create and enable a simplest File VIF possible
# purenetwork eth create vif vif1 --address 192.168.1.100/24 --subinterfacelist ct0.eth2 --serverlist myserver
Name Enabled Type Subnet Address Mask Gateway MTU MAC Speed Services Subinterfaces Servers
vif1 False vif 192.168.1.100 255.255.255.0 - 8950 22:39:87:5e:f4:79 10.00 Gb/s file eth2 myserver
# purenetwork eth enable vif1
Name Enabled Type Subnet Address Mask Gateway MTU MAC Speed Services Subinterfaces Servers
vif1 True vif - 192.168.1.100 255.255.255.0 - 8950 22:39:87:5e:f4:79 10.00 Gb/s file eth2 myserver
That should do it.
Setting up Directory Services
Server on FlashArray always has Local Directory Service and additionally it can be configured either to verify users against LDAP or Active Directory.
LDAP configuration would be set up as
# pureds create myds ...
# pureserver setattr --ds myds myserver
Or we can opt-in to join the Active Directory
# puread account create myserver::ad-myserver --domain some.domain --computer-name myserver-computer-name
But we don't have to!
Let's make this very simple and use the Local Directory Service which has been created before - it's already user by our Server, so the only thing left is to create a user (and let's join Administrators group.. because we can)
# pureds local user create pure --primary-group Administrators --password --local-ds mylds
Enter password:
Retype password:
Name Local Directory Service Built In Enabled Primary Group Uid
pure mylds False True Administrators 1000
Now, we should have everything set up for client to mount exposed share.
Mounting an export (on linux)
Let's use a linux client, since it will fit nicely to the rest of the operations and command line examples we have so far. At this point, the share can be easily mounted on any Windows box as well and also all the configuration made on the command line can be easily done on the GUI.
client # mount -v -t cifs -o 'user=pure,domain=domain.my,pass=pure,vers=3.02' //192.168.1.100/myexport /mnt
client # mount | grep mnt
//192.168.1.100/myexport on /mnt type cifs (rw,relatime,vers=3.02,sec=ntlmssp,cache=strict,username=pure,domain=domain.my,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.1.100,file_mode=0755,dir_mode=0755,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
And now, the "/mnt" directory on the client machine represents the Managed Directory "myfs:mydir" created before and can be used up to the permissions the user "pure" has. (And since this user is a member of Administrators group, it can do anything).
Conclusion
This post shows how to set-up File Export on FlashArray with using Servers.
We can use the same Flash Array to create another server and export same or different managed directory, while using another Network interfaces or Directory Services.