Назад | Перейти на главную страницу

Анализ сбоя Ubuntu 12.04 - странные двоичные данные обо всех открытых файлах в момент сбоя

Пару часов назад произошел сбой системы на Ubuntu 12.04. Мы проверили все файлы журналов, и в этом нет ничего подозрительного.

Последней записью была активность голубятни. Нет сообщений о панике ядра. Ничего.

Это новый сервер (новое оборудование), которое мы тестируем перед началом производства. И поскольку это новый хард, я подозреваю, что проблема может быть связана с каким-то неисправным оборудованием.

Мы уже запустили memtester, и никаких проблем не обнаружено. Буду рад услышать от других инструментов тестирования оборудования (на машине есть SSD).

В любом случае, я хотел спросить вас о другом. Странно то, что в каждом открытом файле в момент сбоя мы обнаружили, что в них была записана следующая последовательность символов: «@ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ...».

Например, в файле журнала системного журнала мы получили:

Apr 16 15:53:56 odyssey dovecot: pop3-login: Aborted login (auth failed, 1 attempts): user=<info>, method=PLAIN, rip=46.29.255.73, lip=5.9.58.177
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ [these continues for about 1000 chars...] ^@^@^@^@Apr 16 15:55:12 odyssey kernel: imklog 5.8.6, log source = /proc/kmsg started.

У нас есть все эти символы во всех открытых файлах. К ним относятся: syslog, mail.log, kern.log, ... Но также и некоторые журналы, которые выводятся сценариями php, запущенными в CRON из учетных записей пользователей (не root).

Итак, есть идеи, почему во всех открытых файлах эти символы были написаны во время сбоя? Это очень плохо, так как сбой повредил многие файлы (мы даже не знаем, какие другие могут быть затронуты). Мы подозреваем, что во все открытые файлы (возможно, в режиме записи) на момент сбоя были вставлены все эти символы. Это почему?

Кстати [в случае, если это помогает], система автоматически перезагружалась после сбоя, но Apache не запускался. В журнале / var / apache2 / * не было следов, почему не запускался apache. После запуска "service apache2 start" он запустился без проблем. Кроме того, мы перезагружали машину вручную, и Apache также запускался при перезагрузке. Но он не запускался после сбоя и ошибок не сообщалось.

Спасибо, парни!

Те ^@ почти наверняка двоичные нули. То есть, xxd corruptfile | tail -3 вероятно выдаст что-то вроде:

#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
#######0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

О записи был передан сигнал ядру, но содержимое не было сброшено на диск. Следовательно, файл был расширен в ожидании записи, поэтому файл непреднамеренно разрежен.

Это особенно вероятно, если вы не используете журнальную файловую систему в качестве журнала. должен вызвать откат записи, если она не была завершена должным образом (а это не так из-за сбоя).