When working with a new NAS (Network Attached Storage) system configured with two disks, we'd typically expect transfer speeds around 40MB/s on a 100Mb Ethernet network. However, actual measurements show significantly slower performance at just 8-10MB/s - barely 20-25% of the expected throughput.
Several factors could be contributing to this suboptimal performance:
- Network Configuration Issues: Misconfigured duplex settings or outdated drivers
- Cabling Problems: Using Cat5 instead of Cat5e/Cat6 cables or damaged cables
- NAS Configuration: RAID setup, disk alignment, or filesystem choices
- Protocol Overhead: SMB/CIFS typically has higher overhead than NFS or iSCSI
Here are some useful commands to diagnose network performance:
# Test network speed between machines
iperf3 -c nas-server-ip -t 20
# Check interface statistics
ethtool eth0
# Monitor real-time traffic
iftop -i eth0 -n
# Check TCP connections
ss -tulnp
# Test disk performance on NAS
hdparm -Tt /dev/sda
Try these configuration adjustments:
1. Network Interface Settings:
# Set full duplex and 100M speed
sudo ethtool -s eth0 speed 100 duplex full autoneg off
2. SMB Protocol Configuration (in smb.conf):
[global]
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
min receivefile size = 16384
write cache size = 262144
getwd cache = yes
3. TCP Stack Tuning:
# Increase TCP window size
echo 'net.core.rmem_max=16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max=16777216' >> /etc/sysctl.conf
sysctl -p
Verify your physical setup:
- All network devices (switches, routers) should support 100M full-duplex
- Cables should be Cat5e or better (look for printed specifications on the cable)
- Check for link errors in switch port statistics
- Test with direct connection (PC to NAS) to eliminate switch issues
For persistent issues, consider packet capture analysis:
# Capture traffic to/from NAS
tcpdump -i eth0 host nas-ip-address -w nas-traffic.pcap
# Analyze with Wireshark later or use:
tcpdump -r nas-traffic.pcap -n | grep -i 'retrans'
This can reveal packet loss, retransmissions, or other protocol-level issues affecting performance.
When implementing our new NAS with dual-disk RAID configuration, we expected transfer speeds matching our 100Mb network capacity (theoretical max ~12.5MB/s). Instead, we're observing just 8-10Mb/s (1-1.25MB/s) - barely 10% of the expected throughput. This clearly indicates protocol overhead or configuration issues.
Start with basic network verification. On Linux/macOS:
# Check actual link speed ethtool eth0 | grep -i speed # Continuous ping test ping -t NAS_IP # Bandwidth test (install iperf3 first) iperf3 -c NAS_IP
Windows equivalent PowerShell commands:
Get-NetAdapter | Select Name, LinkSpeed Test-NetConnection NAS_IP -Continuous
SMB/CIFS (Windows file sharing) has significant overhead. Try these optimizations in /etc/samba/smb.conf:
[global] socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 min receivefile size = 16384 getwd cache = yes write cache size = 262144
While 100Mb networks typically use standard 1500-byte MTU, test jumbo frames if all devices support it:
# Temporary test (Linux) ifconfig eth0 mtu 9000 up # Permanent setting echo "POST_UP_SCRIPT=/sbin/ifconfig eth0 mtu 9000" >> /etc/network/interfaces
Rule out storage bottlenecks with direct disk tests:
# Linux raw disk test hdparm -tT /dev/sdX # Cross-platform with dd dd if=/dev/zero of=/mnt/nas/testfile bs=1M count=1024 conv=fdatasync
Test different transfer protocols to isolate the issue:
# FTP test curl -u user:pass ftp://NAS_IP/testfile -o /dev/null # NFS mount (often faster for Linux) mount -t nfs NAS_IP:/share /mnt/nas # Rsync test rsync -avz --progress /large/file user@NAS_IP:/destination
Verify switch settings that might throttle performance:
# Cisco example show interface FastEthernet0/1 | include duplex|speed # Force settings interface FastEthernet0/1 speed 100 duplex full no negotiation auto
- Confirm all cables are CAT5e or better
- Check for duplex mismatches (should be full-duplex everywhere)
- Disable power saving on NICs:
ethtool -s eth0 wol d
- Update network drivers and firmware
- Monitor for network collisions:
netstat -i