Как стать автором
Обновить

Комментарии 19

Мы можем стереть часть и раздавать дальше
того чего у нас нет?
Само по себе описанное — интересно. Но каково практическое применение?
Приходит на ум только на крутка раздач или доступности файла, но на трекерах счетчики остались для красоты, и былой функционал не выполняют.
Наоборот, теперь ценится наличие всех частей файла для резкого контента.
того чего у нас нет?
Остальная часть данных(не стёртая) будет раздаваться дальше.

Но каково практическое применение?

Поддержание раздачи. Естественно это нельзя делать создателю раздачи. На раздаче обязательно должны быть полные источники. В дополнение к ним частичные источники. За счёт большего количества источников будет больше скорость загрузки.


Такой метод поддержания раздачи становится более актуальном при росте размера раздач и ограниченном месте на диске.


Например BDRip может занимать до 25гигабайт при этом 20 из них это один цельный файл. Это проблема когда SSD всего на 60ГБ.


Так мы можем высвободить пару гигов и раздавать дальше.

Главное потом не забыть, что файл-то у тебя с дыркой, когда затеешь его использовать :) По мне, в этом случае правильно именно перепроверить файл/торрент, поставить состояние do not download и раздавать оставшиеся данные. Тогда твой клиент будет честно рапортовать, что у него есть 31% файла вместо ста процентов, и с тебя не будут тянуть неверные нули в сеть, забивая полосу и потом сбрасывая как ненадежный источник.

В пример использования скрипта с qBittorent я так и предлагаю делать. Прореженные раздачи переносятся в папку в которой будет понятно что это не полные файлы.

С ходу вопрос: а торрент-клиент отследит, что вы так поступили с файлом? Или с точки зрения трекера вы останетесь seed-ом, и только когда у вас попросят фрагмент файла — дадите отлуп ("ну нет его у меня!") или, того хуже, перешлёте другому клиенту пачку нулей, от которой он посчитает хэш, отбросит и начнёт качать заново из другого источника?

Упс, перечитал пост, увидел ответ на свой вопрос. Т.е. только руками, только хардкор… Нет, такой хоккей нам не нужен. Лучше стереть одну из раздач целиком (посмотрев, по какой есть больше сидов).

Ну я надеюсь что после моего поста программисты клиентов осознают нужность данной фишки и реализуют интерфейс на пару кликов в клиенте.


Ещё можно доработать скрипт. Научить его автоматически работать с клиентом. В статье Proof of concept.

А после проблемность этого подхода осознают админы трекеров, и будут банить.
Потому, что если на раздаче уже не сильно популярного файла будет 2 десятка с фрагментами, полный файл уже не скачать.

И решить эту проблему можно будет только дополнительным протоколом между сидами, которые будут договариваться, какие части «нулить», что б при этом файл все еще можно было скачать.

PS: Что-то подобное я где-то уже встречал. Вот только где?

Можно не договариваться. Клиент видит доступность частей в рое и может стирать только самые распространённые части.

Нельзя, потому, что то что сейчас самое распространенное может пустовать уже через несколько часов. Потому, что это не сервера, а пользовательские устройства которые в любой момент могут выключить.
Простой пример время 10-18 доступность одна — много рабочих машин, закончилась работа, тысячи машин выключены и фрагменты недоступны.

Тут выбор между полностью уйти с раздачи удалив торрент или остаться на ней не полным источником. С этой точки зрения уход других источников не имеет значения. Поддерживаем как можем.


Есть другая проблема. Рой поддельных пиров при строгом алгоритме может заставить остальных проредить одни и теже части. Поэтому прореживание должно быть с примесью рандома.

Именно поэтому, я написал выше, что нужен отдельный протокол, что б рой недосидов, точно определился, чем кто и что удалит. И при этом учтет свой среднестатистический онлайн.
А не просто глянет чего больше и удалит у себя.

Так поддельные пиры тоже будут участвовать в этом и смогут стереть всё. Нельзя доверять никому. Рандом наше всё))

это всё относительно не сложно решаемо. Был бы в этом смысл.
Мы уже пришли к разработке протокола? :)

Я не против. Разрабатывайте.


С моей стороны единственное что можно добавить в протоколе BitTorrent это сообщение lost которое будет сообщать что у пира больше нет этого куска или участка. Тогда не прийдётся переподключаться после перепроверки.


Можно сделать отложенное стирание. Клиент помечает выбранные куски как удалённые и наблюдает некоторое время за роем. Если выбранные куски не стали редкими то стирает их окончательно. Иначе выбирает другие заместо редких и повторяет процедуру для них.

Есть такая штука, PAR2, думаю, как раз для таких случаев подойдёт, когда не хватает небольшого кусочка. Если сами куски стирать случайно у всех клиентов, то вероятность полного отсутствия фрагмента будет невелика, и её можно будет скомпенсировать этой информацией для восстановления.

  1. В qBittorent переключаемся на вкладку содержимое
    Скриншот qBittorent. Вкладка содержимое. Стоит галочка рядом с файлом
  2. И снимаем галочку рядом с файлом чтобы он после проверки не начал загружаться заново
    Скриншот qBittorent. Вкладка содержимое. Галочка рядом с файлом снята
  3. Правой кнопкой мыши на раздаче вызываем контекстное меню и нажимаем пункт "Проверить принудительно"
    Скриншот qBittorent. Открыто контекстное меню. Выбран пункт Проверить принудительно
    ...
  4. Таким образом мы остались на раздаче и высвободили немного места на диске
    Скриншот qBittorent. Показана отсутствующая часть раздачи. Статус раздачи Раздаётся

Пришлось убрать спойлер.

Как мне кажется, поддержка раздач слабо сочетается с недостатком места на диске. Обычно под это дело имеется отдельный емкий винчестер.
Пример с фильмом не влезающим на ssd тоже выглядит неудачным. Если я хочу смотреть кино при недостатке места, я выберу стриминг. И клиент будет просто подтирать старые блоки при последовательной загрузке по мере просмотра. Точно также оставаясь на раздаче пока я смотрю. Для лучшей «поддержки» раздачи в таком случае достаточно увеличить размер буферизации поближе к свободному пространству, и бонусом — не требуется ручного шаманства с командами.
Еще наверно следует упомянуть что при недостатке места на ssd это плохо сказывается на его здоровье из-за ограниченого маневра для wear leveling, и использовать его в таких режимах не рекомендуется.

А стриминг уже есть в обычных клиентах? Я тоже думал и о таком варианте. Можно включить последовательное скачивание и по таймеру вызывать sparse на просмотренной части. Только опять же надо стирать хвост не полностью а пропуская некоторые части.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории