Почему сравнение файлов по содержимому происходит значительно медленнее на сетевых дисках по сравнению с USB-накопителями?

У меня есть домашний NAS, построенный на базе Windows 10 Pro с процессором i3 на сокете 1150 и 8 ГБ ОЗУ. В системе расшарены пять жестких дисков по 2-3 ТБ из серий WD Black и Seagate Constellation, которые обеспечивают приличные скорости. Подключение к основному компьютеру осуществляется через 2.5 Гбит/с адаптеры, что делает систему больше похожей на DAS, чем на NAS. 

Копирование и чтение файлов происходит на максимальной скорости жестких дисков, достигая до 170 МБ/с, что меня устраивает. Однако, при сравнении содержимого с помощью FreeFileSync или Total Commander скорость сравнения не превышает 60 МБ/с. В то же время, для внешних жестких дисков, подключенных через USB 3.0, скорость сравнения достигает 100 МБ/с, и это при использовании 2.5-дюймовых моделей. 

В связи с этим у меня возник вопрос: **почему скорость сравнения файлом так низка, и что можно с этим сделать?** Я узнал через ProcMon, что обе программы читают файлы медленными блоками по 250 кБ и используют флаг "без кэша". Для USB-дисков это не создает проблем, но, похоже, сеть вызывает задержки. Возможно, у кого-то есть схожий опыт или рекомендации по настройкам в реестре и другим возможным решениям этой проблемы? Учитывая, что у меня 10 ТБ данных для сравнения, это становится настоящей задачей, поскольку периодически необходимо выявлять битые файлы на NAS.
  • 27 ноября 2024 г. 12:43
Ответы на вопрос 2
Сравнение содержимого файлов на сетевых дисках может действительно занимать больше времени по сравнению с USB-накопителями, и этому есть несколько объяснений:

1. **Сетевые задержки**: Даже при использовании быстрого сетевого интерфейса (например, 2.5 Гбит/с), задержки, возникающие из-за передачи данных по сети, могут значительно повлиять на скорость сравнения. В отличие от USB, где данные передаются напрямую, в сетевом хранилище большое значение имеют сетевые протоколы, маршрутизация и возможные коллизии.

2. **Блоки чтения**: Как вы заметили, программы, такие как FreeFileSync и Total Commander, читают данные небольшими блоками (250 кБ в вашем случае). При работе с сетевыми дисками, каждая такая операция может потребовать подтверждения от сервера, что добавляет задержку. USB-драйверы, как правило, могут обрабатывать больше данных за один раз и более эффективно обращаться к устройству.

3. **Кэширование**: Возможно, в системах с сетевыми дисками кэширование не так эффективно, как в локальных USB-дисках. Это может быть вызвано настройками, например, протоколами обмена данными (SMB и т.д.) и общим состоянием сети.

4. **Обработка запроса**: Запросы на чтение в сети могут обрабатываться медленнее из-за загруженности сервера, наличия других активных подключений и других факторов сетевой среды.

### Рекомендации для улучшения скорости сравнения

1. **Используйте большие блоки данных**: Проверьте, можно ли изменить размер блоков, которые программы используют для чтения данных. Попробуйте настроить размеры блоков для сетевой передачи, если это возможно.

2. **Кэширование в системах**: Рассмотрите возможность изменения настроек кэширования на NAS. Убедитесь, что кэширование на уровне файловой системы включено.

3. **Настройка сети**: Убедитесь, что сеть настроена оптимально. Использование гигабитного Ethernet, если еще не сделано, может помочь увеличивать скорость передачи данных. Попробуйте также использовать провода, поддерживающие более высокие скорости (категория 6 или выше).

4. **Обновление сетевых драйверов**: Убедитесь, что все сетевые адаптеры и драйверы NAS обновлены до последней версии. Возможно, есть оптимизированные версии.

5. **Оптимизация софта**: Проверьте настройки программ для синхронизации (например, FreeFileSync), чтобы узнать, можно ли изменить параметры, касающиеся чтения и записи.

6. **Использование других протоколов**: Если используете SMB, может быть полезно рассмотреть использование других протоколов, например, NFS, если оборудование это поддерживает и если это возможно для вашей системы.

7. **Работа с небольшими частями**: Вместо полного сравнения всех файлов сразу, попробуйте разбивать задачу на меньшие части, чтобы избежать перегрузки сети.

8. **Мониторинг нагрузки**: Используйте инструменты мониторинга сети и нагрузки на сервер, чтобы выявить возможные узкие места в производительности.

Следуя этим рекомендациям, вы сможете улучшить скорость сравнения файлов на вашем NAS.
когда делаю сравнение по содержимому через FreeFileSync или Total Commander, скорость сравнения не поднимается выше 60 МБ/с

Возможно, идёт какое-то неоптимальное параллельное чтение, порождающее "двойную параллель" - и в передаче по сети, и при чтении с дисков.

и что делать?

Рассмотрите как вариант создание файлов-списков с контрольными суммами (хэшами).

Существует немало программ для этого, вот пара вариантов, точно поддерживающих много папок, в т.ч. вложенных:
Похожие вопросы