Quel système de fichier utiliser sur les supports USB d'un Raspberry Pi (1) pour améliorer le taux de transfert par Samba ?
Je fais quelques tests sans prétention avec la configuration "de base" sur le Pi 1 B+
Configuration:
Raspberry Pi 1 B+
Kernel | Linux 4.9.37+ | ||
Processor | armv6l | ||
CPU Frequency | 700MHz | ||
Load Average | 1.59 1.48 0.99 | ||
CPU Temperature | 44.4℃ | ||
Uptime | 00:26 (hh:mm) | ||
Memory: | 482M | ||
Used | 183M | 38% | |
Free | 299M | 62% | |
Buffered | 27M | 6% | |
Cached | 100M | 21% | |
Swap: | 0B | ||
Used | 0B | 0% | |
Free | 0B | 0% | |
Disk Usage | |||
/ (ext4) | |||
Total Size | 2G | ||
Used | 1G | 83% | |
Available | 318M | 17% | |
/boot (vfat) | |||
Total Size | 61M | ||
Used | 23M | 38% | |
Available | 39M | 62% | |
/media/16GO (fuseblk) | |||
Total Size | 15G | ||
Used | 255M | 2% | |
Available | 15G | 98% |
smb.conf :
[global]
server string = SMB Server
security = USER
map to guest = Bad User
guest account = root
log level = 0
log file = /var/log/samba.log
max log size = 100
syslog = 0
load printers = No
printcap name = /dev/null
disable spoolss = Yes
preferred master = No
local master = No
domain master = No
dns proxy = No
create mask = 0775
directory mask = 0775
printing = bsd
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_KEEPALIVE SO_RCVBUF=65535 SO_SNDBUF=65535
write cache size = 2097152
use sendfile = yes
getwd cache = yes
min receivefile size = 16384
fstab:
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
# Preserver la carte SD:
tmpfs /tmp tmpfs defaults,noatime,nosuid,size=10m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nosuid,size=10m 0 0
tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=10m 0 0
Pas d'autre deamon lancé sur le Raspberry
Clé USB
Clé USB 16 Go Verbatim (modèle bas de gamme avec un taux de transfert sur PC de 17 Mo/s)Fichiers transférés:
Transfert d'un dossier de 828 Mo contenant 5 fichiers de tailles comprises en 80 et 230 Mo.Un fichier a un nom contenant des caractères chinois.
Les essais:
Il faudrait parler des tailles d'unité d'allocation, ici j'ai pris les tailles par défaut, je pense que ce n'est pas le meilleurs choix...
EXfat
Maximum à 11Mo/sle début de transfert utilise surement le cache RAM et culmine à 11Mo/s (max théorique de l'ethernet à 100 Mb/s)
Vitesse moyenne environ 6.5 Mo/s
VFAT 32
Maximum à 5.2 Mo/sFonctionnement erratique : blocage, plantage avec des nom de fichiers en chinois, temps de transfert total très important (plus de 7 minutes)
NTFS
Maximum à 360 Ko/sVitesse moyenne environ 355Ko/s
Vitesse stable mais ridicule. Temps de transfert total annoncé très important (plus de 40 minutes)
Je n'ai pas encore compris le PB dans ce cas, j'aurais du obtenir quelque chose ressemblant à l'essai avec VFAT mais sans erreur.
Conclusion à chaud :
UTILISER LE EXFAT SUR VOS SUPPORT USB !
PS : Un petit bémol cependant, en cas de problème sur le support, fsck ne fonctionne pas complètement, il trouvera les erreurs mais ne saura pas réparer l'exfat...
PS 2 : Il faut avoir installé exfat sur le Pi :
$ sudo apt-get install exfat-fuse exfat-utils
et monter le disque :
$ sudo mkdir /media/exfat
$ sudo mount -t exfat /dev/sdc1 /media/exfat
sdc1 doit être remplacer par le bon device, faites
$ sudo fdisk -l
pour le connaitre...
PS : Un petit bémol cependant, en cas de problème sur le support, fsck ne fonctionne pas complètement, il trouvera les erreurs mais ne saura pas réparer l'exfat...
PS 2 : Il faut avoir installé exfat sur le Pi :
$ sudo apt-get install exfat-fuse exfat-utils
et monter le disque :
$ sudo mkdir /media/exfat
$ sudo mount -t exfat /dev/sdc1 /media/exfat
sdc1 doit être remplacer par le bon device, faites
$ sudo fdisk -l
pour le connaitre...