Skip to main content

Quickstart and Evaluation Guide for Fusion File Share Server

Introduction

This is an introductory guide to Fusion File Share Server, designed to help you quickly evaluate the product and its benefits in your environment.

What You'll Learn in This Guide

By reading and following the instructions in this guide, you'll learn:

  1. What is Fusion File Share Server, its advantages over Samba and other solutions, and other key features:

    In a brief, yet comprehensive overview of Fusion File Share Server, its key features, you'll learn how Fusion File Share Server can benefit your solution, and why it stands out from open-source alternatives. This section will help you understand the product's capabilities and how it can enhance your file sharing experience.

  2. How to Perform a Simple Installation and Configuration for Evaluation Purposes:

    Step-by-step instructions will guide you through the installation and initial configuration of Fusion File Share Server. This includes setting up the server, configuring essential settings, and preparing the system for evaluation. You'll gain practical knowledge to get Fusion File Share Server up and running quickly and efficiently.

  3. How to Test the Product and Its Performance in Your Environment:

    Learn how to evaluate Fusion File Share Server's performance within your specific environment. We will cover some testing methodologies, performance metrics, and their meaning. By the end, you'll be equipped to assess the server's capabilities and determine its suitability for your use case.

The Use Case Described in this Guide

For the sake of simplicity and quick evaluation, this guide outlines the most straightforward use case that allows you to get Fusion File Share Server up and running quickly. With the understanding that the simplest use case is rarely the one you need, it provides a solid basis for evaluation and testing, without the complexities of more advanced configurations.

The described use case is comprised of the following:

  1. Single Server, No Scale-Out, No Clustering:

    This guide focuses on setting up Fusion File Share Server on a single server. While this might not be your eventual requirement, it will aloow you to see Fusion File Share Server in action, and evaluate its performance and more basic features.

  2. File-Backed User Database, No Active Directory Integration:

    The configuration described in this guide utilizes a file-backed user database, avoiding the complexity of integrating with Active Directory. This approach makes it quick and simple to set up and test. With that said, rest assured, full Active Directory integration is available if you need it.

  3. Single Share, Open to the Entire Network:

    The guide demonstrates how to create a single file share that is accessible to the entire network. Based on your eventual needs, it's easy to expand this configuration to as many shares as you require, with different access permissions and settings, and this guide will provide you with the foundation to do so.

  4. A Windows Client for Testing:

    To validate the setup, and run some performance tests, the guide includes steps for testing the file share using a Windows client. This involves connecting to the share from a Windows machine, performing basic file operations, and verifying that the server meets performance and reliability expectations.

What is Fusion File Share Server?

Fusion File Share Server is a high-performance SMB stack for Linux, designed to enable seamless file sharing across Windows, macOS, and Linux environments.

Built for exceptional performance and minimal latency, its multi-threaded architecture ensures efficient utilization of system resources. This design allows Fusion File Share Server to handle numerous concurrent connections with high-bandwidth data transfers, while maintaining business continuity, security, and industry-leading compliance with the SMB standard.

Advantages over Samba and Other Open-Source Alternatives

Samba and other open-source SMB implementations provide valuable and flexible file sharing solutions, but these options often fall short of meeting the performance and scalability requirements of a demanding enterprise environment. Fusion File Share Server surpasses these alternatives in performance, scalability, compatibility, and ease of integration into your solutions, all while providing industry-leading support.

What sets Fusion File Share Server apart from other solutions:

The Highest-Performing SMB Implementation

Fusion File Share Server is the highest-performing SMB implementation on the market. As the only multi-threaded SMB for Linux, it's uniquely positioned to take full advantage of modern CPU architectures, delivering exceptional throughput with minimal latency while handing a large number of concurrent connections.

Unlike Samba, which typically maxes out around 2.5 GB/s, Fusion File Share Server can fully saturate even the fastest network connections, reaching throughputs of 25 GB/s when network and storage conditions permit.

The Definitive SMB Server for Linux, Backed by a Partnership with Microsoft

As an official Microsoft SMB partner and SMB patent licensee, Tuxera ensures that Fusion File Share Server fully complies with Microsoft's SMB protocol standards. This partnership ensures a reliable and up-to-date SMB implementation, while leveraging the latest advancements and support from Microsoft.

SMB Direct Support Powered by RDMA

Support for SMB Direct in Fusion File Share Server enables maximum data transfer rates while minimizing CPU usage in environments equipped with RDMA-capable hardware.

Small Footprint

Fusion File Share Server's lightweight design makes it suitable for embedded systems and white-label solutions. Its minimal resource requirements allow deployment across a wide range of hardware platforms without compromising performance or functionality.

Embedded and White-Label Friendly

Fusion File Share Server is designed for seamless integration into customer solutions. Its flexibility and efficient resource utilization make it ideal for embedded applications and OEM solutions, ensuring compatibility without disrupting existing features.

Highly Tunable

Fusion File Share Server offers extensive configuration options, enabling fine-tuning to meet specific performance and security requirements. This versatility makes it suitable for diverse environments.

Comprehensive Support

Fusion File Share Server is backed by Tuxera and its partnership with Microsoft. Your engineering teams can rely on detailed documentation, training, and expert support services to ensure seamless integration and operation within your solutions.

Additional Key Features

Continuous and High Availability

Fusion File Share Server ensures business continuity by keeping mission-critical file shares accessible, even during server updates or unexpected outages.

Active Directory Integration

Fusion File Share Server integrates with Microsoft Active Directory for centralized user management and authentication, ensuring smooth operation within Windows domain environments.

Versatile Interoperability

Fusion File Share Server can run alongside other file services, such as NFS. This flexibility allows you to add SMB file sharing features to your product or service without disrupting existing functionalities.

Enhanced Security

Fusion File Share Server supports Kerberos authentication, encryption in transit, and message signing, ensuring robust network-level security for user logins and data traffic. Additionally, it offers a highly configurable permission model and ACL support to protect against unauthorized access, along with extensive auditing capabilities.

Prerequisites

Before you begin the installation and configuration of Fusion File Share Server, there are a few prerequisites you should be mindful of:

  1. Setup Prerequisites

    To make sure your setup in on a supported configuration, see Server and Client requirements as outlined below.

  2. Performance Testing Prerequisites

    To ensure accurate performance testing, make sure your network and storage subsystems can handle the expected data transfer rates. This primarily relates to network and disk throughput.

    note

    For example, if you want to see Fusion File Share Server saturate a 10 Gbps network connection, you need to make sure that the network connection between the server and the client can handle 10 Gbps. However, since we're testing SMB, and specifically doing so by testing file operations, you also need to make sure that the storage devices on the server can handle 10 Gbps.

Server

This is the machine where you will install Fusion File Share Server.

  • Operating System: Linux.
  • Network:
    • Ensure TCP port 445 is open in any firewalls between the server and the client machine.
    • Throughput: Depending on your performance requirements, ensure that the network connection between the server and the client can handle the expected data transfer rates.
  • Shared Directory:
    • Size: 10 GB of available disk space
    • File system: Any file system supported by the kernel
    • Throughput: Depending on your performance requirements, ensure that the storage device the shared directory resides on can handle the expected data transfer rates.

Client

This is the machine from which you will access the SMB share served by your Fusion File Share Server.

  • Operating system: Windows 10, 11, or Windows Server 2016, 2019, 2022, 2025 connected to the same network as the server.
  • Network:
    • Ensure TCP port 445 is open in any firewalls between the client and the server.
    • Throughput: Depending on your performance requirements, ensure that the network connection between the client and the server can handle the expected data transfer rates.

Installing Fusion File Share Server

The Fusion File Share Server is distributed as a compressed archive containing essential binary files and configuration templates. Typically, the archive's name resembles tuxera-smb-3024.3.22.1-r1-x86_64-jammy-user-evaluation-cluster.tgz and it contains the following:

To install Fusion File Share Server, extract the archive and copy its contents to the relevant system directories:

note

In this example, the Fusion File Share Server binary is copied to /usr/sbin, the utilities to /usr/bin, and the configuration file to /etc. These directories are typically included in the $PATH variable on Linux servers. However, you may choose alternative directories based on your specific requirements.

  1. Extract the archive:

    tar -xzf tuxera-smb-3024.3.22.1-r1-x86_64-jammy-user-evaluation-cluster.tgz
  2. Change into the the extracted directory:

    cd tuxera-smb-3024.3.22.1-r1-x86_64-jammy-user-evaluation-cluster
  3. Copy the Fusion File Share Server binary to /usr/sbin, or another location of your choice:

    sudo cp -af smb/bin/tsmb-server /usr/sbin/tsmb-server
  4. Copy the utilities to /usr/bin, or another location of your choice:

    sudo cp -af smb/tools/* /usr/bin/

Configuring Fusion File Share Server

Before starting the Fusion File Share Server, you need to configure it, and create a user. The configuration file is located at /etc/tsmb.conf, and it contains various settings that control the server's behavior.

Please read this section till the end!

There are a few steps you need to follow after editing the configuration file.

The /etc/tsmb.conf Configuration File

In general, the configuration file is structured as sections that contain a list of key-value pairs. The [general] section (which MUST come first) contains general server configuration, while subsequent [share] sections define the SMB shares:

[global]
# . . . Global settings . . .
[/global]

[share]
# . . . A share's settings . . .
[/share]

[share]
# . . . Another share's settings . . .
[/share]

# . . .

Let's edit the /etc/tsmb.conf configuration file to set up a simple share, according to the use case described earlier:

  1. Under [global]:
    • Set the user database type to text:
      userdb_type = text
    • Set the user database file to /etc/tsmb-shadow:
      userdb_file = /etc/tsmb-shadow
    • Set the auxiliary directory to /var/lib/tsmb:
      runstate_dir = /var/lib/tsmb
    • Set the server to listen on all interfaces on port 445, the standard TCP port for SMB:
      listen = ANY,0.0.0.0,IPv4,445,DIRECT_TCP
    • Disable continuous availability and scale-out since we're creating a single-server setup:
      ca = false
      scale_out = false
  2. Under [share]:
    • Create a share named SH1 with the path /export/share, and full permissions for everyone:
      netname = SH1
      remark = Test Share
      path = /export/share
      permissions = everyone:full

Here is the resulting configuration file /etc/tsmb.conf, annotated for your convenience:

## Global must come first
[global]

# The type of the user database. `text` means a file-backed database
userdb_type = text

# The location of the user database file
userdb_file = /etc/tsmb-shadow

# The directory where the server stores its auxiliary and runtime files
runstate_dir = /var/lib/tsmb

# The network interfaces and ports the server listens on
listen = ANY,0.0.0.0,IPv4,445,DIRECT_TCP

# Continuous availability and scale-out, disabled for single-server setup
ca = false
scale_out = false
[/global]

# Share definitions
[share]

# The name of the share, as visibile from the clients
netname = SH1

# A description of the share
remark = Test Share

# The path to the shared directory
path = /export/share

# The permissions for the share
permissions = everyone:full
[/share]

Setting Up Important Files and Paths

Some files and paths in the mentioned in the configuration file need to be created and prepared, before starting the Fusion File Share Server. These are:

  1. The User Database File:

    Create the user database file, /etc/tsmb-shadow, and set the permissions so that only the root user can read and write to it:

    sudo touch /etc/tsmb-shadow
    sudo chmod 600 /etc/tsmb-shadow
  2. The Auxiliary Directory:

    Create the auxiliary directory /var/lib/tsmb:

    sudo mkdir -p /var/lib/tsmb
  3. The Shared Directory:

    Create the shared directory /export/share, and grant it rather promiscuous permissions (after all, it's for testing purposes only):

    sudo mkdir -p /export/share
    sudo chmod 777 /export/share
    note

    The command sequence above assumes your shared directory is on the root file system. If it's not, you might need to mount it using mount, before setting the permissions with chmod.

Creating an SMB User

To create an SMB user, you need to add an entry to the user database. This is done using the tsmb-passwd utility:

sudo /usr/bin/tsmb-passwd -a smbuser

You will be prompted to enter set password for the user, after which it will be added to the user database at /etc/tsmb-shadow.

Starting Fusion File Share Server

With the configuration file set up, and the necessary files and directories created, you can now start the Fusion File Share Server. For testing purposes, we'll start it in the foreground, so you can see the output:

sudo /usr/sbin/tsmb-server
note

If you chose a different location for the configuration file, you can specify it with the -c option:

sudo /usr/sbin/tsmb-server -c /path/to/your/tsmb.conf

Connecting to the Fusion File Share Server

With the Fusion File Share Server running, you can now connect to it from a client machine:

note

In this example, the IP address of the machine that's running the Fusion File Share Server is 10.210.0.3. Replace this with the actual IP address of your server.

  1. Connect to the Server:

    On your Windows client machine, press Win-R to open the Run dialog, and enter the server's UNC address (\\ followed by the IP address):

    Windows Run Dialog

  2. Authenticate:

    You will be prompted to enter the username (smbuser) and password for the SMB user you created earlier.

  3. Map the Share to a Drive:

    • Right-click on the sh1 share, and select Map network drive...:

      Map Network Drive

    • Assign a drive letter (in this case, Z:), and click Finish:

      Map Network Drive

    A window will open showing the contents of the share, and you can now perform file operations, such as copying files to and from the share:

    Mapped Network Drive

  4. Verify that the share is accessible and writeable, by creating the files and folders used in the performance test later on:

    • Create a directory called data on the share, by right-clicking in the window and selecting New > Folder:

      Create Folder

      Type the name of the folder, data, and press Enter:

      Name Folder

    • Open a new Notepad window, and paste the following content into it:

      [sequential-write]
      rw=write
      size=1G
      direct=1
      directory=/data
      numjobs=5
      group_reporting
      name=sequential-write-direct
      bs=8192k
      runtime=60

      [sequential-read]
      rw=read
      size=1G
      direct=1
      directory=/data
      numjobs=5
      group_reporting
      name=sequential-read
      bs=8192k
      runtime=60

      Notepad

      Click File > Save As..., and in the dialog that opens:

      • Navigate to the Z: drive
      • In the File Type dropdown, select All Files
      • In the File Name field, type test.fio
      • Click Save

      Save As

    You should now see the data folder and the test.fio file in the Z: drive (the file's extension might be hidden, depending on your File Explorer preferences):

    Contents of Drive Z: with Files Created

If you've been able to perform these steps, you've successfully connected to the Fusion File Share Server, and validated that the file share is accessible and writeable. You can now proceed to more advanced testing and benchmarking.

Testing and Benchmarking

Now that you have the Fusion File Share Server set up and connected to a client machine, you can test its performance and benchmark its capabilities. The following sections outline some basic tests you can perform to evaluate the server's performance in your environment.

First, use iperf to determine the maximum network throughput. Then, test the share's throughput using fio, to evaluate whether it can fully utilize the available network bandwidth.

Network Throughput Test with iperf

  1. Install iperf on the server and the client:

    • On the server: Use your package manager to install iperf3 (the following example is for Debian or Ubuntu; for other distributions, use the appropriate package manager):

      sudo apt update
      sudo apt install iperf3
    • On the client: Download the latest release of iperf3 for Windows from here, and extract it to C:\iperf3.

  2. Run the test:

    • On the server, in a new terminal, start the iperf3 server:
      iperf3 -s
    • On the client, open a command prompt, and run the following command to connect to the server (replace 10.210.0.3 with the IP address of your server):
      C:\> C:\iperf3\iperf3.exe -c 10.210.0.3

The test will run for a few seconds, and its output will resemble:

C:\> iperf3.exe -c 10.210.0.3
Connecting to host 10.210.0.3, port 5201
[ 5] local 10.210.0.2 port 49837 connected to 10.210.0.3 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 206 MBytes 1.72 Gbits/sec
[ 5] 1.00-2.00 sec 227 MBytes 1.90 Gbits/sec
[ 5] 2.00-3.00 sec 230 MBytes 1.93 Gbits/sec
[ 5] 3.00-4.01 sec 231 MBytes 1.92 Gbits/sec
[ 5] 4.01-5.00 sec 226 MBytes 1.92 Gbits/sec
[ 5] 5.00-6.01 sec 238 MBytes 1.98 Gbits/sec
[ 5] 6.01-7.00 sec 234 MBytes 1.98 Gbits/sec
[ 5] 7.00-8.01 sec 238 MBytes 1.98 Gbits/sec
[ 5] 8.01-9.00 sec 233 MBytes 1.97 Gbits/sec
[ 5] 9.00-10.01 sec 229 MBytes 1.91 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 2.24 GBytes 1.92 Gbits/sec sender
[ 5] 0.00-10.03 sec 2.24 GBytes 1.92 Gbits/sec receiver

iperf Done.

From the output, you can determine the maximum network throughput between the server and the client. In this example, the throughput is around 1.92 Gbits/sec, which is about 240 MB/s.

SMB Throughput Test with fio

To test the throughput of your SMB share, you can use the popular fio tool. It allows you to simulate various I/O patterns and measure the performance of file I/O, making it ideal for evaluating the performance of an SMB server.

The configuration file test.fio you created earlier contains two jobs: one for sequential writes and another for sequential reads. These jobs will write and read 5 GB of data to and from the share (1 GB per job, with 5 jobs each).

  1. Install fio on the client:

    On the client, download the latest release of fio for Windows from here. The installer will extract it to C:\Program Files\fio.

  2. Run the test:

    note

    Starting with Windows 11 24H2 and Windows Server 2025, clients require SMB message signing by default, which might affect client performance and skew the results. To ensure accurate results, disable message signing on the client by running the following PowerShell command:

    Set-SmbClientConfiguration -RequireSecuritySignature $false

    Run the fio tool with the configuration file you've created earlier:

    C:\> Z:
    Z:\> "C:\Program Files\fio\fio.exe" test.fio

The output will resemble:

fio-3.37
Starting 10 threads
sequential-write-direct: Laying out IO file (1 file / 1024MiB)
sequential-write: Laying out IO file (1 file / 1024MiB)
sequential-write: Laying out IO file (1 file / 1024MiB)
sequential-write: Laying out IO file (1 file / 1024MiB)
sequential-write: Laying out IO file (1 file / 1024MiB)
sequential-read: Laying out IO file (1 file / 1024MiB)
sequential-read: Laying out IO file (1 file / 1024MiB)
sequential-read: Laying out IO file (1 file / 1024MiB)
sequential-read: Laying out IO file (1 file / 1024MiB)
sequential-read: Laying out IO file (1 file / 1024MiB)
Jobs: 5 (f=2): [_(5),f(2),R(1),f(1),R(1)][100.0%][r=238MiB/s][r=29 IOPS][eta 00m:00s]
sequential-write-direct: (groupid=0, jobs=10): err= 0: pid=3348: Thu May 23 12:42:54 2024
read: IOPS=25, BW=205MiB/s (215MB/s)(5120MiB/25026msec)
slat (usec): min=330, max=8734, avg=678.68, stdev=656.30
clat (msec): min=92, max=341, avg=189.41, stdev=27.46
lat (msec): min=92, max=346, avg=190.09, stdev=27.58
clat percentiles (msec):
| 1.00th=[ 110], 5.00th=[ 153], 10.00th=[ 163], 20.00th=[ 169],
| 30.00th=[ 176], 40.00th=[ 182], 50.00th=[ 188], 60.00th=[ 194],
| 70.00th=[ 203], 80.00th=[ 211], 90.00th=[ 222], 95.00th=[ 232],
| 99.00th=[ 262], 99.50th=[ 271], 99.90th=[ 342], 99.95th=[ 342],
| 99.99th=[ 342]
bw ( KiB/s): min=97661, max=327045, per=100.00%, avg=213054.79, stdev=9158.66, samples=242
iops : min= 11, max= 39, avg=23.82, stdev= 1.21, samples=242
write: IOPS=27, BW=218MiB/s (229MB/s)(5120MiB/23474msec); 0 zone resets
slat (msec): min=79, max=353, avg=180.41, stdev=31.09
clat (nsec): min=634, max=5567.9k, avg=62988.34, stdev=271977.83
lat (msec): min=79, max=353, avg=180.48, stdev=31.11
clat percentiles (nsec):
| 1.00th=[ 1012], 5.00th=[ 1464], 10.00th=[ 1688],
| 20.00th=[ 2064], 30.00th=[ 2512], 40.00th=[ 3024],
| 50.00th=[ 3856], 60.00th=[ 19584], 70.00th=[ 29056],
| 80.00th=[ 63744], 90.00th=[ 130560], 95.00th=[ 205824],
| 99.00th=[ 782336], 99.50th=[1679360], 99.90th=[5537792],
| 99.95th=[5537792], 99.99th=[5537792]
bw ( KiB/s): min=144571, max=324207, per=100.00%, avg=226041.45, stdev=8452.16, samples=228
iops : min= 14, max= 37, avg=25.31, stdev= 1.11, samples=228
lat (nsec) : 750=0.16%, 1000=0.23%
lat (usec) : 2=8.67%, 4=16.09%, 10=3.05%, 20=1.80%, 50=8.67%
lat (usec) : 100=3.98%, 250=5.39%, 500=1.02%, 750=0.39%, 1000=0.16%
lat (msec) : 2=0.31%, 10=0.08%, 100=0.39%, 250=48.52%, 500=1.09%
cpu : usr=0.00%, sys=0.00%, ctx=0, majf=0, minf=0
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=640,640,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
READ: bw=205MiB/s (215MB/s), 205MiB/s-205MiB/s (215MB/s-215MB/s), io=5120MiB (5369MB), run=25026-25026msec
WRITE: bw=218MiB/s (229MB/s), 218MiB/s-218MiB/s (229MB/s-229MB/s), io=5120MiB (5369MB), run=23474-23474msec

From the output, you can determine the read and write throughput of the share.

In this example, the write throughput is approximately 229 MB/s, and the read throughput is around 215 MB/s, indicating a successful result. Ideally, these values should be close to the maximum network throughput determined earlier with iperf, allowing for minor degradation due to network protocol overhead.

Conclusion

In this guide, you've learned how to quickly set up and evaluate Fusion File Share Server in a simple, single-server configuration. You've also learned how to test the server's performance using iperf and fio, and how to connect to the server from a Windows client, allowing you to assess the server's capabilities and suitability for your needs.

For further configuration options, more advanced setups, or any questions you might have, please refer to the official documentation, or contact your sales or support representative.