Samba slower on FreeNAS than on Linux .... Normal ?

ech1965

Dabbler
Joined
Mar 16, 2018
Messages
17
Hi,

I own a QNAP TS-853A.
* CPU N3150
* 16GB RAM
* 4 HDD 3TO
* 4 HDD 2TO

I'm evaluating 2 setups:

Setup #1 .

* FreeNAS ( 11.2)
* raidz1 4HDD 2to

Setup #2

* Proxmox Native
* MDADM 4x3TO RAID 5
* LVM ( Thin volume for VM) And LV for Storage
* Samba (version 4.9.4) is deployed in a LXC container and storage is visible through mount-bind
I made a few benchmarks ( on the same hardware... kind of multiboot by swapping the USB system disk)

Client:

* Macos Mojave ( signature behaviour modified in /etc/nsmb.conf)
* Freefilesync software used for copying
* Test data ( a bunch of files mainly small files: git repositories...) ( 597MB 6221 Files)

Bench data:

Client -> FreeBSD: 10:42 min for copying the Test Dataset to the NAS
Client -> Proxmox LXC: Less than 6 min for copying the same dataset

Is Zfs that heavier than ext4 for managing small files ?








Ref: content on /etc/nsmb.conf on my macbookpro

Code:
cat /etc/nsmb.conf
[default]
streams=yes
file_ids_off=yes
signing_required=no
dir_cache_off=yes
port445=no_netbios
protocol_vers_map=4
signing_req_vers=0


Code:
 $ cat smb.conf 

# smb.conf for samba running in LXC
#======================= Global Settings =======================

[global]

use sendfile = yes
aio read size = 16384
aio write size = 16384
min receivefile size = 16384
write cache size = 262144
strict allocate = yes
allocation roundup size = 4096

fruit:aapl = yes

# Special configuration for Apple's Time Machine
fruit:model = MacPro
fruit:advertise_fullsync = true

## Browsing/Identification ###

   workgroup = WORKGROUP

   server string = %h server (Samba, Ubuntu)
   wins support = yes
   local master = yes
   preferred master = yes

# This will prevent nmbd to search for NetBIOS names through DNS.
   dns proxy = yes


# Do something sensible when Samba crashes: mail the admin a backtrace
   panic action = /usr/share/samba/panic-action %d


####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller".
#
# Most people will want "standalone sever" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

   server min protocol = SMB2_02
   server max protocol = SMB3
   encrypt passwords = yes

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
   passdb backend = tdbsam

   obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
   pam password change = yes

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
   map to guest = never


#======================= Share Definitions =======================

#EC-HOME 
[EC]
    path = "/shared/EC-HOME"
    printable = no
    writeable = yes
    browseable = yes
    access based share enum = no
    vfs objects = catia fruit streams_xattr
    hide dot files = yes
    guest ok = no
    ea support = yes
    inherit acls = yes
    mangled names = no
    case sensitive = yes
    default case = lower
    preserve case = yes
    short preserve case = yes
    fruit:resource = file
    fruit:metadata = netatalk
    fruit:locking = netatalk
    fruit:encoding = native

[TimeMachineHome]
    path = /shared/TIME-MACHINE-HOME/%U
    valid users = %U
    writable = yes
    browseable = yes
    durable handles = yes
    kernel oplocks = no
    kernel share modes = no
    posix locking = no
    vfs objects = catia fruit streams_xattr
    ea support = yes
    inherit acls = yes
    fruit:time machine = yes
    fruit:resource = file
    fruit:metadata = netatalk
    fruit:locking = netatalk
    fruit:encoding = native
 

Yorick

Wizard
Joined
Nov 4, 2018
Messages
1,912

ech1965

Dabbler
Joined
Mar 16, 2018
Messages
17
Thanks a lot for your answers..

Will check tomorrow the impact of the strict sync parameter

EC
 

mjt5282

Contributor
Joined
Mar 19, 2013
Messages
139
ZFS aggressively uses a RAM cache for reads, and optionally a SLOG for sync writes. honestly, 16 GB total server doesn't leave much room for RAM caches. My 2 pence. Possibly, with a larger ARC, once the small files are loaded into RAM cache, it could be faster on a second run of your benchmark. But, probably EXT4 will outperform ZFS, but without the benefit of built-in read/write check-summing, self-healing, zfs send/receive, etc.
 
Top