Proxmox: iSCSI LUN as Shared Storage
While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up…
Whether you’re writing a review of a NAS, are trying to troubleshoot your NAS read/write speeds, or are just plain showing off, it seems that benchmarking the transfer speed of a NAS is a common enough request that multiple vendors provide methods to achieve this.
While it’s not strictly (by default) a tool to measure NAS network and read/write speed, iperf3 is a very handy command line tool that can give you a good indication of your system performance, especially if you’re trying to compare configurations and improve your setup.
Getting started on an Asustor NAS is fairly simple. Firstly, head into App Central and search for iperf3, then hit Install. That’s it. But…where is it? How do you use it?
Because it’s a command line tool, you’ll need to SSH into the unit to start the iperf3 in server mode.
If you’ve not previously enabled SSH on your NAS, go into Services ->Terminal. Select the box to enable SSH, and if you don’t need SFTP, uncheck that box. Then click Apply.

Now that it’s enabled, you can connect to the NAS with your SSH client of choice using an administrator or equally permissioned account on your NAS.
Now that you’re connected to the NAS, run the following:
iperf3 -s -p 5201 -4
-s tells it to run in server mode. -p allows us to specify the port (it can be anything, but 5201 is common for iperf3). -4 specifies that we’re using IPv4, not IPv6.
The server process will keep running until you tell it to stop with ctrl + C.
On another host on your network , i.e. where you’re simulating the NAS traffic from, you’ll also need to download iperf3.
You can download it for lots of different operating systems from here. In this example, I’m using Windows 11. After downloading and unzipping the Windows version, open a command prompt as Administrator (right-click the icon -> Run as Administrator). Either change directory to where the extracted program is (cd c:\\Users\\you\\Downloads\\whatever), or add the program to your user PATH.
Now run:
iperf3 -c NAS_IP -p 5201
When you hit enter, you should see your SSH terminal to the service, and your client both start running.

If you want the test to run for longer, you can use -t to specify how many seconds the transfer should run for, where running a longer transfer might be useful if you’re dealing with buffers/caches that might mask your true throughput.
e.g. iperf3 -c NAS_IP -p 5201 -t 30
If you want to specify a file to transfer rather than the stream of made-up data that iperf3 will use by default, use -F c:\\path\\to\\your\\file. Bear in mind that you’ll want to use a large file to get a better idea of throughput.
This runs the test in reverse mode! The server will send data, and the client receives it. A nice option that means you don’t have to change the command on both ends.
Just as the client has a -F option, so does the server. -F here will write the received file or datastream to the location your specify. This is where using iperf3 to check the write speed of a NAS comes into play, because you’re actually forcing the machine to combine the network and disk write elements in the same process.
Depending on what volumes you have on your system, you’ll want to specify the path according to the kind of test you’re running (in my example, I have SSDs for volume’s 1 and 2, but hard drives for volume 3).
iperf3 -s -p 5201 -4 -F /volume2/testfile
With the -F option for both client and server, we can technically test the disk read from the client, the network transfer, and the NAS’s write, giving us an end-to-end test of the transfer. The downside to this comes back to the file caching, so for multiple tests, you might want to duplicate a large file.
iperf3 will run multiple times, although you’ll need to connect a second/third/as many as you want SSH session to the NAS and run the server commands so they don’t conflict with each other.
For example, note the different port numbers and filenames:
### SSH connection 1:
iperf3 -s -p 5201 -4 -F /volume2/testfile1
### SSH connection 1:
iperf3 -s -p 5202 -4 -F /volume2/testfile2
### SSH connection 1:
iperf3 -s -p 5203 -4 -F /volume2/testfile3
### Make sure each client connects to a different port!
Why would you want this? Well, some Asustor units have multiple multi-gigabit ethernet connections, and as they can run in an ‘aggregated’ mode, that’s a lot of bandwidth that you might not be able to maximise from one PC, so using more clients let’s you work out the maximum throughput your NAS can handle (even if the process will require you manually starting the session on multiple machines as quickly as possible).
I’m pretty new to using iperf3, but it’s been very useful for generating baselines of various networking and NAS configurations. If there’s anything I’ve missed, please let me know in the comments, or @techbits@fosstodon.org.
Share this article:
While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up…
While checking out an ASUSTOR NAS (the Lockerstor 6 Gen2), I tested various configurations of storage and storage types. As part of that, I set up…
Set an Internet Local firewall rule on your UDM-Pro (or similar UniFi device) to be able to ping your IP from outside of your network.