Добрый день коллеги.Случилась у меня на рабочем сервере неожиданная проблема, вчера 30-го все работало отлично, но сегодня 31-го сервер попросту перестал отдавать содержимое ящика клиенту.
Структура следующая:
1. релей ubuntu 14.04 dovecot + postfix + amavis
2. основной сервер ubuntu 14.04 dovecot + postfix (к нему все за почтой и подключаются)
3. веб морда ubuntu 14.04 roundcube на отдельном сервере
4. авторизация на отдельном ldap сервере тоже ubuntu 14.04
5. почтовые ящики лежат на qnap-е который монтируется на сервера по nfsВсе было отлично до сегодняшнего дня, почта приходила и уходила. Сегодня веб морда авторизует пользователей, но не может показать содержимое почтового ящика. Тоже самое в клиенте - outlook, thunderbird - авторизация проходит, но клиент висит и по таймауту пишет что сервере не ответил. При этом используя openssl я могу зайти на сервер из командной строки, и после авторизации он доооолго думает (минуты 2) и пускает на сервер, командой LIST я могу получить список писем. При этом почта превосходно уходит (можно из почтового клиента произвести отправку). Так же почта приходит - я вижу ее в самих ящиках на сервере как новую, но отправителю из вне приходит сообщение от сервера:
This is the mail system at host mail.my.domain.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<user@my.domain> (expanded from <user@my2.domain>): Command time
limit exceeded: "/usr/lib/dovecot/deliver"Единственное что я нашел в логах - сегодня в 2:43 массово посыпались сообщения на основном сервере:
Jan 31 02:43:03 mail postfix/pipe[15106]: warning: pipe_command_read: read time limit exceeded
Jan 31 02:43:03 mail postfix/pipe[15106]: 5F64E60552: to=<recipient_bcc+recipient_bcc+user@my3.domain>, relay=dovecot, delay=1000, delays=0.04/0.02/0/1000, dsn=5.3.0, status=bounced (Command time limit exceeded: "/usr/lib/dovecot/deliver")Весь лог забит этим, но такие сообщения только на основном сервере, на релее такого нет. До этого такого не было. По логам авторизация проходит успешно, сервер видит ящики, технически все работает (сервера я перезагружал), раскатывал из бэкапов 100% рабочие, конфигурация серверов не менялась вообще, никто ничего не трогал, но основной сервер не отдает содержимое ящиков. Нужна срочная помощь - уже не знаю куда смотреть.
PS нагрузки на сервера нет - процессор не нагружен, память тоже. Дисковая подсистема так же в порядке - хранилище примонтировано и работает нормально.
PSS создается впечатление что дело не в конфигурации сервера а в контенте, такое чувcтсво что dovecot что то не может прочитать или отдать и висит. Т.к. развернутый из бэкапа сервер, который полностью работал - показывает туже картину.
Спасибо.
>Jan 31 02:43:03 mail postfix/pipe[15106]: warning: pipe_command_read: read time limit exceeded
>Jan 31 02:43:03 mail postfix/pipe[15106]: 5F64E60552: to=<recipient_bcc+recipient_bcc+user@my3.domain>, relay=dovecot, delay=1000, delays=0.04/0.02/0/1000, dsn=5.3.0, status=bounced (Command time limit exceeded: "/usr/lib/dovecot/deliver")проблема в том что не отрабатывает команда, по времени выполняется очень долго:
mailbox_command = /usr/lib/dovecot/deliver куда еще передаются параметрыcommand_time_limit = возможно увеличить чтобы понять
возможно также посмотреть master.cf на наличие этой команды.
Проблема оказалась в хранилище, но я еще не знаю куда точно копать. Я отключил NAS, и вместо него создал локальные каталоги на серверах - все взлетело с пол пинка.
Проверил сеть на хранилище, скорость дисковой подсистемы - все в норме.
Есть подозрение что в файловой структуре либо ошибка либо что то как то лежит, и dovecot его не может считать, от этого виснет. Более точно отпишу, когда пойму что именно там происходит.
тоже вариант о котором подумал, тогда индексы или кешы Dovecot файлов полетели. версия Dovecot какая?
> тоже вариант о котором подумал, тогда индексы или кешы Dovecot файлов полетели.
> версия Dovecot какая?2.2.9
> 2.2.9староватая однако
>> 2.2.9
> староватая однакоНу что в комплекте с убунтой шло, то и есть.
Проблему в общем решил. Заключалась она в хранилище, по каким то причинам хранилище требовало проверку файловой системы, хотя ни сбоев в его работе, ни сбоев питания не было. При этом само хранилище было примонтировано и сохраняло данные. После проверки ничего не заработало, однако хранилище самостоятельно начало какую-то очистку, видать были какие-то зарезервированные данные. Через 40 минут очистки оно освободило порядка 1,7 ТБ места (я так и не понял откуда). После этого все взлетело на ура. Так что какой-то баг в прошивке. Пока работает так, но решено обновить прошивку, и заменить все жесткие диски на новые WD GOLD.
> Проблему в общем решил. Заключалась она в хранилище, по каким то причинам
> хранилище требовало проверку файловой системы, хотя ни сбоев в его работе,
> ни сбоев питания не было.а что за фс используется на qnap?
>> Проблему в общем решил. Заключалась она в хранилище, по каким то причинам
>> хранилище требовало проверку файловой системы, хотя ни сбоев в его работе,
>> ни сбоев питания не было.
> а что за фс используется на qnap?Судя по симптомам - ext3
> по каким то причинам хранилище требовало проверку файловой системы, хотя ни сбоев в его работе, ни сбоев питания не было.
> Судя по симптомам - ext3скорее всего при создании фс был выставлен интервал проверки фс, более точно можно глянуть в выводе dumpe2fs /dev/sdХ. Поменять можно через tune2fs -i/-c. Если не изменяет память на CentOS по дефолту выставляется 180 дней или 40 монтирований, но лучше конечно не выключать такие проверки
It is strongly recommended that either -c (mount-count-dependent) or -i (time-
dependent) checking be enabled to force periodic full e2fsck(8) checking of
the filesystem. Failure to do so may lead to filesystem corruption (due to
bad disks, cables, memory, or kernel bugs) going unnoticed, ultimately result‐
ing in data loss or corruption.
>> Проблему в общем решил. Заключалась она в хранилище, по каким то причинам
>> хранилище требовало проверку файловой системы, хотя ни сбоев в его работе,
>> ни сбоев питания не было.
> а что за фс используется на qnap?Собственная модификация линукса:
[~] # uname -a
Linux CORVUS 3.4.6 #1 SMP Fri May 22 04:41:50 CST 2015 x86_64 unknown
[~] # cat /etc/issueWelcome to TS-869U-RP(192.168.100.31), QNAP Systems, Inc.
[~] #
ФС - ext4
/dev/mapper/cachedev1 on /share/CACHEDEV1_DATA type ext4 (rw,usrjquota=aquota.user,jqfmt=vfsv0,user_xattr,data=ordered,delalloc,acl)
> Через 40 минут очистки оно освободило порядка 1,7 ТБ места (я
> так и не понял откуда). После этого все взлетело на ура.это получается задание обслуживания на QNAP отработало чтобы столько места освободить? очень интересно что он освободил...
>> Через 40 минут очистки оно освободило порядка 1,7 ТБ места (я
>> так и не понял откуда). После этого все взлетело на ура.
> это получается задание обслуживания на QNAP отработало чтобы столько места освободить?
> очень интересно что он освободил...Нет задания не было. Я проверял. Это похоже связано со способом организации дискового пространства. По сути в qnap-е используется 3 способа выделения дискового пространства - что то типа провизионинга:
1. толстое - когда из дисков создается пул, внутри пула том, который занимает все доступное пространство пула сразу. При этом томом можно манипулировать, например увеличить его.
2. тонкое - так же как в п.1. но том не сразу занимает все пространство а "растет" по мере заполнения
3. просто тупо собрать диски в массив определенного типа заняв все пространство дисков томом.3-й способ классический и самый производительный касательно работы дисковой подсистемы. 2 - самый гибкий, но показывает хуже результаты по производительности. 3- где-то по середине. Кто то создал 2 -й тип (мне структура досталась в наследство чуть больше года назад - естественно без четкой документации - лишь вики с о статьями описывающими некоторые хэндмейд аспекты). Хотя зачем не понятно - в хранилище все корзины уже заняты. Т.е. добавлять диски некуда. Я думаю именно с этим и была связана процедура очистки. Потому что зайдя на хранилище, ОС хранилища утверждала что из 5 ТБ занято 4,5 ТБ, из них данные 3 ТБ и порядка 1,5 ТБ какой-то кеш. После проверки пула, она автоматически запустил процедуру очистки этого кеша. В тоже время, на серверах примонтированные каталоги NFS показывали четко порядка 3ТБ занятого пространства. Т.е. хранилище само создало какой-то кеш и использовало его для чего-то при этом не уведомляло конечное устройство о реальном состоянии пула. Я так глубоко не разбирался в работе qnap-ов. Для меня схема должна быть максимально надежной, а значит максимально простой - если есть хранилище которое использует дисковый массив и раздает его по NFS, то именно это оно и должно делать: создать RAID массив из дисков указаного типа, отслеживать его состояние и отдавать по соответсвующему протоколу. Что оно там кешировало, зачем и как, я без понятия, тем более в хранилище нет никаких флеш или ссд модулей, да и памяти как кот наплакал - 2GB (в принципе много то и не надо - это же не ZFS).
благодарю за развернутый ответ 😀
> благодарю за развернутый ответ 😀Да незачто. И да, вся эта канитель работает на базе lvm который раскручен поверх mdadm массива. Жестко =)
[~] # pvdisplay
--- Physical volume ---
PV Name /dev/md1
VG Name vg1
PV Size 5.43 TiB / not usable 1.31 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 1423505
Free PE 0
Allocated PE 1423505
PV UUID NojlOd-UojT-CnI5-Pq2P-0DmG-l8Fc-wbILij[~] # mdadm -D /dev/md1
/dev/md1:
Version : 1.0
Creation Time : Tue Dec 17 12:01:01 2013
Raid Level : raid5
Array Size : 5830678848 (5560.57 GiB 5970.62 GB)
Used Dev Size : 1943559616 (1853.52 GiB 1990.21 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistentUpdate Time : Wed Feb 7 13:21:46 2018
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0Layout : left-symmetric
Chunk Size : 64KName : 1
UUID : e4b17bf7:0cdacee0:4f023187:0a9def79
Events : 6362Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 8 19 1 active sync /dev/sdb3
2 8 35 2 active sync /dev/sdc3
3 8 51 3 active sync /dev/sdd3