Вопрос или проблема
У меня есть сервер резервного копирования, который выполняет резервное копирование других серверов, и несколько дней назад сервер резервного копирования начал испытывать ошибки и не может делать резервные копии. Я думаю, что журнал ошибок ниже может описать проблему лучше, чем я:
2012-09-10 20:05:40 Прерывание резервного копирования после сигнала PIPE
2012-09-10 20:05:44 Получена фатальная ошибка во время передачи (прервано сигналом=PIPE)
2012-09-10 21:00:15 Полное резервное копирование начато для каталога rootBackup (базовое резервное копирование #277)
2012-09-11 10:21:07 Прерывание резервного копирования после сигнала PIPE
2012-09-11 10:21:11 Получена фатальная ошибка во время передачи (прервано сигналом=PIPE)
2012-09-11 11:00:24 Полное резервное копирование начато для каталога rootBackup (базовое резервное копирование #277)
2012-09-11 13:22:41 Прерывание резервного копирования после сигнала PIPE
2012-09-11 13:22:52 Получена фатальная ошибка во время передачи (прервано сигналом=PIPE)
2012-09-11 14:00:30 Полное резервное копирование начато для каталога rootBackup (базовое резервное копирование #277) для каталога rootBackup
2012-09-14 06:38:02 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-14 06:38:08 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-14 07:00:27 Инкрементное резервное копирование начато с 2012-09-11 14:00:30 (резервное копирование #278) для каталога rootBackup
2012-09-20 14:22:04 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 14:22:10 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 15:00:45 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 15:26:29 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 15:26:35 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 16:00:12 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 16:27:37 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 16:27:43 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 17:00:09 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 17:27:37 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 17:27:43 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 18:00:20 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 18:27:49 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 18:27:55 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 19:00:26 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 19:28:29 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 19:28:36 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 20:00:32 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 20:23:06 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 20:23:11 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 21:00:16 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 21:20:30 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 21:20:37 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 22:00:15 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование #282) для каталога rootBackup
2012-09-20 22:15:21 Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
2012-09-20 22:15:26 Резервное копирование прервано (Дочерний процесс завершился преждевременно)
2012-09-20 23:00:21 Инкрементное резервное копирование начато с 2012-09-19 05:00:02 (резервное копирование
Примечание: Я использую backuppc для резервного копирования. Сервер резервного копирования может делать резервные копии для других серверов, но для одного сервера он испытывает ошибку. Поэтому я полагаю, что должна быть какая-то проблема на этом конкретном клиенте, из-за которой он завершает работу преждевременно.
Обновление:
Сеть, кажется, в порядке (netstat -in) на стороне клиента.
Таблица интерфейса ядра
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 1297053361 0 126811 0 2321209324 0 0 0 BMRU
lo 16436 0 35169163 0 0 0 35169163 0 0 0 LRU
Ниже приведены содержимое: файл /var/lib/backuppc/pc/ns381613.ovh.net-daily/XferLOG.bad.z, измененный 2012-11-21 17:25:14 (Извлечение только ошибок)
полное резервное копирование начато для каталога www (базовое резервное копирование #300)
Подключено к ns381613.ovh.net:873, удаленная версия 30
Согласована версия протокола 28
Подключено к модулю www
Отправка аргументов: --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . .
PID передачи теперь 4845
[ пропущено 120129 строк ]
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_017p907qdbm3rn5vv8gdin2ab7" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_vkn369qbj5dhoj4no0bei1sen3" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_vkn7demudpv0othe6e98s2v1v4" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_voseo6s018c8tmocgthj87irj1" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_vqpqhv16urbrh99acecmujj8j1" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_vs0j1bsfina3f4913lorb7j681" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_vu3jupeug0qpls9f6ikub544t0" (в www)
Удаленный[2]: файл исчез: "/mywebsite.com/sessions/sess_vu3pp00ko7uip62jf7vp8o8la1" (в www)
[ пропущено 55244 строки ]
Чтение EOF: Соединение сброшено партнером
Невозможно записать 32780 байт в сокет
Попытка снова: получено 0 байт
завершение: удаление файла в процессе mywebsite.com/www-bk-17-oct-2012/lms/archive/LAWYER_1350329888/document/screencasts/TechtutorTv.flv
Дочерний процесс прерывается
Завершено: 160949 файлов, 2244371209 байт
Получена фатальная ошибка во время передачи (прервано сигналом=PIPE)
Резервное копирование прервано по пользовательскому сигналу
Не сохранять это как частичное резервное копирование, поскольку оно содержит меньше файлов, чем предыдущее (получено 160949 и 160949 файлов против 5985910)
Затем я попробовал:
sudo -u backuppc /usr/share/backuppc/bin/BackupPC_dump -v -f
ns381613.ovh.net
Вывод
Отправка аргументов: --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . .
PID передачи теперь 22310
xferPids 22310
Удаленный[1]: ошибка rsync: таймаут при передаче/приеме данных (код 30) в io.c(137) [sender=3.0.7]
Чтение EOF:
Попытка снова: получено 0 байт
Дочерний процесс прерывается
Родитель прочитал EOF от дочернего процесса: фатальная ошибка!
Завершено: 0 файлов, 0 байт
Получена фатальная ошибка во время передачи (Дочерний процесс завершился преждевременно)
cmdSystemOrEval: собирается выполнить команду /bin/ping -c 1 ns381613.ovh.net
cmdSystemOrEval: завершено: получен вывод PING ns381613.ovh.net (188.165.247.43) 56(84) байт данных.
64 байта от ns381613.ovh.net (188.165.247.43): icmp_req=1 ttl=60 время=0.591 мс
--- статистика ping для ns381613.ovh.net ---
1 пакет отправлено, 1 получено, 0% потерь пакетов, время 0мс
рtt мин/avg/макс/mdev = 0.591/0.591/0.591/0.000 мс
cmdSystemOrEval: собирается выполнить команду /bin/ping -c 1 ns381613.ovh.net
cmdSystemOrEval: завершено: получен вывод PING ns381613.ovh.net (188.165.247.43) 56(84) байт данных.
64 байта от ns381613.ovh.net (188.165.247.43): icmp_req=1 ttl=60 время=0.366 мс
--- статистика ping для ns381613.ovh.net ---
1 пакет отправлено, 1 получено, 0% потерь пакетов, время 0мс
рtt мин/avg/макс/mdev = 0.366/0.366/0.366/0.000 мс
CheckHostAlive: возвращает 0.366
Резервное копирование прервано (Дочерний процесс завершился преждевременно)
Не сохранять это как частичное резервное копирование, поскольку оно содержит меньше файлов, чем предыдущее (получено 0 и 0 файлов против 1)
сброс не удался: Дочерний процесс завершился преждевременно
В вышеприведенном выводе я вижу, что говорится о таймауте, но я увеличил переменную таймаута в конфигурации.
Это просто догадка, но увеличилось ли количество файлов в резервной копии директории на клиентской стороне вокруг того времени, когда эта проблема начала проявляться? Сообщение
(прервано сигналом=PIPE)
заставляет меня думать о канале Unix. В номенклатуре резервного копирования этот канал может быть каналом имен файлов. И когда количество файлов превышает определенный размер буфера (не могу точно объяснить это без знания архитектуры систем как сервера, так и клиента), вы можете столкнуться с такими ошибками. Поскольку эта ошибка возникает от приложения резервного копирования, с которым я не знаком, я не могу заверить в корреляции между сообщением и количеством файлов, но проверить это не повредит.
Как вы можете обойти это, если это так, зависит только от вас. Можно уменьшить директорию, исключив старые файлы, или создать подпапки и переместить определенное количество файлов в эти директории. Или комбинация из двух.
Удачи
Ответ или решение
Ошибка "Got fatal error during xfer (Child exited prematurely)", которую вы наблюдаете при использовании BackupPC, является достаточно распространенной и может быть вызвана различными причинами. Давайте рассмотрим шаги по диагностике и устранению этой проблемы.
1. Причины возникновения ошибки
-
Сигнал PIPE: Сообщение "aborted by signal=PIPE" может указывать на то, что один из процессов, участвующих в передаче данных, завершился неожиданно. Это может произойти, если процесс отправителя (rsync) не может завершить свою работу из-за превышения временных лимитов или нехватки ресурсов.
-
Проблемы с сетью: Хотя вывод команды
ping
указывает на то, что сеть работает нормально (без потерь пакетов), стоит проверить другие параметры сети, такие как задержка и пропускная способность, которые могут повлиять на стабильность передачи. -
Количество файлов: Если количество файлов, подлежащих резервному копированию, значительно возросло, это может привести к превышению лимитов буфера. Как вы правильно заметили, если в каталоге слишком много файлов, это может вызвать проблемы с размером сообщения, передаваемого через канал.
2. Шаги по диагностики и решению проблемы
-
Проверка конфигурации rsync: Убедитесь, что параметры соединения rsync настроены правильно. Попробуйте изменить параметры, такие как размер блока (например,
--block-size
) и уровень сжатия, чтобы уменьшить нагрузку на сеть. -
Повышение таймаутов: Если вы уже увеличили таймаут, можно попробовать еще больше его увеличить. Для этой цели также проверьте настройки Timeout в файле конфигурации BackupPC, чтобы убедиться, что они достаточно высоки.
-
Сокращение количества файлов: Если ваши директории имеют большое количество файлов, рассмотрите возможность их разбиения на подкаталоги или удаления старых/неиспользуемых файлов. Реорганизация структуры каталогов может помочь избежать переполнения буфера.
-
Логи xferLOG.bad.z: Внимательно проанализируйте содержимое файла
xferLOG.bad.z
. Сообщения о том, что файлы "исчезли" или что система не может записать данные, могут указывать на проблемы с файловой системой на стороне клиента. Убедитесь, что на клиенте достаточно свободного места на диске, и не повреждены ли файлы. -
Проверка системных ресурсов: Убедитесь, что ресурсы на клиенте (ЦП, память, I/O) не переполнены во время резервного копирования. Используйте команды мониторинга, такие как
top
,htop
илиiostat
, чтобы проверить нагрузку на систему. -
Тестирование с меньшими наборами данных: Попробуйте запустить резервное копирование на меньшем наборе данных для проверки и диагностики. Например, попробуйте резервное копирование только одной директории с ограниченным количеством файлов.
3. Вывод
Исходя из вашей ситуации, рекомендую сосредоточиться на оптимизации структуры директорий, увеличении параметров таймаута и тщательной проверке системы на наличие аппаратных проблем или неисправностей с файлами. Если ошибка будет сохраняться, дополнительные инструменты для мониторинга могут помочь выявить корень проблемы.
Если вы будете следовать этим рекомендациям и шагам, то сможете устранить ошибку и восстановить нормальную работу вашей системы резервного копирования. Удачи!