Доброго дня, форумчане.
Прошу помощи с Samba 4.5.0. Установил самбу по инструции в Centos7в результате получил контроллер домена, который работает. После ввода компьютеров в домен, обнаружилась проблема, а именно: через разные неравные промежутки времени "виснет" доступ к общим ресурсам на сервере. Нашел в Сети, что нужно увеличить количество открываемых файлов иначе самба виснет
fs.file-max = 500000увеличил, проблема осталась.
Так же задал время жизни соединения:net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 6
Указанные манипуляции делал в sysctl.confПо рекомендации начал проверять службы DNS и Winbind и тут вылезла удивительная вещь: оказывается во время "зависания" самбы не работает именно winbind или, вернее сказать, не отвечает на запросы (wbinfo -p не может определить домен)
в логах самбы ничего вразумительного нет (поднимал лог левел до 9-ки ничего толком по данной ситуации не увидел), лог winbind'а практически пустой.
ниже smb.conf
# Global parameters
[global]
netbios name = DC-PFARM
realm = PFARM.LAN
workgroup = PFARM
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc
server role = active directory domain controller
bind interfaces only = yes
interfaces = 192.168.7.251/24
security = user#отключение технологии sasl wrapping (защита соединения с ldap)
client ldap sasl wrapping = plain
#отключения верификации клиентов
client signing = off
#отключения защиты DCE/RPC
require strong key = false
winbind sealed pipes = falseidmap config * : backend = tdb
idmap config * : range = 3000-7999
winbind nss info = template
winbind use default domain = true
log level = 3
log file = /var/log/samba/%S.log
max log size = 512000
password server = DC-PFARM
logon drive = h:
logon path = \\dc-pfarm\home\%U#отключаем службу принтеров
load printers = no
printing = bsd
printcap name = /dev/null#For ACL attribute
vfs objects = acl_xattr
map acl inherit = Yes
store dos attributes = Yes#для обращений по обозреванию сети
local master = yes
preferred master = yes
os level = 255
domain master = yes
wins support = yes
[netlogon]
path = /var/samba/netlogon
read only = No
write ok = Yes
browseable = no
guest ok = no
public = yesПрошу помочь решить проблему, указать куда ковырять и т.д.
/etc/security/limits.confпопробуй добавить (изменить)
* soft nproc unlimited
* hard nproc unlimited
> /etc/security/limits.conf
> попробуй добавить (изменить)
> *
> soft nproc
> unlimited
> *
> hard nproc
> unlimitedпрошу рассказать причину в необходимости этих настроек. данные настройки должны выполнятся на высоконагруженных серверах (так в доке написано), у меня же всего 26 станций + сервер БД (по моему это не большая нагрузка на сервер AD).
я попробую после праздников так покрутить (дабы не положить систему совсем). о результатах сообщу
> Прошу помочь решить проблему, указать куда ковырять и т.д.Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не нужен (а зачем он нужен в домене?), то лучше бы его отключить, конечно.
Проверьте, что в /etc/resolv.conf нет лажи и что все указанные там сервера отвечают одинаково и быстро.
Лимиты увеличивать здесь точно не поможет.
UPD: Заработался. WINS вам нужен, конечно, это я уже с NetBIOS путаю. Прошу прощения.
>> Прошу помочь решить проблему, указать куда ковырять и т.д.
> Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не
> нужен (а зачем он нужен в домене?), то лучше бы его
> отключить, конечно.
> Проверьте, что в /etc/resolv.conf нет лажи и что все указанные там сервера
> отвечают одинаково и быстро.
> Лимиты увеличивать здесь точно не поможет.
> UPD: Заработался. WINS вам нужен, конечно, это я уже с NetBIOS путаю.
> Прошу прощения.содерижимое resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver 127.0.0.1т.е. данный сервак и является DNS сервером. По мне так тут проблема с winbind. он не отвечает в такие моменты. насчет лимитов у меня так же есть сомнения. Причина: в моменты когда есть проблема процессов winbindd все 3 (как и в моменты нормальной работы сервера), а вот процессов smbd аномально много
>>/usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
у меня 2 варианта: либо это кто-то пытается "подключиться" к серваку и DDoS-ит (что у меня вызывает сомнения), из-за чего winbindd не успевает обрабатывать запросы, либо winbindd перестает обрабатывать запросы, из-за чего и плодится аномально много одновременных попыток подключения.
в любом случае (мне кажется где тута собака и порылась)
по поводу DNS - какие мне проверки выполнить что бы определить, что он нормально определяется?
по поводу winbind'а - используется в строенный в самбу, логи его практически всегда пустые.
>> Прошу помочь решить проблему, указать куда ковырять и т.д.
> Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не
> нужен (а зачем он нужен в домене?), то лучше бы его
> отключить, конечно.
>
>>|[sam-dom]# wbinfo --all-domains
>>|failed to call wbcListTrusts: WBC_ERR_WINBIND_NOT_AVAILABLEвот такой вывод в моменты наблюдения проблемы.
из этого могу предположить, что все таки винбинд глючит. тем более, что перезапуск DNS'a проблему не решает
>>> Прошу помочь решить проблему, указать куда ковырять и т.д.
>> Похоже на проблемы с DNS или WINS. Вообще, если WINS вам не
>> нужен (а зачем он нужен в домене?), то лучше бы его
>> отключить, конечно.
>>
>>>|[sam-dom]# wbinfo --all-domains
>>>|failed to call wbcListTrusts: WBC_ERR_WINBIND_NOT_AVAILABLE
> вот такой вывод в моменты наблюдения проблемы.
> из этого могу предположить, что все таки винбинд глючит. тем более, что
> перезапуск DNS'a проблему не решаетПосмотрел исходники Samba — судя по всему, эта проблема возникает при любой ошибке доступа к UNIX-сокету, по которому должен быть доступен winbind. То есть: если сокет не доступен на чтение-запись, или если при чтении-записи происходит ошибка (кроме EAGAIN).
А дальше у меня глаза на лоб вылезли:
ret = poll(&pfd, 1, 5000);
// <...>
if ((ret == 1) && (pfd.revents & (POLLIN|POLLHUP|POLLERR))) {
/* Do the Read */
int result = read(fd, (char *)buffer + nread,
count - nread);
if ((result == -1) || (result == 0)) {
/* Read failed. I think the only useful thing we
can do here is just return -1 and fail since the
transaction has failed half way through. */
winbind_close_sock(ctx);
return -1;
}
nread += result;
}То есть даже если read() (или write(), там похожая ситуация) вернёт -1 + errno=EAGAIN, мы считаем, что жизнь кончена. Да, они используют неблокирующийся ввод-вывод, но работают полностью синхронно — видимо, чтобы выставлять таймауты. Первая мысль была: «как этот код может вообще работать?!». Но, видимо, при небольшом объёме передаваемых или отправляемых данных у них всё помещается в буфер сокета и всё хорошо. Если они всегда передают мало-мало данных, а транзакции в целом включают одну запись и одно чтение, то это даже может работать. Хотя всё равно может какой-нибудь не очевидный лимит вылезти.
К сожалению, wbinfo не сообщает нижележащую ошибку, по которой можно было бы понять, что именно обламывается: lstat/socket/connect/read/write. Думаю, вы можете в проблемный момент попробовать с помощью nc/netcat/socat подключиться к сокету winbind (скорее всего, он где-то в /run живёт). Ну или запустить wbinfo под strace.
Есть вариант, что winbind не успевает принимать подключения (переполнен backlog, его размер равен 5), почему — сложно сказать, но есть предположение, что они таки превращают где-то неблокирующийся ввод-вывод в обычный синхронный. Можно попробовать поизучать вывод от tevent, конечно... Но лучше было бы, думаю, запустить winbind под strace -f.
тему надо наверное закрывать, т.к. "она умерла", к сожалению
спасибо откликнувшимся
> тему надо наверное закрывать, т.к. "она умерла", к сожалению
> спасибо откликнувшимсяНе. Закрывать тему не надо. Она пока ещё "живее всех живых".
Я её как раз и нашёл поиском проблемы какого-то непонятного подвисания самбы.На двух машинах у меня крутятся самбы четвёртные - они работают нормально.
А на одной машине - самба 3х. На днях начал пропадать доступ к ейным сетевым ресурсов с других станций. Перезапускаю её на машине - service samba restart, а она никак не завершает свою работу во время выполнения этой команды рестарта, пока ручками не завалишь указанный в рестарте процесс, причём не 15-м сигналом (kill -15), а только девятым (kill -9).Почему так происходит, что за зависоны такие странные - это я так и не понял.
Ну временно для этой жизни системы наваял скриптик, который спасает эту ситуацию и доступ к ресурсам этой самбы восстанавливается из сети. А в будущих жизнях в более новых версиях самбы, надеюсь, этой проблемы больше не будет.
Если еще кому-нибудь интересно - закончилось установкой более свежей версии сабмы. сейчас стоит 4.7.8.
На протяжении почти 3-х недель боков не наблюдал...