Posts mit dem Label Banana Pi werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Banana Pi werden angezeigt. Alle Posts anzeigen

Samstag, 9. April 2016

Vinculum II

Es ist Zeit, mal den Aufbau meines Servers zu zeigen. Ich habe ihn vor ein paar Tagen mal wieder abgeschaltet und aufgemacht, vor allem um die Kabel etwas ordentlicher zu verlegen und ein XBee-Funkmodul anzuschließen. Dabei habe ich dann auch einige Fotos gemacht, so das ich jetzt hier ein bisschen was zeigen kann.
Hier sieht man das Herz des Servers, den Banana Pi. Links befinden sich die beiden USB-Ports und der Netzwerkanschluß, rechts sieht man die SD-Karte auf der sich das Betriebssystem befindet. Das war vorher eine 4 GB Karte, die eigentlich auch ausreicht. Nur habe ich inzwischen viele zusätzliche Funktionen eingebaut, es kommen auch immer wieder Updates, und so waren nur noch rund 800 MB frei. Das hätte noch lange ausgereicht. Jetzt gab es aber hier bei einem örtlichen Elektronikhändler eine 32 GB Karte für gerade mal 10 Euro im Angebot, und die war auch noch deutlich schneller als die ursprüngliche. Da habe ich natürlich sofort zugeschlagen und habe jetzt wieder reichlich Reserve.
Ganz vorne im Bild sieht man ein buntes Kabel, das ist eine der drei seriellen Schnittstellen des Banana, an die ich das XBee-Modul angeschloßen habe. Praktischerweise sind hier die beiden Datenleitungen, eine 3,3V und eine Masseleitung direkt nebeneinander, so das ich das Modul komplett mit diesem einen Kabel betreiben kann. Hinten sieht man noch das weiße µUSB-Kabel, das nur zur Stromversorgung dient, und daneben das rote SATA-Kabel. Darüber hinaus hat der Banana noch einen HDMI, einen Composite Videoausgang und einen Soundausgang, die ich aber nich verwende. Vielleicht werde ich irgendwann noch einen Lautsprecher einbauen für Fehler- und Statusmeldungen, aber das ist eine andere Geschichte.
Ganz rechts oberhalb der SD-Karte sieht man noch einen µUSB-Port, das ist auch nochmal ein vollwertiger USB2.0-Port den ich später nutzen könnte, wenn ich ihn denn brauche.

Und hier seht ihr den Server im Überblick. auf den ersten Blick wirkt das sehr chaotisch, vor allem wegen der Kabel. Links unten ist die ganze Stromverkabelung. Ich habe hier eine ATX-Buchse aus einem alten Netzwerk verwendet, und daran alle Kabel angelötet die ich so brauche. Einige Spannungen habe ich auf eine Schraubklemme geführt, das macht es etwas einfacher das System zu erweitern. Das grüne was man unten sieht, ist ein 8-Port Netzwerk Switch, und darüber sieht man einen der beiden USB2.0-Hubs. Dieser ist mit vier Festplatten bereits voll belegt, der zweite rechts unten steht für die nächsten Platten zur Verfügung. Es wäre vermutlich effizienter die Platten auf beide Hubs zu verteilen, aber ich bin mir nicht ganz sicher ob das nicht mein LVM-Setup durcheinander bringen würde. Doch dazu später mehr. Unten rechts sind auch zwei 3,5"-Festplatten montiert, jeweils 1 TB. Beide habe ich als USB-Festplatten gekauft und dann aus dem jeweiligen Gehäuse ausgebaut. Das war billiger als die Platten und USB-Adapter einzeln zu kaufen. Die Stromversorgung kommt dabei jeweil direkt aus dem ATX-Netzteil oben links. 
Und hier ein Blick in den oberen Laufwerkskäfig. Man sieht unten die 3,5" SATA-Platte mit 2TB, darüber sind zwei Montagerahmen eingebaut die jeweils vier 2,5"-Laufwerke aufnehmen können. Zwei Stück mit jeweils 1TB sind bereits vorhanden. In Einzelhandels-Byte sind somit 6TB verbaut, allerdings bleiben davon nach der Umrechnung nur noch etwa 950 Gigabyte bei den 1TB Platten und 1900 Gigabyte bei der 2TB Platte übrig, also zusammen ca. 5722 Gigabyte. Ein bisschen ist für das System selbst reserviert (gemountet als /var) und ein bisschen geht noch für das Dateisystem drauf, so das am Ende 5,35 "echte" TB als Netzlaufwerk zur Verfügung stehen.
Ich habe hier noch 6 Monatgeplätze für weitere Festplatten frei, und im Laufe der Zeit werde ich die auch sicher bestücken. Allerdings ist das immer eine Geldfrage, auf so eine Platte muß ich schon eine Weile sparen. Außerdem will ich auch den Netzwerk-Switch durch einen mit Gigabit-Ethernet ersetzen, damit ich den Banana wirklich mal ausreizen kann. Im Moment wird die Leistung eigentlich nur durch das 100MBit-Netzwerk begrenzt. Ich erreiche mit diesem System sowohl beim Lesen als auch beim Schreiben konstant 11-12 MB/s, also wirklich das Maximum was das Netzwerk hergeben kann. 
Hier rechts nochmal der Server im endgültigen Zustand mit der FritzBox oben drauf. Vom unteren USB-Hub habe ich ein Kabel nach außen gelegt, das ist aber im Moment nicht belegt. Ich möchte einfach die Möglichkeit haben eine externe Festplatte anzuschließen, falls mal ein Freund etwas größeres kopieren möchte. Das geht über WLAN nur sehr langsam, und extra Kabel legen ist mir zu nervig.
Das aufgerollte Netzwerkkabel links unten verbindet die FritzBox mit dem Switch, ich habe nur die überschüssige Länge im Gehäuse versteckt, damit es von außen etwas ordentlicher wirkt. Und wenn man genau hin schaut, sieht man oben rechts das kleine XBee-Funkmodul. Darüber werde ich irgendwann noch einen eigenen Post schreiben.

Hier noch die Front- und Rückansicht. Vorne habe ich zwei Lüfter angebracht, vor allem um die Festplatten zu kühlen. Die erreichen vor allem im Sommer schon recht bedenkliche Temperaturen. Hinten sieht man die beiden Netzwerkkabel rot ist der Server und weiß die Fritzbox. Und hier sieht man auch nochmal das Funkmodul, das ich einfach mit Panzertape am Gehäuse befestigt habe. Simpel aber effektiv. Man sieht auch das ich (fast) sämtliche Öffnungen des Gehäuses mit Paketband abgeklebt habe. Dadurch will ich einen kontrollierten Luftstrom sicherstellen. Die beiden Lüfter in der Front versorgen die Festplatten mit Frischluft, und das Netzteil hinten zieht die Luft wieder aus dem Gehäuse. Der Banana ist dabei so Montiert, das sein Kühlhörper direkt im Luftstrom des Netzteils liegt.
So, das wars vorerst mal. Aber es kommt sicher irgendwann noch mehr dazu.

Freitag, 8. April 2016

Banana Pi vs. Raspberry Pi


In meinem letzten Post dazu habe ich ja schon geschrieben das ich zeitweise einen Raspberry Pi für meinen Homeserver benutzt habe. Und das ich jetzt einen Banana Pi verwende, der deutlich mehr Leistung hat. Aber warum das so ist, das habe ich nicht genau erklärt. Das will ich jetzt nachholen, weil es da oft ein Mißverständnis gibt.
Natürlich ist der Prozessor immer ein Faktor, und der Raspberry hat nur einen Singlecore mit maximal 1000 MHz. Von Hause aus läuft er sogar nur mit 700 MHz. Der Banana Pi dagegen hat einen Dualcore mit bis zu 1200 MHz. Das ist aber nur die halbe Wahrheit. Denn wenn es nur darum geht, Daten im Netzwerk herum zu kopieren, spielt die Prozessorleistung nur eine untergeordnete Rolle. Aber was ist dann der Grund, das der Raspberry nur gut 2 MB/s schafft, der Banana aber ganz locker 12 MB/s durch das 100 MBit Netzwerk schiebt?
Dazu muß man sich vor Augen halten, das beide Rechner auf einem sogenannten SoC beruhen. SoC steht für "System on a Chip", das bedeutet das hier ein ganzes System in einem einzelnen Chip steckt. Bei einem PC hat man einen Prozessor, und einen Chipsatz, oder auch Northbridge genannt. Diese Northbridge stellt alle Verbindungen innerhalb des Systems bereit, also heutzutage vor allem USB-Ports, SATA-Ports, PCI-Express-Anschlüsse, Netzwerkport, eben alles was man so braucht. Früher gab es auch noch eine sogenannte Southbridge, die den Arbeitsspeicher angesteuert hat. Diese Funktion ist aber inzwischen fast immer im Prozessor integriert.
Nun, bei einem SoC sind alle Komponenten in einem einzelnen Chip integriert. Nach aussen haben diese Chips meist einige spezielle Ports, wie z.B. HDMI, einige serielle Schnittstellen wie I2C und SPI, über die man andere Chips ansteuern kann, und insbesondere USB-Ports. Letztere sind für uns interessant, da wir hier unsere Festplatten und so weiter anschließen. Und auch der Netzwerk-Anschluß ist bei den beiden von mir betrachteten Systemen jeweils per USB angebunden. Wenn man weiß, das quasi alle Geräte bei einem Raspberry oder Banana per USB angesprochen werden, dann stellt sich unweigerlich die Frage, wieviele Ports hat denn das jeweilige SoC eigentlich, und wie sind die aufgeteilt?
Der Raspberry Pi basiert auf einem Broadcom BCM2835 SoC, das nach außen hin nur einen einzigen USB-Port hat. Dieser wird auf einen Chip geführt, der den Netzwerkanschluß und die externen USB-Ports bereit stellt. Wie man hier nachlesen kann, ist das bei allen Modellen des Raspberry bis heute genau gleich geblieben. Alle externen USB-Ports und das Netzwerk teilen sich also einen einzigen USB-Port.
Beim Banana Pi kommt dagegen ein Allwinner A20 SoC zum Einsatz, das nach außen über drei USB-Ports verfügt. Zusätzlich hat dieses SoC auch direkt einen Netzwerkanschluß und einen SATA-Port. Nachzulesen hier. Das heißt, beim Banana Pi sind alle USB-Ports eigenständig und bieten die volle Bandbreite, unabhängig von den anderen Anschlüssen.
Und genau das macht den großen Unterschied aus.

Freitag, 1. April 2016

Vinculum

Wer mich persönlich kennt, der weiß das ich schon seit ca. 10 Jahren immer einen eigenen Homeserver betrieben habe.
Dafür kam im Lauf der Jahre immer wieder andere Hardware und Software zum Einsatz. Da ich meinen aktuellen Server in der nächsten Zeit mal wieder überarbeiten werde, will ich hier erstmal einen Überblick geben warum und wie ich den Server betreibe.

Zuerst mal das "Warum?". Natürlich eine berechtigte Frage. Für die Verwaltung des eigenen Heimnetzwerkes gibt es jede Menge verschiedene Router die ihren Job meistens recht zufriedenstellend erledigen. Will man Dateien für mehrere Geräte verfügbar machen, z.B. für den PC, das Smartphone und das Tablet, gibt es dafür wirklich gute und einfache NAS-Geräte, NAS steht für Network Attached Storage, zu deutsch grob "(ans) Netzwerk Angeschlossener Speicher". Also eigentlich könnte man auf einen Server ja verzichten. Ja, im Prinzip schon.

Aber aus mehreren Gründen will ich das nicht:

1. Kontrolle
Ich habe gerne die totale Kontrolle über alles, was in meinem Netzwerk passiert. Das ist mit einem herkömmlichen Router meist nur eingeschränkt möglich. Zum einen hat man auf einem dedizierten Server mehr Kontrolle über die Einstellungen, zum anderen hat man dort meistens viel ausführlichere Logfiles, so das man eventuelle Fehler leichter zurück verfolgen kann.

2. Spielraum
Ein Router in Kombination mit einem NAS gibt einem zwar auch die grundlegenden Funktionen eines Servers, aber man ist auf den Funktionsumfang festgelegt, den der jeweilige Hersteller vorgesehen hat. Auf einem Router kann man keine zusätzliche Software installieren, und ein NAS kann nur eine begrenzte Anzahl von Festplatten aufnehmen.

3. Effizienz
Für einen Router, ein NAS, eventuell noch einen Netzwerk-Switch oder eine externe USB-Festplatte braucht man jeweils ein eigenes Netzteil. Die haben dann jeweils eine Verlustleistung, und die addiert sich natürlich bei mehreren Geräten. In einem dedizierten Server hat man dagegen nur ein einziges Netzteil, so das Verluste nur an einer Stelle anfallen und bei geeigneter Wahl des Netzteils sehr gering ausfallen.

4. Ordnung
Wie schon erwähnt, für jedes einzelne Gerät braucht man ein eigenes Netzteil, und dann wollen ja alle Geräte untereinander auch noch eine Datenverbindung haben. Das ufert ganz schnell in einen regelrechten Kabelsalat aus. Und der ist nicht nur sehr unschön, sondern kann auch extrem nervig sein wenn man etwas ändern oder erweitern möchte.

Fazit: Ein Homeserver macht irgenwie doch Sinn.

Meine Server habe ich die meiste Zeit mit Linux als Betriebssystem betrieben. Namentlich SuSE Linux und Debian. SuSE lief auf meinen ersten Servern. Einer der ersten war ein Celeron 400 in einem Booksize-Gehäuse. Die Wahl fiel damals auf SuSE weil ich damit schon auf dem Desktop etwas Erfahrung hatte, und sich die damals aktuelle SuSE noch auf wenige 100 MB "eindampfen" ließ. Eine grafische Oberfläche brauchte ich nicht, das System sollte nur stabil und zuverlässig laufen. Damals hatte ich noch keine großen Festplatten, so hatte der Server nur etwa 20 GB Speicher. Davon wollte ich möglichst viel frei haben, um Daten auszutauschen. Und ein schlankes System bedeutet auch weniger Updates und weniger Fehlerquellen. Lange Zeit war ich damit wirklich zufrieden, allerdings hat das Mainboard nach einem Umzug nicht mehr funktioniert, und ein neuer Server musste her.
Da habe ich dann einen Minitower mit einem älteren Pentium Rechner bestückt. Die genauen Spezifikationen weiß ich inzwischen gar nicht mehr. Nachdem ich den lange Zeit wieder mit Linux betrieben habe, wollte ich irgendwann man Bitcoins minen, und das habe ich beim besten Willen nicht zum laufen bekommen. Und da auf meinen Rechnern sowieso die meiste Zeit Windows lief, habe ich dann mal einen Windows-Server betrieben. Dafür kam ein Windows Small Business Server 2003 zum Einsatz, für das ich die Lizenz schon einige Zeit herum liegen hatte. Was mir gut gefallen hat war die Verwaltung mehrerer Windows PC's in einer Domäne. Dabei kann man wirklich auf praktisch alle Funktionen und Einstellungen der angeschloßenen Rechner zugreifen, bis hin zu Einstellungen in der Registry. Und man kann auch viele Einstellungen für alle Rechner gemeinsam festlegen und Verwalten. Aber, die Einstellungen sind oft tief im System vergraben, und wenn man sich nicht wirklich auskennt, muß man viele Optionen sehr mühsam suchen. Und, damit man vernünftig mit dem System arbeiten kann, ist man auf die Remote-Desktop Steuerung angewiesen. Die funktioniert zwar wirklich gut, aber man braucht eben immer ein volles grafisches Windows System, um darauf zugreifen zu können. Ich habe meine SSH vermisst. Zudem hat der PC als Server wirklich viel Strom verbraucht, was mich irgendwann echt in Schwierigkeiten gebracht hat.

Und irgendwann habe ich dann den Raspberry Pi entdeckt. Ein Linux-Rechner in Scheckkartengröße, mit stromsparender ARM-Architektur. Zwar nicht besonders leistungsstark, aber für meine Zwecke fast perfekt. Zwar entstand daraus das übelste Kabelchaos aller Zeiten, aber das war für mich erträglich, weil ich alles zusammen in einer kleinen Abstellkammer unterbringen konnte, so das es quasi unsichtbar war. Der Rapberry mit eigenem Netzteil, eine USB-Festplatte mit eigenem Netzteil, ein Netzwerk-Switch mit eigenem Netzteil, eine Fritzbox mit eigenem Netzteil. Und ein paar Netzwerkkabel. Wirklich ziemliches Chaos, bei dem ich selbst zeitweise den Überblick verloren habe. Aber es hat gut funktioniert, obwohl die Datenraten immer relativ schlecht waren. Mehr als 2MB/s ging nicht beim Zugriff auf die USB-Platte über das Netzwerk. Das hatte mehrere Gründe, aber es war für mich soweit eigentlich genug. Ausreichend um Videos über das NJetzwerk zu schauen, was für mich bis heute eine der wichtigsten Funktionen des Servers darstellt. Damals noch mit einer modifizierten X-Box als MediaCenter. Und ein weiterer Einsatzzweck kam dazu, nämlich das abwickeln größerer Downloads. Ich habe eine relativ langsame Internetverbindung mit nur knapp 7 Mbit, und da dauert es schon eine kleine Ewigkeit wenn man ein größeres Linux-Image für den Raspberry laden will, oder gar ein DVD-Image für ein Desktop-Linux. Auch habe ich irgendwann angefangen eine Sammlung von Vorlesungen anzulegen, da sind wirklich viele auf archive.org verfügbar. Alle diese Sachen sind per Torrent verfügbar, da lag es nahe einen Torrent direkt auf dem Raspberry laufen zu lassen. Dadurch musste ich nichtmehr meinen großen Desktop PC dauernd laufen lassen, und große Downloads konnten über Nacht laufen wo sie mich nicht gestört haben.

Das führte dazu, das jemand anderes gerne auch eine solche "Seedbox" haben wollte, wie man einen Torrent-Server auch manchmal nennt. Allerdings hatte er keinen Raspberry, sondern einen Banana Pi, ein sehr ähnliches aber deutlich leistungsstärkeres System. Das Board für die Entwicklung eines passenden Images wurde mir großzügigerweise zur Verfügung gestellt, und verrichtet bis heute seinen Dienst in meinem aktuellen Server. Und irgendwann habe ich auch das Kabelchaos endgültig beseitigt. Dafür habe ich ein ATX-Netzteil verwendet, in einem normalen Minitower Gehäuse. Allerdings mit einem selbstgelöteten Kabelbaum, an einem ATX-Stecker aus einem alten Mainboard. Dadurch konnte ich nicht nur den Banana Pi, sondern auch die inzwischen 5 Festplatten, die Fritzbox und einen zusätzlichen Switch an einem einzigen Netzteil betreiben, das noch reichlich Reserve für weitere Festplatten oder sonstige Erweiterungen bietet. Und es ist alles zusammen in einem einzigen Gehäuse untergebracht, nimmt nur wenig Platz weg und kommt mit einer einzigen Steckdose aus. Die Geschwindigkeit ist für mein 100MBit-Netzwerk bei weitem ausreichend, ich erreiche sowohl beim Lesen als auch beim Schreiben rund 11-12 MB/s, also das Maximum was das Netzwerk hergibt. Der Banana selbst hat einen Gigabit Port, so das hier auch noch deutlich mehr möglich wäre. Da ich aber keinen Gigabit Switch besitze, kann er bisher gar nicht seine volle Leistung entfalten.

So weit, so gut. Und weiter?

Ich werde auch in Zukunft die Speicherkapazität Stück für Stück ausbauen. Inzwischen sind es mehr als 5 Terabyte. Irgendwann werde ich auch den Switch durch ein Gigabit Modell ersetzen, und die Fritzbox ist auch schon ziemlich in die Jahre gekommen. Sie bietet leider nur ein 54MBit WLAN, was mir inzwischen doch zu langsam ist. Außerdem möchte ich gerne die Spannungen des Netzteils genau überwachen können, dafür werde ich einen PIC Mikrocontroller verwenden, der mit dem Banana verbunden wird. Eventuell kommt auch noch ein Display dazu, das dann drahtlos per XBee mit dem Server verbunden wird. Aber da bin ich mir noch nicht ganz sicher. Auch eine Überwachung der Lastströme auf den einzelnen Spannungen wäre denkbar, oder die temperaturabhängige Regelung der Lüfter. Die Abstellkammer in der mein Server steht ist direkt unter dem Dach, und im Sommer wird es da sehr heiß. Teile des Systems haben da schon mal 60 Grad erreicht, was für Festplatten schon ungesund ist.

Sobald ich den Server wieder umbaue, werde ich natürlich hier ausführlich berichten. Dann auch wieder mit Bildern und Details.