Оптимизация работы Samba-сервера
Lycane: попробовавшие утверждают, что скоростЬ чтения поднимается с 20 до 60 мб/с 🙂
Вообще говоря, я давно был не слишком доволен работой своего самба-сервера в плане низкой скорости скачивания данных с него, но руки не доходили разобраться что и как. А тут в рассылке stable@ как раз наткнулся на эту тему со ссылкой на официальный форум, попробовал рецепт, который там вычитал и был изрядно удивлен и обрадован. Собственно, оригинал здесь, а кому лень читать английский текст, могут продолжать читать дальше.
Для достижения нирваны нам нужно подгрузить модуль aio (асинхронного I/O), вставив в /boot/loader.conf
следующее:
aio_load="YES"
Кроме того, нам нужно собрать (пересобрать) Samba с поддержкой aio (если самба уже стояла, не забываем забэкапить ее конфигурационный файл: /usr/local/etc/smb.conf
. Кромe этого саму самбу придется снести):
#cd /usr/ports/net/samba33 & make config
#make install & clean
После чего необходимо внести некоторые изменения в /usr/local/etc/smb.conf
, добавив в секцию [global]
следующие строки:
socket options=SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY min receivefile size=16384 use sendfile=true aio read size = 16384 aio write size = 16384 aio write behind = true dns proxy = no
Кроме того, советуют в /etc/sysctl.conf
вставить следующие строки:
kern.ipc.maxsockbuf=16777216 kern.ipc.nmbclusters=32768 kern.ipc.somaxconn=32768 kern.maxfiles=65536 kern.maxfilesperproc=32768 kern.maxvnodes=800000 net.inet.tcp.delayed_ack=0 net.inet.tcp.inflight.enable=0 net.inet.tcp.path_mtu_discovery=0 net.inet.tcp.recvbuf_auto=1 net.inet.tcp.recvbuf_inc=524288 net.inet.tcp.recvbuf_max=16777216 net.inet.tcp.recvspace=65536 net.inet.tcp.rfc1323=1 net.inet.tcp.sendbuf_auto=1 net.inet.tcp.sendbuf_inc=524288 net.inet.tcp.sendspace=65536 net.inet.udp.maxdgram=57344 net.inet.udp.recvspace=65536 net.local.stream.recvspace=65536 net.inet.tcp.sendbuf_max=16777216 net.inet.tcp.mssdflt=1460
Вот собственно и все. После этого перезагружаемся, либо делаем:
#/etc/rc.d/sysctl restart #kldload aio #/usr/local/etc/rc.d/samba restart
и с помощью sysctl
меняем переменные (#sysctl команда_из_последнего_списка
).
После чего запускаем копирование с samba-сервера и радуемся жизни.
Первоисточник Оптимизация работы Samba-сервера
Автор skiangel
март 2010
Ваш отзыв