Бен, это Данила - Solaris
Sep. 10th, 2009 05:44 pmПроблемы с записью в лог-файл на ZFS.
Убираю под кат. Мне не хватает базисного понимания процесса. Не связанным с профессией френдам приношу извинения. Завтра с утра еще в ру_рут закину, наверное.
Есть некий модуль, который обрабатывает события и пишет error-лог в случае, если что-то не так.
Пока модуль крутился на машине, которая держала логи на NFS, мы не чаяли беды.
Сейчас модуль крутится на последнем релизе Соляриса. Файловая система - ZFS, mirror на два диска.
События в лог пишутся не сразу, а по факту накопления некоторого количества событий. Хуже того, если штатно погасить модуль, послав ему предписанный SIGTERM, ошибки, которые произошли (их можно спровоцировать), но еще не записались в лог - пропадают.
Выглядит это как некорректная работа кэша, хотя аналогия, конечно, враг решения.
На этом мысль останавливается. Я повесила мониторинг ошибок в системных вызовах скриптиком из DTraceKit - все в порядке, да и, мне кажется. так и должно быть, поскольку на другой файловой системе все работает нормально.
Я правильно понимаю, что системный вызов write записывает куда дают (то есть по умолчанию в кэш файловой системы) и умывает руки? То есть если что и мониторить, то это zfs? Но что именно? У меня огромный провал в этом месте, и я поблагодарю за любой хинт. А если удастся что починить - расскажу.
Убираю под кат. Мне не хватает базисного понимания процесса. Не связанным с профессией френдам приношу извинения. Завтра с утра еще в ру_рут закину, наверное.
Есть некий модуль, который обрабатывает события и пишет error-лог в случае, если что-то не так.
Пока модуль крутился на машине, которая держала логи на NFS, мы не чаяли беды.
Сейчас модуль крутится на последнем релизе Соляриса. Файловая система - ZFS, mirror на два диска.
События в лог пишутся не сразу, а по факту накопления некоторого количества событий. Хуже того, если штатно погасить модуль, послав ему предписанный SIGTERM, ошибки, которые произошли (их можно спровоцировать), но еще не записались в лог - пропадают.
Выглядит это как некорректная работа кэша, хотя аналогия, конечно, враг решения.
На этом мысль останавливается. Я повесила мониторинг ошибок в системных вызовах скриптиком из DTraceKit - все в порядке, да и, мне кажется. так и должно быть, поскольку на другой файловой системе все работает нормально.
Я правильно понимаю, что системный вызов write записывает куда дают (то есть по умолчанию в кэш файловой системы) и умывает руки? То есть если что и мониторить, то это zfs? Но что именно? У меня огромный провал в этом месте, и я поблагодарю за любой хинт. А если удастся что починить - расскажу.