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 жалуется на символические ссылки
  • Попытка создать cron для Rsync, затем tar папку
  • Как выполнить rsync только определенный список файлов в том же месте на другом сервере
  • Локальная синхронизация в реальном времени
  • Как выполнить сухую работу с использованием rsync over ssh?
  • легкое решение для резервного копирования на основе диска
  • Linux зависает при передаче больших файлов с помощью rsync
  • Не удается передать ssh-соединение с помощью rsync
  • Использование Rsync включает и исключает опции для включения каталога и подкаталога, но исключает файлы в подкаталоге
  • Перенести почту с dovecot на centos на dovecot на debian
  • linux + запустить скрипт на удаленном компьютере
  • Linux и Unix - лучшая ОС в мире.