Сбои генерации хэшей BranchCache: решение ошибок публикации и Event ID 4
Симптомы сбоев публикации данных BranchCache
Филиальные клиенты не кэшируют данные с центрального файлового сервера, загружая трафик по медленному каналу WAN. В журнале Microsoft-Windows-BranchCache/Operational или BranchCacheSMB/Operational регистрируются ошибки: Event ID 4: The BranchCache service failed to generate hashes for the file или Event ID 21: Hash publication failed.
| Симптом | Где отображается | Причина |
|---|---|---|
| Event ID 4 / 21 BranchCache | Журнал Operational | Недостаточно прав службы на чтение каталога или повреждение базы кэша публикаций |
| Хэши не генерируются для папки | Get-BCDataCache | Не включена поддержка BranchCache в свойствах конкретной сетевой папки SMB |
| Служба PeerDistSvc остановлена | Диспетчер служб | Конфликт портов публикации HTTP (TCP 80) или WS-Discovery (TCP 3702) |
Пошаговое восстановление генерации хэшей BranchCache
- Проверьте текущее состояние службы BranchCache и публикаций:
Get-BCStatus; Get-BCDataCache - Включите публикацию хэшей для сетевых папок в групповых политиках (GPO): перейдите: Конфигурация компьютера > Административные шаблоны > Сеть > Диспетчер локальной сети (Lanman Server) > Публикация хэшей для BranchCache > установите «Разрешить публикацию хэшей для всех общих папок».
- Сбросьте и переинициализируйте локальное хранилище хэшей:
Reset-BC -Force; Set-BCCache -Percentage 20 - Принудительно сгенерируйте хэши для каталога файлов:
Publish-BCFileContent -Path "D:\CorporateFiles" -StageFiles
Совет: BranchCache не генерирует хэши для файлов размером менее 64 КБ, так как накладные расходы на вычисление хэшей превышают выигрыш от кэширования мелких пакетов.
Частые вопросы (FAQ)
В чем разница между режимами Hosted Cache и Distributed Cache в BranchCache?
Distributed Cache распределяет кэш между рабочими станциями филиала. Hosted Cache хранит все закэшированные данные на выделенном сервере филиала.
Какая системная служба отвечает за работу BranchCache?
Служба BranchCache с системным именем PeerDistSvc (Peer Distribution Service).
Как проверить размер занятого пространства кэша BranchCache?
Выполните команду Get-BCDataCache | Select-Object CacheBytesCurrent, CacheBytesMax.
Какие порты использует BranchCache?
Порт TCP 80 (для извлечения контента) и порты UDP/TCP 3702 (WS-Discovery) для обнаружения пиров.