Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[dokumentation:handbuch:linbo:torrent]] 

indexmenu_n_175

Torrent nutzen

Die für den Imagedownload per Torrent benötigten Software-Komponenten1) werden automatisch beim Aufsetzen des Servers installiert. So sind Sie in der Lage ihr System in vier Konfigurationsschritten auf den Torrentbetrieb umzustellen:

1. Interne Firewall anpassen

<note tip>Bei einem Upgrade von paedML/openML 4.0.x auf 5.0.x wurde diese Konfigurationsanpassung eventuell schon automatisch durchgeführt. Haben Sie linuxmuster.net 5.1.x oder neuer nativ installiert, muss die interne Firewall nicht mehr angepasst werden.</note>

Damit der BitTorrent-Tracker (Port 6969) und die Torrent-Downloadprozesse (ab Port 6881) für die Clients im LAN erreichbar sind, muss die interne Firewall des Servers entsprechend angepasst werden. Ähnlich wie bei Multicast wird für jedes Image ein separater Downloadprozess auf einem eigenen Port gestartet. Dafür muss ein bestimmter Portbereich freigeschaltet werden.

Stoppen Sie zunächst die interne Firewall:

# /etc/init.d/linuxmuster-base stop

Laden Sie die Konfigurationsdatei /etc/linuxmuster/allowed_ports in einen Editor Ihrer Wahl. Die Zeile tcp ergänzen Sie nun um den Portbereich für die Downloadprozesse (beginnen bei 6881) und den Tracker-Port 6969 (im Beispiel 6881:6969):

tcp domain,ldap,ldaps,ipp,auth,sunrpc,netbios-ssn,microsoft-ds,1095:1125,webcache,6881:6969

Danach starten Sie die interne Firewall wieder:

# /etc/init.d/linuxmuster-base start

2. Client-Konfiguration anpassen

Hier ist in den in Frage kommenden start.conf-Dateien nur der DownloadType zu ändern. Im globalen Bereich ändern Sie einfach den Eintrag DownloadType = torrent:

[LINBO]                  # globale Konfiguration
Cache = /dev/sda6        # lokale Cache Partition
Server = 10.16.1.1       # IP des TFTP-Servers, der Images vorhaelt
Group = fs               # Rechnergruppe
RootTimeout = 600        # automatischer Rootlogout nach 600 Sek.
AutoPartition = no       # automatische Partitionsreparatur beim LINBO-Start
AutoFormat = no          # automatisches Formatieren aller Partitionen beim LINBO-Start
AutoInitCache = no       # automatisches Befüllen des Caches beim LINBO-Start
DownloadType = torrent   # Image-Download per torrent|multicast|rsync, default ist rsync

In der Schulkonsole finden Sie die entsprechende Einstellungsmöglichkeit als Administrator im LINBO-Menü unter Gruppenkonfiguration editieren. Wählen Sie die Gruppe aus und stellen Sie im Bereich [LINBO] - globale Konfiguration unter Downloadtype auswählen: die Option torrent ein:

Abbildung Schulkonsole: LINBO-DownloadType einstellen

Schulkonsole: LINBO-DownloadType einstellen

3. BitTorrent-Tracker-Dienst bereitstellen

Um Torrent nutzen zu können, muss der Tracker-Dienst bereitgestellt werden, damit über ihn die Clients ihre Imagedownloads anbieten können. Dazu muss in der Tracker-Konfigurationsdatei /etc/default/bittorrent der Wert für START_BTTRACK auf 1 gesetzt werden, sodass der Dienst beim Hochfahren des Servers automatisch gestartet wird:

# If you want the bittorrent tracker to run, switch this to 1.
# If you change this, you will probably want to change
# ALLOWED_DIR as well, or anyone will be able to track anything
# just by pointing the .torrent at your server.
START_BTTRACK=1

Anschließend startet man den Dienst mit dem Befehl

# /etc/init.d/bittorrent start

was dieser mit der Ausgabe

Starting BitTorrent tracker: bttrack.bittorrent.

quittiert. Nun können Torrent-Clients über die Tracker-URL http://10.16.1.1:6969/announce2) ihre Dienste anbieten beziehungsweise die Dienste anderer Torrent-Clients in Anspruch nehmen.

Außerdem kann jetzt über die URL http://10.16.1.1:69693) die Download-Statistik des Trackers abgerufen werden:

Abbildung: Torrent-Statistik

Torrent-Statistik

4. Imagedownloads per Torrent bereitstellen

Zunächst muss der Server selbst Images zum Download bereitstellen, damit der Image-Rollout auch funktioniert wenn kein Client als zusätzlicher Torrentanbieter im LAN verfügbar ist. LINBO verwendet dafür das im bittorrent-Paket enthaltene Python-Skript btdownloadcurses, das serverseitig im Init-Skript /etc/init.d/linbo-bittorrent für jedes aktive Image einen Screenprozess4) startet. Um das Skript zu aktivieren, müssen Sie einmalig in der Konfigurationsdatei /etc/default/linbo-bittorrent den Wert von START_BITTORRENT von 0 auf 1 ändern:

# start the LINBO bittorrent server (0 | 1)?
# to enable set this to "1"
START_BITTORRENT=1

In dieser Datei können Sie entsprechend den Gegebenheiten Ihres Netzwerks weitere Parameter anpassen. Zum Beispiel wird mit dem Parameter MAX_UPLOAD_RATE die Upload-Bandbreite in kb/s festgelegt, die jeder Client zur Verfügung stellt. Als Standard wird die maximal verfügbare Bandbreite genutzt (Wert 0).

Nachdem Sie alle notwendigen Anpassungen durchgeführt haben, starten Sie den LINBO-BitTorrent-Dienst mit dem Befehl:

/etc/init.d/linbo-bittorrent start

Beim ersten Start werden für alle unter /var/linbo vorhandenen Images, die

  • in start.conf-Dateien definiert und
  • aktiven Rechnergruppen zugeordnet sind

.torrent-Dateien erzeugt:

Creating /var/linbo/winxp-fs.cloop.torrent ...
10.3% complete

Das kann ein Paar Minuten dauern. Schließlich wird für jedes Images ein Dienst gestartet:

15:35/0 server ~ # /etc/init.d/linbo-bittorrent start
Creating /var/linbo/hardy-fs.cloop.torrent ...
Starting BitTorrent service for: hardy-fs.cloop.
Creating /var/linbo/winxp-fs.cloop.torrent ...
Starting BitTorrent service for: winxp-fs.cloop.

Werden neue Images erstellt und hochgeladen, wird der Dienst neu gestartet, sodass man sich nach dem ersten Start darum nicht mehr kümmern muss.

Torrent-Prozesse überwachen und steuern

Zur Überwachung und Steuerung der Torrent-Prozesse stehen folgende weitere Befehlsparameter des Initskripts zur Verfügung:

  • Prozesse für alle Images neu starten:
    # /etc/init.d/linbo-bittorrent restart
  • Prozess für ein bestimmtes Image neu starten:
    # /etc/init.d/linbo-bittorrent restart image.cloop
  • Prozesse für alle Images neu starten und Neuerstellung der .torrent-Dateien erzwingen:
    # /etc/init.d/linbo-bittorrent restart all force
  • Prozess für ein bestimmtes Image neu starten und Neuerstellung der .torrent-Datei erzwingen:
    # /etc/init.d/linbo-bittorrent restart image.cloop force
  • Übersicht aller Torrent-Prozesse ausgeben:
    # /etc/init.d/linbo-bittorrent status
    1    6341    hardy-fs.cloop.torrent    (Detached)
    2    6373    winxp-fs.cloop.torrent    (Detached)
  • In der zweiten Spalte wird die Prozess-ID angezeigt, in der Dritten der Prozessname.
  • Informationen zu einem bestimmten Torrent-Prozess ausgeben:

Mit dem Befehl

    # screen -r <Prozessname>

also zum Beispiel

    # screen -r winxp-fs.cloop.torrent

holt man sich die aktuelle Screenausgabe des Prozesses in den Vordergrund und erhält so einige statistische Angaben und auch gegebenenfalls Informationen zu Fehlern:

     --------------------------------------------------------------------------------
    | file:     winxp-fs.cloop                                                       |
    | size:     3,175,308,016 (3.0  G)                                               |
    | dest:     /var/linbo/winxp-fs.cloop                                            |
    | progress: #################################################################### |
    | status:   download succeeded!                                                  |
    | speed:      0    B/s down -   0    B/s up                                      |
    | totals:     0.0  M   down -   0.0  M   up                                      |
    | error(s):                                                                      |

Mit der Tastenkombination STRG+A+D schickt man den Screen wieder in den Hintergrund.

Der Client als Server: Vorteile des Torrent-Protokolls

Während der Synchronisationsphase dient der Client als Downloadserver für die Images (cloop und rsync gleichzeitig), die er aktuell synchronisiert. Dies wirkt sich vor allem aus, wenn große Images verteilt werden müssen. Der Server wird entlastet, da die Downloadlast auf mehrere „Schultern“ verteilt wird und der Durchsatz, der bei den herunterladenden Clients ankommt, steigt während dieser Phase signifikant.

Startet man einen Client mit aktivierter AutoInitCache-Option5), aktualisiert er gegebenenfalls zunächst alle in seiner start.conf definierten Images und bietet sie dann so lange zum Download an bis auf ihm entweder ein Betriebssystem gestartet oder er heruntergefahren oder neu gestartet wird. So kommt man auf einfache Weise zu einem oder mehreren zusätzlichen Image-Servern, die den Hauptserver entlasten.

search?q=..%3Anavmenu%26nofooter%26noindent&amp;btnI=lucky

1)
Es wird die Software BitTorrent mit Abhängigkeiten installiert. Dabei werden LINBO spezifische Anpassungen vorgenommen:
  • Der Benutzer bittorrent mit Gruppe nogroup wird eingerichtet. Unter dieser Benutzerkennung läuft später der Tracker-Dienst.
  • Die Logrotate-Konfigurations-Datei /etc/logrotate.d/bittorrent wird bereitgestellt.
  • In der Tracker-Konfigurationsdatei /etc/default/bittorrent werden für LINBO sinnvolle Default-Werte gesetzt:
    • REANNOUNCE_INTERVAL=15 - Nach soviel Sekunden bieten die Clients dem Tracker ihren Dienst an. Niedriger Wert, damit Clients möglichst schnell als Download-Anbieter registriert werden.
    • DAEMONUSER=bittorrent - Unter dieser Benutzerkennung läuft der Dienst.
    • ALLOWED_DIR=/var/linbo - Nur im LINBO-Verzeichnis wird nach Torrent-Dateien gesucht.
  • Die Konfigurationsdatei /etc/default/linbo-bittorrent mit Standardwerten für den LINBO-BitTorrent-Dienst wird bereitgestellt:
    # default start values for LINBO bittorrent server

    # start the LINBO bittorrent server (0 | 1)?
    # to enable set this to "1"
    START_BITTORRENT=0

    # where the linbo stuff is located
    LINBODIR=/var/linbo

    # path to file with workstation data
    WIMPORTDATA=/etc/linuxmuster/workstations

    # set portnum as the minimum port to listen on,
    # counts up if unavailable (default 6881)
    MINPORT=6881

    # only allow num uploads at once per image (default 4)
    MAX_UPLOADS=4

    # maximum rate to upload at in kilobytes per image,
    # 0 means no limit (default 0)
    MAX_UPLOAD_RATE=0

    # request more peers every secs seconds (default 300)
    REREQUEST_INTERVAL=60

    # do not rerequest if we have num peers already (default 20)
    MIN_PEERS=20

    # stop initiating new connections when we have num peers (default 40)
    MAX_INITIATE=40

    # pause secs seconds between sending keepalives (default 120)
    KEEPALIVE_INTERVAL=120

    # query for bytes bytes per request (default 32768)
    DOWNLOAD_SLICE_SIZE=131072

    # keep num requests in a single pipe at once (default 5)
    REQUEST_BACKLOG=5

    # set bytes to the maximum length prefix encoding you’ll accept over the wire -
    # larger  values get the connection dropped (default 8388608)
    MAX_MESSAGE_LENGTH=8388608

    # wait secs before closing sockets which nothing has been received on (default 300)
    TIMEOUT=300

    # check whether connections have timed out every secs seconds (default 60)
    TIMEOUT_CHECK_INTERVAL=60

    # set  secs  to  the  maximum  amount  of  time  to guess the current rate
    # estimate represents (default 20)
    MAX_RATE_PERIOD=20

    # set the time equivalent of writing to kernel-level TCP buffer to secs (default 5)
    UPLOAD_RATE_FUDGE=5

    # update displayed information every secs seconds (default 0.1)
    DISPLAY_INTERVAL=1

    # requests from peers larger than bytes bytes are ignored (default 131072)
    MAX_SLICE_LENGTH=131072
2) , 3)
Die IP-Adresse durch die Ihres Servers ersetzen
 [[dokumentation:handbuch:linbo:torrent]] dokumentation/handbuch/linbo/torrent.txt · Zuletzt geändert: 2015/06/07 16:17 (Externe Bearbeitung)