rsync зависает, если я не дефрагментирую файловую систему ext4

У меня есть сервер XBian (версия Debian Raspberry Pi), запускающая rsync через inetd (а не родной dæmon). Я обслуживаю пару каталогов на файловой системе ext4 (на диске USB) в качестве отдельных модулей (соответствующие модули имеют порядка 100-500 ГБ данных и 1000-10000 файлов). Я заметил, что в последнее время, когда я изменяю другие части файловой системы (т. Е. Загружает, копирует и т. Д. Не обязательно в вышеупомянутые каталоги), вызовы rsync для этих модулей будут отключены.

Для обычной команды rsync -vrt rsync://host:port/module ./ как rsync -vrt rsync://host:port/module ./ , где я не ожидал бы никакой передачи файла (т. rsync -vrt rsync://host:port/module ./ Как на сервере, так и на клиентах будут одинаковые данные), в журнале сервера rsync файл, я вижу такие журналы:

 2014/12/15 22:59:59 [###] connect from UNKNOWN (1.1.1.1) 2014/12/15 22:59:59 [###] rsync on share/ from UNKNOWN (1.1.1.1) 2014/12/15 22:59:59 [###] building file list 2014/12/15 23:16:23 [###] rsync: read error: Connection timed out (110) 2014/12/15 23:16:23 [###] rsync error: error in socket IO (code 10) at io.c(785) [sender=3.1.1] 

В журналах клиента я вижу такие журналы (да, одна и та же передача – сервер сообщает о тайм-ауте через 15 минут, пока клиент сообщил об ошибке через 30 минут):

 2014/12/15 23:00:01 [###] receiving file list 2014/12/15 23:29:26 [###] rsync: read error: Connection reset by peer (104) 2014/12/15 23:29:26 [###] rsync error: error in rsync protocol data stream (code 12) at /usr/src/ports/rsync/rsync-3.0.9-1/src/rsync-3.0.9/io.c(764) [Receiver=3.0.9] 

Любое количество проблем может привести к подобной ситуации, но после дефрагментации нескольких файлов для других проблем, которые я заметил, я также заметил, что мои передачи rsync начнут успешно завершаться. Затем, после того как я загрузил еще несколько файлов (опять же, в каталог за пределами модуля rsync), я увижу, что таймауты возвращаются. Теперь, когда я вижу, что мои журналы имеют ошибки тайм-аута, я дефрагментирую (с e4defrag ) свою систему, а затем снова могу успешно запустить rsync-передачу.

Несколько дополнительных примечаний:

  • Мой раздел ext4 использует менее 50% доступного пространства на данный момент
  • Мои вызовы rsync на другие, более мелкие модули не выходят за пределы времени
  • Даже вызовы без передачи данных (например, rsync -rt rsync://host:post/module ) тайм-аут в этом состоянии
  • После дальнейшего тестирования кажется, что после дефрагментации я могу успешно запустить вызов rsync один раз, прежде чем мне понадобится снова дефрагментировать (действительно ли вызов rsync вызывает фрагментацию файла?)

Почему моя настройка rsync требует дефрагментации каждый раз и что я могу сделать, чтобы мой rsync не нарушил такие незначительные неудобства?

2 Solutions collect form web for “rsync зависает, если я не дефрагментирую файловую систему ext4”

Попробуйте tar для / dev / null каталога вместо дефрагментации … который определенно не изменит диск, но получит все кэширование inodes. С большими каталогами, содержащими множество файлов, ext4 индексирует их в дереве хэширования, поэтому readdir () возвращает их по существу в случайном порядке. Попытка стата () их в том же порядке вызывает много попыток, делая это очень, очень медленно.

Я собираю информацию о журнальных системах в ext3 и ext4, а также о главе в wikipedia о ext4. Отложенное распределение и потенциальная потеря данных заставляют меня думать о rsync как о потенциальной причине для фрагментации. Популяция этой фразы послала меня сюда, и я на самом деле вижу описание процесса, о котором я собирался спросить! Предложение к tar для /dev/null кажется хорошим решением. Прочтите ссылку и найдите дополнительную информацию о задержке размещения.

  • Возможно ли обновлять измененные времена только без копирования файлов при использовании rsync?
  • Как проверить, что rsync правильно копировал устройство, когда включены устройства копирования?
  • Синхронизация локальных файлов с удаленным репозиторием git
  • Может ли команда rsync запускаться с использованием нескольких процессоров?
  • Rsync - измененный список изменений
  • Рекомендации по резервному копированию ZFS с другим сервером
  • rsync исключить каталог, который не работает, а также сканировать только файлы * .php
  • Как объединить несколько учетных записей WebDAV для резервного копирования?
  • rsync не будет записывать на установленный общий ресурс NFS
  • Rsync над пользовательской оболочкой с fifo
  • Синхронизация одинаковых каталогов между двумя Linux-серверами
  • Linux и Unix - лучшая ОС в мире.