При использовании веб-интерфейса Transmission на моем сервере Debian я заметил, что когда начинается загрузка, Transmission загружает около 5 МБ, а затем останавливается на несколько минут, прежде чем продолжить. При ближайшем рассмотрении я понял, что в течение этого времени загрузки «растет» файл загрузки в моем каталоге загрузок. Как только этот файл достигает размера загрузки, загрузка передачи продолжается с того места, где она была прервана.

Мне просто интересно, почему это происходит? Почему при загрузке файл расширяется до полного размера, а не расширяется во время загрузки? Я думал, что это может быть что-то, связанное со свободным пространством, но он наверняка использует du или что-то еще, чтобы проверить наличие свободного места в каталоге загрузок перед началом загрузки.

2 ответа2

1

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

В зависимости от клиента это может быть настраиваемым параметром. Клиент может даже разрешить использование разреженных файлов в файловых системах, которые их поддерживают.

1

Это связано с тем, как осуществляется торрент-передача, и реализацией Transmission . Как вы, возможно, знаете, он использует связь p2p для получения фрагментов файлов от многих пиров. Протокол пытается сбалансировать пропускную способность загрузки между узлами. Для достижения этого одноранговые узлы регулярно обмениваются информацией о уже загруженных сегментах торрента, текущей полосе пропускания и допустимой (или измеренной) максимальной полосе загрузки, поэтому в идеале ваш клиент выбирает одноранговый узел, который в настоящее время имеет самую низкую загрузку и имеет сегмент, не загруженный ваш клиент еще Это приводит к неупорядоченной загрузке сегментов. Таким образом, клиент может сначала загрузить сегмент, который находится не в начале конкретного файла. Клиент Transmission предварительно выделяет все необходимое пространство перед сегментом, который он собирается получить, если это еще не сделано. Это занимает некоторое время, так как Transmisson также необходимо обновить все контрольные суммы для вновь выделенных сегментов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .