Как ускорить загрузку игр с помощью LanCache

Всем привет!!!

Я начал этот год с открытия Lancache. Это программный комплекс для кеширования игр и не только для повторного быстро скачивания и установки на ПК или приставке.

Канал Телеграм Канал Дзенс Группа ВКонтакте Канал YouTube Канал Rutube

Введение

Lancache – это разработанный сообществом бесплатный инструмент для локального кэширования игр и не только. Он позволят бесшовно кешировать трафик медленного интернета, а при повторном его скачивание выдает на максимальной скорости из кеша. Это позволяет обновлять тысячи ПК и игр на них во много раз быстрее. Особенно Lancache хорошо подходит для игровых клубов или домашних сетей с двумя и более ПК. Но если у вас один компьютер или приставка и вы часто переустанавливаете игры, то Lancache ускорит и в этом случаи скачивание игр.

Lancache поддерживает любые игры, которая использует HTTP для загрузки:

Неполный список тут

  • Steam (Valve)
  • Origin (EA Games)
  • Riot Games (League of Legends)
  • Battle.net (Hearthstone, Starcraft 2, Overwatch)
  • Frontier Launchpad (Elite Dangerous, Planet Coaster)
  • Uplay (Ubisoft)
  • Sony Playstation
  • Xboxlive
  • Rockstar games
  • Windows Updates

Примерная схема организации Lancache выглядит так: Доступ в интернет через небольшой узкий канал, например 100М. ПК пользователей подключены к коммутатору через 1Г каналы. Сервер с Lancache подключен к локальной сети 1Г или 2,5Г или лучше всего 10Г каналом, что бы все получали максимальную скорость загрузки контента. Конечно для 2- или 3х ПК хватит и 1Г или 2,5Г канала у Lancache, поэтому нужно быть реалистом и выбирать оборудование по вашим запросам.

Сам кеш лучше всего расположить на отдельных SSD накопителях в RAID0. Так как при отдачи из кеша требуется огромные ресурсы рандомно IOPS, а не линейное чтение. Жесткие диски просто не смогут выдать нужный результат. Например RAID0 из трех HDD смог выдать только до 500Мб\с скорость отдачи кеша. RAID0 из двух SSD Samsung 870 EVO смог выдать уже 3,5Гб\с отдачи из кеша. Поэтому помимо выбора дисков по объему вам еще нужно учитывать рандомную скорость чтения мелких файлов с дисков кеша. Делать такой массив кеша отказоустойчивым нет особого смысла, так как это не важные данные, а всего лишь кеш, которой без проблем можно скачать заново.

Подготовка Proxmox

Я буду устанавливать Lancache в Proxmox на LXC контейнер и подключу к нему для хранения кеша два SSD Samsung 870 EVO объемом по 500 гигабайт в RAID0. Вообще установить можно куда угодно где есть Docker и где свободные порты 80, 443 и 53. Так как эти порты обязательно нужны для работы Lancache.

Буду считать, что Proxmox у вас уже установлен, диски SSD подключены и начнем.

Для начала очистим диски, что бы на них ничего не было.

Так как Proxmox из web интерфейса не умеет создавать RAID0, то сделать это нужно из командной строки так и естественно подставлять имена дисков нужно как это сделано у вас:

zpool create -f -o ashift=12 SSD0 /dev/sdg /dev/sdi

После этого пул RAID0 из дисков появится в web интерфейсе proxmox

Затем переходим в центр обработки данных и в хранилище создаем ZFS где в будущем и будет лежать файлы lancache

Затем переходим в local и скачиваем шаблон ubuntu 22.04 актуальный на момент написания статьи.

Теперь задача создать контейнер LXC в proxmox для Lancache

Придумываем имя контейнера, а затем пароль root пользователя

Выбираем нужный шаблон

Корень контейнера я расположу в основном хранилище. Это не обязательно, можно весь контейнер расположить на пуле SSD0, но я решил так будет лучше в будущем. Если диски SSD выйдут из строя, будет проще их заменить, без потери настроек контейнера. Да и резервную копию кеша делать не нужно, достаточно корневого каталога.

Затем добавляем диск, выбираем хранилище наш SSD0, размер можно выбрать до 80% от объема хранилища. Так как при заполнении SSD под завязку они будут работать медленно, а медленный кеш это плохо. А вот точку монтирования указываем /mnt/lancache и жмем далее

Процессора тоже не жалеем, чем больше тем лучше.

Памяти можно для начала выделить 4 гигабайта, но потом ее можно увеличить.

Сеть лучше выбрать статически не из диапазона DHCP сервера.

Укажите хотя бы один DNS сервер, если используете статические адреса.

На заключительном этапе все проверьте и жмите готово

Контейнер LXC в Proxmox для Lancache создан

Установка Lancache

Lancache можно установить на любой виртуальной машине по инструкции ниже. Подойдет ESXI или Synology VVM. Так же можно установить напрямую на Ubuntu Linux. В общем инструкция ниже универсальная.

Первым делом нужно обновить контейнер до актуальной базы ПО. Для этого вводим такие команды:

apt update
apt upgrade 
reboot

После перезагрузки устанавливаем необходимые компоненты

apt install git docker-compose unzip curl jq 

Устанавливаем правильный часовой пояс

dpkg-reconfigure tzdata

Переходим в каталог /opt и скачиваем с github наш lancache

cd /opt
git clone https://github.com/lancachenet/docker-compose/ lancache
cd lancache

Теперь нужно отредактировать файл .env

nano .env
  • 1 и 2 – укажите IP адрес этого контейнера
  • 3 – укажите адрес быстрого DNS
  • 4 – укажите папку с кешем
  • 5 – укажите размер папки с кешем. Можно на 1-10Г меньше от максимума
  • 6 – укажите ваш часовой пояс. Его можно узнать тут
  • Остальные параметры по вашему усмотрению

Что бы сохранить изменения в nano нажмите CTRL+x затем y и затем интер

Теперь настало время создать и запустить контейнер с Lancache такой командой

docker-compose up -d

Готово, lancache создан и готов к работе

В будущем, что бы Lancache стартовал автоматически вместе с контейнером LXC в Proxmox нужно запустить скрипт enable_autostart.sh

На этом установка и настройка Lancache в контейнере Proxmox завершена. Он готов к работе.

Полезные команды Lancache

  • docker container ls -a – Эта команда показывает все контейнеры докера (включая остановленные)
  • docker status – Эта команда показывает активный статус докера
  • docker-compose up -d – Эта команда создаст контейнер(ы) для докера для LanCache и начнет его запуск.
  • docker-compose down – Эта команда остановит все запущенные контейнеры docker
  • docker-compose down && docker-compose up -d – Эта команда останавливает все запущенные контейнеры docker и перезапускает их после этого.
  • ip -a – Эта команда показывает всю IP-информацию для вашего кэш-сервера

Настройка Windows

Настроить Windows, как и любую другую ОС, для работы с Lancache очень легко. для этого нужно просто в настройках указать DNS сервер IP адрес нашего Lancache LXC контейнера

В моем случаи это 192.168.68.31

Для проверки, что все работает в PowerShell введите такую команду

nslookup steam.cache.lancache.net

Если в ответ увидите IP адрес контейнера LXC с Lancache, то все сделано верно и уже все работает.

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

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

Первое скачивание выглядело так и скорость была в пределах 100М

Вторая загрузка этой же игры уже была в 4 раза быстрее и сдерживало дальнейшие нарастание скорости только слабы HDD диск, на который я устанавливал игру.

Я подключил SSD диск и в третий раз скачал игру. Скорости стали еще быстрее, но в этот раз затык был в процессоре, который просто не поспевал за скаченными данными. Проц у меня на виртуальной машине слабый, celeron 4 ядра.

Согласитесь, что скорости выросли более чем в 5 раз и это далеко не предел. Многое еще зависит от самой игры, как это бы странно не звучало. Какие-то игры будут качаться быстрее ,а какие-то медленнее. Причем скорость может меняться даже так, что в начале скачивания она медленная, а в конце быстрая.

Полезные команды Windows

  • ipconfig /flushdns – Эта команда очистит все локально хранящиеся IP-адреса и другие DNS-записи с вашего устройства.
  • ipconfig /renew – Эта команда обновит настройки IP-адреса и DNS, назначенные DHCP, с DHCP-сервера
  • nslookup steam.cache.lancache.net – Эта команда попытается найти IP-адрес URL-адреса steam.cache.lancache.net и должна вернуть IP-адрес вашего сервера LanCache. Это проверит, правильно ли работает DNS
  • nslookup lancache.steamcontent.com – Эта команда попытается найти IP-адрес URL-адреса lancache.steamcontent.com и должна вернуть IP-адрес вашего сервера LanCache. Это проверит, правильно ли работает DNS
  • ping <ip_address> – Эта команда может быть использована для того, чтобы узнать, может ли ваше устройство достичь определенного IP-адреса, например, IP-адреса вашего кэш-сервера.
  • ipconfig /all – Эта команда отобрает информацию о сетевом адаптере вашего устройства, включая DNS-сервер(ы)
  • Test-NetConnection <lancache_ip> -port <port> – Эта команда проверяет соединение указанных портов (Lancache работает на портах 80 и 443) с вашим lancache

Lancache Prefill

Автоматически заполняет Lanche играми, так что последующие загрузки того же контента будут обслуживаться из Lancache, улучшая скорость и снижая нагрузку на ваше интернет-соединение.

Это нужно в первую очередь для игровых клубов, когда нужно быстро закачать в Lancache обновление игры и затем уже из кеша раздать его всем ПК.

Готовые сборки есть на Windows, Linux, MacOS, Arm64, Docker, Unraid. Prefill не скачивает игру вам на диск, он только эмулирует скачивание и в результате она попадает в кеш Lancache. Это так же помогает не изнашивать ваш ssd диск при запуске prefill. Например, Prefill можно установить батником на ПК администратора, который будет по необходимости запускать его и тем самым вовремя подкачивать обновления в кеш, а так же можно запускать в LXC контейнере рядом с Lancache. Это уже кому как удобно.

Существует три вида Lancache Prefill

Я буду показывать на примере Steam prefill, но по аналогии другие будут выглядеть точно так же

Перейдем в папку opt и в ней создадим каталок SteamPrefill

cd /opt
mkdir SteamPrefill
cd SteamPrefill/

Скачаем скрипт обновления SteamPrefill

curl -o update.sh --location "https://raw.githubusercontent.com/tpill90/steam-lancache-prefill/master/scripts/update.sh"
chmod +x update.sh
./update.sh
chmod +x ./SteamPrefill

Для начала нужно подключить SteamPrefill к аккаунту Steam, ввести логин и пароль + проверка Steam Guard и выбрать приложения для предварительного скачивания

Скрипт SteamPrefill поддерживает Steam Guard

./SteamPrefill select-apps

Для повторного запуска достаточно ввести такую команду:

./SteamPrefill prefill

Если выйдут ошибки, то можно почистить кеш Prefill, не кеш Lancache и повторить команду выше

./SteamPrefill clear-cache

Prefill так же поддерживает benchmark для этого нужно ввести такие команды:

./SteamPrefill benchmark setup --use-selected
./SteamPrefill benchmark run

Прошу не обращайте внимание на скорости. Я отключил быстрые диски и делал скриншот на Synology iSCSI LUN RAID5 + SSD кеш. Это все что он смог выдать. В видео ролике скорости 3,5Гб\с

А этот тест был запущен в виртуальной машине на Synology NAS с конфигурацией дисков RAID5+SSD кеш

Можно добавить в планировщик команду для проверки обновлений кеша в lancache с помощью prefill и запускать каждые 5 минут или 10 или раз в час. Пример каждые 5 минут ниже:

*/5 * * * * cd /opt/SteamPrefill && ./SteamPrefill clear-cache -y && ./SteamPrefill prefill --no-ansi

Итог

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

Конечно для игрового клуба нужны серьезные SSD диски, пусть даже дешевые и китайские, но для дома подойдут вообще любые. Просто чем они будут быстрее, тем быстрее кеш будет отдавать данные. Да же обычный HDD в RAID0 способен отдать около 500Мб\с.

Да же если у вас один ПК или одна приставка, но например мало места для игр, то с использованием Lancache вы можете очень быстро переустанавливать игры не тратя на это много часов времени. Играйте в те игры, которые хотите играть сейчас.

Видео ролик

Канал Телеграм Канал Дзенс Группа ВКонтакте Канал YouTube Канал Rutube

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии