Hat man wenigstens auf 2 Rechnern Gentoo laufen und aktualisiert auf beiden regelmäßig den Portage, so ist es schon sinnvoll sich einen eigenen rsync Mirror zuzulegen.
Dazu sollte man sich zunächst überlegen welcher Rechner dazu als “rsync-Server” agieren soll bzw. ob man gleich die “Männermethode” wählt und einen lokalen 24/7-Gentoo-Server mit via NFS gesharetem Portage verwendet ;)
Einige Möglichkeiten seinen lokalen Portage anderen Rechnern im Netz zugänglich zu machen möchte ich im Folgenden vorstellen. Vorneweg: Die Einfachste – der rsync Mirror – ist in nicht mal 5 Minuten startklar gemacht!
Das lohnt sich schonmal fast immer.
Warum sollte man einen eigenen Rsync Mirror betreiben?
Nun, zum einen bringt jede Art von lokalem Mirror zunächst einmal einen Geschwindigkeitszuwachs für die Syncs der Clients und entlastet die eigene Leitung, was je nach verfügbarer Bandbreite schon ein wichtiges Argument sein kann.
Fast noch wichtiger ist aber das Einhalten der Portage Richtlinien (“you should not sync more than once a day”) und das Sparen von knapper Bandbreite auf Seiten der offiziellen Gentoo Mirrors.
Es sollte – mal abgesehen vom drohenden Ban – einfach zum guten Ton gehören die kostenlos (!) zur verfügung stehenden Ressourcen der Gentoo Community nicht über das nötige Maß hinaus zu belasten.
Wo immer möglich sollte man also nur einen Rechner gegen einen offiziellen Mirror syncen und dann den aktuellen Tree über das lokale Netzwerk an seine Clients verteilen – so profitieren alle von der sauberen Lösung.
Sämtliche verwendeten IPs und Hostnamen müssen natürlich ggf. an Ihre lokalen Gegebenheiten angepasst werden
Dieser Abschnitt beschäftigt sich damit wie man einen eigenen Rsync Mirror aufsetzt und vorhandene Client Rechner im lokalen LAN so konfiguriert, dass sie diesen nutzen.
Gegenüber dem einzelnen syncen eines jeden Rechners gegen die offiziellen Gentoo Mirror bietet diese Methode – je nach Anbindung – einen spürbaren Geschwindigkeitszuwachs.
1.1 Einfach und schnell – eigenen rsync Mirror aufsetzen
Server (Gentoo Linux)
-
Als erstes benötigen wir den rsncd. Dieser sollte zwar eigentlich auf jedem Gentoo System bereits installiert sein, aber der Vollständigkeit halber …
acer ~ # emerge -av net-misc/rsync ...
-
Folgender Abschnitt sollte dann in der rsyncd.conf schon vorhanden sein und muss nur auskommentiert werden:
acer ~ # cat /etc/rsyncd.conf ... # Simple example for enabling your own local rsync server [gentoo-portage] path = /usr/portage comment = Gentoo Portage tree exclude = /distfiles /packages ...
-
Bevor wir unseren Mirror nun starten ist es ggf. ratsam den Zugriff darauf aufs lokale Netz zu beschränken, indem man beispielweise noch folgende Zeilen hinzufügt:
acer ~ # cat /etc/rsyncd.conf ... hosts allow = 192.168.0.0/24 192.168.1.0/24 hosts deny = * ...
-
Zu guter Letzt noch den rsyncd neustartenund zum Startprofil hinzufügen, damit dieser bei jedem Neustart ausgeführt wird.
acer ~ # /etc/init.d/rsyncd restart * Starting rsyncd ... [ ok ] acer ~ # rc-update add rsyncd default * rsyncd added to runlevel default
Client (Gentoo Linux)
-
Um Portage gegen den lokalen rsync Mirror zu aktualisieren muss lediglich die ensprechende Variable in der /etc/make.conf angepasst werden:
acer ~ # cat /etc/rsyncd.conf ... SYNC="rsync://192.168.0.2/gentoo-portage" ...
1.2 Anmerkungen
-
Im Portage steht auch eigens ein Paket zum Betreiben eines offiziellen Mirrors bereit, das ein Skript zum syncen mit einigen Kommentaren und eine Beispielkonfiguration zur Verfügung stellt. Praktisch ist das vor allem, falls man plant einen Community Rsync zu betreiben. Ansonsten würde ich sagen: Kein must-have, aber wenns schonmal vorhanden ist kann mans ja auch nutzen…
* app-admin/gentoo-rsync-mirror Available versions: 1.0-r4 ~1.0-r5 Homepage: http://www.gentoo.org/doc/en/rsync.xml Description: Ebuild for setting up a Gentoo rsync mirror
-
Praktisch ist es außerdem auch noch eine eigene Message-of-the-Day hinzuzufügen, die bei jedem Syncvorgang einige Infos zum Server enthällt.
Dazu muss man lediglich das Messagefile in der rsyncd.conf angeben und mit dem gewünschten Text füllen.acer ~ # cat /etc/rsyncd.conf ... motd file = /etc/rsyncd.motd ...
Neustarten im Anschluss nicht vergessen ;)
1.3 Quellen
Der gemeinsame Zugriff auf einen über NFS geshareten Portage Tree spart in Ihrem lokalen Netz zusätzlich Rechenleistung auf den Clients und dem Server, da ein einzelnes Syncen auf dem Server den aktuellen Tree ohne weiteres Eingreifen sofort auch allen verbundenen Client Rechnern zur Verfügung stellt.
Allerdings werden fortan sämtliche Compiliervorgänge auch auf dem gesharetem Portage Verzeichnis ausgeführt. Das hat den Vorteil, das Paketquellen nur ein einziges mal ge-fetched werden müssen und dann alle Clients zur Verfügung stehen, was u.U. wiederum erheblichen Traffic nach außen spart.
Allerdings steigen die Anforderungen des Servers an Plattenplatz und Netzwerkanbindung dementsprechend auch etwas an.
Der Portage Tree alleine benötigt schonmal ca. 500MB. Dazu kommt dann noch Platz für die Paketquellen, was je nach installierter Software irgendwo zwischen 5 und 10GB anzusiedeln ist.
Für die Netzwerkanbindung reichen die Standard 100MBit für kleine bis mittlere Netze locker aus.
Sollten hier Engpässe auftreten können die Clients auch so konfiguriert werden, dass sie die Sourcen lediglich vom Server kopieren und dann lokal übersetzen. Somit ergibt sich durch die Netzwerkverbindung kein allzu wesentlicher Flaschenhals.
Auf allen beteiligten Rechnern muss der NFS-Support im Kernel aktiviert sein! Mehr dazu weiter unten bei den Anmerkungen.
2.1 “Männermethode” – shared Portage via NFS
Server (Gentoo Linux)
-
Zunächst sollte sichergestellt werden, dass der NFS Server auch installiert ist bzw. dieser ggf. installiert werden ;)
acer ~ # emerge -av net-fs/nfs-utils ...
Außerdem benötigen wir auch den Portmapper portmap:
acer ~ # emerge -av net-nds/portmap ...
-
Als nächstes tragen wir die nötigen Freigaben für unser lokales Netzwerk in die /etc/exports ein:
acer ~ # cat /etc/exports ... /usr/portage 192.168.0.0/24(async,ro,no_subtree_check,insecure,no_root_squash) /var/cache/edb 192.168.0.0/24(async,ro,no_subtree_check,insecure,no_root_squash) ...
und aktualisieren die Freigabeliste:
acer ~ # exportfs -rav exporting 192.168.0.0/24:/var/cache/edb exporting 192.168.0.0/24:/usr/portage
Sollten Sie zu einem späteren Zeitpunkt Freigaben zur /etc/exports hinzufügen oder bstehenden ändern können Sie mit diesem Kommando die Freigabeliste aktualisieren ohne den NFS Dienst neu starten zu müssen!
-
Zu guter Letzt starten wir noch den NFS Server samt Portmapper und tragen beides in das default Runlevel ein, so dass beide Dienste ab jetzt automatisch gestartet werden:
acer ~ # /etc/init.d/portmap start * Starting portmap ... [ ok ] acer ~ # rc-update add portmap default * portmap added to runlevel default acer ~ # /etc/init.d/nfs start * Mounting RPC pipefs ... [ ok ] * Starting idmapd ... [ ok ] * Starting NFS statd ... [ ok ] * Exporting NFS directories ... [ ok ] * Starting NFS daemon ... [ ok ] * Starting NFS mountd ... [ ok ] acer ~ # rc-update add nfs default * nfs added to runlevel default
Client (Gentoo Linux)
-
Auf Client-Seite sollte man zunächst die lokalen Verzeichnisse, welche ja später über NFS eingebunden werden sollen leeren, um den Speicherplatz nicht unnötig zu verschenken.
acer ~ # cd /usr/portage acer /usr/portage # rm -r * acer ~ # cd /var/cache/edb acer /var/cache/edb # rm -r *
-
Danach müssen noch Einträge in die /etc/fstab hinzugefügt werden:
acer ~ # cat /etc/fstab ... 192.168.0.1:/usr/portage /usr/portage nfs rw,intr,suid 192.168.0.1:/var/cache/edb /var/cache/edb nfs rw,intr,suid ...
Ab sofort werden die Laufwerke bei jedem Neustart automatisch eingebunden.
-
Den Neustart kann man sich auch sparen indem man die Laufwerke schnell manuell einhängt:
acer ~ # mount /usr/portage acer ~ # mount /var/cache/edb
-
Unter Umständen müssen aus Performancegründen noch einige Anpassungen der Konfiguration vorgenommen werden.
Bitte lesen Sie dazu etwas weiter unten auch die Anmerkungen.
2.2 Wenn schon, denn schon – shared eix Cache via NFS nutzen
// TODO
Server (Gentoo Linux)
Client (Gentoo Linux)
2.3 Anmerkungen
-
Um Support für NFS im Kernel aktivieren gehen Sie wie folgt vor:
acer ~ # cd /usr/src/linux acer /usr/src/linux # make menuconfig ...
Folgende Funktionen sind zu aktivieren, wobei die Client Rechner keine NFS Server Unterstützung benötigen ;)
File systems ---> Network File Systems --->
NFS file system support [ ] Provide NFSv3 client support [*] Provide NFSv4 client support (EXPERIMENTAL) [ ] Allow direct I/O on NFS files (EXPERIMENTAL) NFS server support [ ] Provide NFSv3 server support [*] Provide NFS server over TCP support Achtung! Das könnte Ihr System unbrauchbar machen!
Sie sollten nur forfahren falls Sie wissen was Sie tun!
Zu guter Letzt muss der neue Kernel dann übersetzt und installiert werden. Das übernimmt folgendes handliches Kommando:acer /usr/src/linux # make && make modules && make modules_install && mount /boot && make install && umount /boot ...
Hat alles geklappt sollte nach einem Reboot der neue Kernel mit NFS Server/Client Funktionen gebstartet werden.
-
Laut einigen Berichten kann es nötig sein auf dem Client ebenfalls den Portmapper portmap laufen zu lassen, da sonst sehr lange Pausen bei der Verbindung zum NFS Server entstehen.
Führen Sie dazu bitte die Installation des Portmappers wie im Server-Teil beschrieben auch auf den Clients aus. -
Möchten Sie – wie in der Einleitung beschrieben – die Clients anweisen alle Sourcen lediglich vom Server zu kopieren und einem lokalen Verzeichnis zu üersetzen, so benötigen Sie zunächst auf allen Clients ein eigenes distfiles-Verzeichnis mit ausreichend Speicherplatz (~2-3GB sollten genügen).
Außerdem muss in der /etc/make.conf die DISTDIR-Variable eingefügt bzw. angepasst werden.acer ~ # mkdir /usr/distfiles acer ~ # cat /etc/make.conf ... DISTDIR="/usr/distfiles" ...
2.4 Quellen
- http://de.gentoo-wiki.com/Portage_via_NFS
- http://www.bramschoenmakers.nl/node/318
- http://de.gentoo-wiki.com/Netzwerk_Verzeichnisse_mounten
- http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1
