Moderne Netzwerkspeicher wie die von Qnap bringen Virtualisierungssoftware mit, die das schnöde Datengrab in eine digitale Spielwiese verwandelt.
Network Attached Storage oder kurz NAS [1] dient im Alltag gemeinhin hauptsächlich als Ablage für Daten aller Art. Allerdings kommen die Geräte zunehmend auch als PC oder Entwickler-Stationen zum Einsatz. Der stetig erweiterte Software-Umfang, den Hersteller wie Qnap, Synology und andere ihren privaten Kunden bieten, unterstützt diesen Trend. Auch Virtualisierung eröffnet auf dem NAS neue Möglichkeiten: Bereits seit einigen Jahren legen die Hersteller zunehmend Software bei, die das herkömmliche Prinzip mit virtuellen Maschinen (VMs) unterstützt. Immer mehr Gewicht erhalten zudem Container.
War die verwendete Hardware aufgrund des eingeschränkten Einsatzes als Netzwerkspeicher früher oft schwach ausgelegt, ändert sich das zunehmend. In absehbarer Zeit kommen Geräte mit AMD-Ryzen-CPU, bis zu 64 GByte RAM und zwei M.2-SATA-SSDs in PCIe-Steckplätzen auf den Markt. Eine solche Kombination ermöglicht selbst semiprofessionelle Virtualisierung.
Aufseiten der Software unterstützt etwa Qnap diesen Trend, indem die Firma mit der Linux Station, der Virtualization Station und der Container Station drei Anwendungen bereitstellt, die mit virtuellen Umgebungen arbeiten. Zugleich hat der Hersteller die Geräte für das Internet der Dinge vorbereitet. Das macht sie für Entwickler interessant, verknüpft es doch die Möglichkeit, Anwendungen im Container zu entwickeln mit direktem Zugriff auf den Storage.
Die Linux Station (Abbildung 1) unterstützt derzeit nur Ubuntu 14.04 und 16.04, später sollen auch Debian und Fedora folgen. Das Passwort ist dasselbe wie für das NAS.
Voraussetzungen
Ältere Geräte offerieren diese Techniken nicht immer; sie setzen voraus, dass die CPU Virtualisierungstechniken (VT-x) bereitstellt. So beschränkt sich der Einsatz bei Qnap auf die Modelle der Serien TS-x51, TS-x51A, TS-x53, TS-x53A TS-x70, TS-x79, TVS-x71, TVS-ECx80 und TVS-x82. Zudem setzt ein reibungsloser Betrieb mindestens 4 GByte RAM voraus. Mehr hilft in jedem Fall mehr, da das Betriebssystem des Geräts bereits rund 1 GByte für sich beansprucht.
Im Test kamen die Virtualization Station und die Container Station zum Zuge, wobei Letztere sowohl Docker [2] als auch Linux Container (LXC [3]) unterstützt. Als Grundlage diente ein Qnap TS 251A [4], dessen Hauptspeicher – trotz des spezifizierten Limits von 8 GByte – mit zwei baugleichen 8-GByte-Modulen auf 16 GByte ausgebaut war. Das auf Linux basierende NAS-Betriebssystem QTS [5] kam in Version 4.3.3 zum Einsatz.
Die Virtualisierung per Virtualization Station (VS) ähnelt in Bezug auf die Möglichkeiten Anwendungen wie Oracles Virtualbox oder dem auf Qemu basierenden KVM. Tatsächlich kommt im Hintergrund das quelloffene Qemu/KVM zum Einsatz. Die VS installieren Sie, wie die anderen Stationen, per Mausklick aus dem in die Weboberfläche eingebundenen App-Store (Abbildung 2).
Beim Start erscheint der Hinweis, dass die Software UPNP vom Qnap-Dienst myQnapcloud übernimmt und Sie die Möglichkeit haben, diese dort per Auto-Router-Config zu starten. Das erlaubt es, bei Bedarf von außen auf das NAS und somit die VS und die darin erstellten Maschinen zuzugreifen.
TIPP
Setzen Sie UPNP nur bei Bedarf punktuell ein, da es einen zusätzlichen Angriffsvektor auf den Router öffnet. Bei Bedarf regeln Sie den Zugriff von außen viel sicherer von Hand über eine Port-Freigabe.
Erstellen oder importieren
Der erste Blick auf die Oberfläche zeigt, dass Sie virtuelle Maschinen erstellen oder importieren dürfen. Beim Erstellen über den Schalter VM erstellen dient ein ISO-Abbild auf dem NAS als Ausgangspunkt. Über den Dialog bestimmen Sie unter anderem, wie viele CPU-Kerne, Hauptspeicher und Plattenplatz der Gast nutzen darf und wo Sie die VM speichern möchten (Abbildung 3).
Der Vorgang dauert meist nur wenige Augenblicke, anschließend lässt sich die VM starten. Über die Kontenverwaltung ordnen Sie jeder VM einen User mit bestimmten Rechten zu. Daneben haben Sie die Möglichkeit, ein Backup oder einen Snapshot anzulegen, um den derzeitigen Stand später wiederherzustellen.
Für die Konfiguration des Netzwerks bietet die Virtualization Station mehrere Möglichkeiten. Am besten erstellen Sie zunächst einen virtuellen Switch und weisen ihm keine Ethernet-Schnittstelle zu. Auf diese Weise entsteht ein isoliertes Netzwerk. Nun vergeben Sie manuell IP-Adressen für die VMs und verbinden diese mit dem Switch, sodass die virtuellen Rechner miteinander kommunizieren können.
Vielfalt in VM-Markets
Ganz ähnlich gehen Sie beim Import vorgefertiger VMs vor (Abbildung 4). Hier akzeptiert die Host-Software die Formate OVA, OVF und VMX sowie das hauseigene Format QVM.
Die Images lassen sich also mit Virtualbox oder Vmware erstellen oder aus einem Market wie Bitnami [6] beziehen. Dort liegen zahlreiche Anwendungen, die alle auf einem minimalen Debian 8 aufsetzen, unter anderem als Docker-Container und als VM vor.
VMs zum Import dürfen darüber hinaus auf dem NAS, einem PC oder einem weiteren verbundenen NAS liegen. In der Maske wählen Sie das Image aus, der weitere Verlauf ähnelt jenem beim Erstellen. Wie bei den selbstgefertigten VMs erlaubt es die Software, Importe auf das lokale oder ein anderes NAS zu exportieren.
Um hier über das reine Testen von Distributionen hinauszugehen (Abbildung 5), setzten wir auf einer virtuellen Maschine mit dem Univention-Server [7] zusätzlich den Mail- und Kommunikationsdienst Kopano [8] auf, um Nachrichten von mehreren Adressen abzuholen und diese sowie Kontakte und Termine auf den Geräten zu synchronisieren.

Abbildung 5: Nicht nur Distributionen, sondern auch darauf laufende Dienste reicht die VS an den Browser durch.
Container Station
Schließt der hohe Bedarf an Festplattenplatz und Arbeitsspeicher sowie der zeitraubende Start einer virtuellen Maschine deren Einsatz aus, so erweist sich für viele Fälle der Griff zum Container als praktikable Alternative (Abbildung 6). Dieser beansprucht weniger Ressourcen, startet in der Regel schnell und ist sehr portabel.

Abbildung 6: Das Einarbeiten in die CS braucht etwas länger als bei der VS, ist aber gut dokumentiert.
Neben der herkömmlichen Virtualization Station steht im Qnap-App-Store dafür die Container Station (CS) bereit. Sie unterstützt Docker und LXC, auf dem Docker früher basierte. Wir testen die CS 3.0 ebenfalls unter QTS 4.3.3. Für einen einfachen Test genügt hier die Standardausstattung mit 4 GByte RAM, für den dauerhaften Einsatz mehrerer Container sollten auf alle Fälle 8 GByte verbaut sein.
Einige NAS-Geräte von Qnap mit Intel-Celeron-Prozessoren arbeiten selbst mit 16 GByte (zweimal 8 GByte) zusammen, obwohl sowohl Intel wie der Hersteller den Einsatz per Datenblatt auf 8 GByte begrenzen. Weitere Informationen hierzu finden Sie beim deutschen Forum Qnap-Club [9].
Unterschiede
Docker ist eher für einzelne Anwendungen gedacht. Hier setzen Sie mehrere Images – so etwa das Grundsystem und die nötigen Komponenten – zusammen, um beispielsweise Node.js als Anwendung einzusetzen. Docker packt diese Images dann zu einem Container zusammen. Um vorgenommene Änderungen zu speichern, wandeln Sie den Container wieder in ein Image um.
LXC dagegen erlaubt es, mehrere Anwendungen und Dienste parallel zu betreiben. Die Änderungen an einem LXC-Container gehen im Gegensatz zu Docker nicht verloren, sobald Sie den Container anhalten. So eignet sich LXC zum Ausführen von Distributionen.
Transparent und gestapelt
Docker bedient sich eines UnionFS [10]. Diese Dateisysteme halten geänderte Daten zur Laufzeit in einer transparenten Schicht über dem statischen Image vor. Was auf den ersten Blick wie ein Nachteil wirkt, erweist sich bei Docker an anderer Stelle als Vorteil: Es erlaubt, dass sich mehrere Container zur gleichen Zeit ein Image teilen und jeder Container Daten schreibt und Aktualisierungen vornimmt, ohne dass diese sich gegenseitig beeinflussen. Das derzeit bei Docker standardmäßig verwendete UnionFS heißt AUFS. Mit dem Einzug von Kernel 4.x in die Images kommt jedoch mehr und mehr OverlayFS zum Einsatz.
Nach der Installation starten Sie die CS und erhalten ein Fenster, das in der Übersicht einige wichtige Angaben zu den Ressourcen liefert, wie die derzeitige CPU-Last sowie den RAM-Verbrauch (Abbildung 7). Das erlaubt Schlüsse darauf, ob ein zusätzlicher Container genügend Ressourcen erhalten würde. Mit 4 GByte RAM kommen Sie hier jedenfalls weiter als bei herkömmlicher Virtualisierung. Weitere Reiter am linken Rand erlauben das Aufsetzen und den Einsatz von Containern.

Abbildung 7: 4 GByte RAM erlauben es, mehrere Container zu betreiben, reichen aber für mehrere virtuelle Maschinen oft nicht aus.
Um einen ersten Container zu erstellen, klicken Sie auf den entsprechenden Reiter. Hier bietet die Software einige gängige Container-Images an, weitere finden Sie leicht über die Suchfunktion. Kennen Sie den Namen des gesuchten Images nicht genau oder möchten einfach auf Entdeckungsreise gehen, forschen Sie im Docker Hub [11] oder Docker Store [12] nach (Abbildung 8).

Abbildung 8: Im Docker Hub stöbern Sie in über einer halben Million Images, die jeweils unterschiedlichen Zwecken dienen – von der einfachen Distribution bis hin zur komplexen Nextcloud-Instanz.
Oberfläche
Wir richteten erst einmal das von der Container Station bereits angebotene Debian ein. Nach dem Klick auf Installieren erstellt das Programm in wenigen Sekunden den LXC-Container mit Debian “Jessie” und öffnet eine Steuerkonsole. Das Image eignet sich eher für den Headless-Betrieb denn als Server, da das automatische Durchreichen des X-Servers aus dem Container nicht klappt. Dem helfen Sie mit VNC ab.
Es gibt allerdings Images, die bereits VNC mitbringen und nach der Installation des Docker-Images die Distribution direkt grafisch im Browser starten. Wir installierten als Beispiel das bereits entsprechend ausgestattete Docker-Image dorowu/ubuntu-desktop-lxde-vnc:release-v1.0 (Abbildung 9).

Abbildung 9: Per VNC reichen Sie die Oberfläche aus dem Ubuntu-Container durch. Ein Klick auf die URL genügt zum Start.
Docker-Images mit weitergeleitetem X für viele weitere Distributionen finden Sie, indem Sie in der Suche bei Image erstellen den Namen der Distribution und das Wort desktop mit einem Bindestrich koppeln, in der Art fedora-desktop. Dabei finden sich Images, die das X-Forwarding mittels NoVNC, Xpra, Nomachine oder X2go ermöglichen.
Wolke im Container
Bei einzelnen Anwendungen spielen jedoch Container ihre Vorteile aus. Wir wählten daher als Nächstes mit Nextcloud ein weiteres Docker-Image aus. Nach der Eingabe von Nextcloud im Suchfeld unter Container erstellen erhalten Sie Zugriff auf eine Menge an entsprechenden Images.
Statt des offiziellen Images wählten wir wonderfall/nextcloud, das an zweiter Stelle in der Liste auftaucht. Es basiert auf dem schlanken Alpine Linux mit Nginx als Webserver und aktuellem PHP 7.1. Der Container ist in wenigen Sekunden erstellt und nach einer weiteren Minute bereits im Browser einsatzbereit. Dazu nutzen Sie die nach der Installation angezeigte URL im Browser Ihrer Wahl. Nach der Definition eines Anwender- und Administrator-Passworts setzt die Software Nextcloud auf, das sofort zum Einsatz bereitsteht.
Die CS bietet eine Funktion, die es ermöglicht, den Container in einen zuvor erstellten Freigabeordner zu exportieren oder umgekehrt Container von anderen Rechnern zu importieren.
Bei Docker erhalten Sie für Container oft eine Menge zusätzlicher Informationen zu den Zutaten und der Handhabung des Images, indem Sie im Docker-Hub auf den Namen des Images klicken. So ist es etwa möglich, Nextcloud etwa über den Docker-Befehl docker exec -ti nexcloud occ command zu aktualisieren.
Fazit
Derzeit sieht es so aus, als wäre Qnap der Konkurrenz in Sachen Virtualisierung eine Nasenlänge voraus. Allerdings funktioniert hier nicht immer alles wie gewünscht, wobei es für viele Probleme praxistaugliche Lösungen gibt. Um einen gewissen Lernaufwand kommen Sie aber nicht herum – besonders, wenn es um Container geht. Hier fällt die Dokumentation [13] mancherorts zu seicht aus.
Die Möglichkeiten der Virtualisierung erweitern die Einsatzgebiete von NAS-Systemen unter anderem im privaten Umfeld. Dabei eignen sich herkömmliche virtuelle Maschinen eher zum Arbeiten mit Distributionen, erlauben aber auch den Einsatz webbasierter Anwendungen, wie das Beispiel mit UCS und Kopano zeigt.
Docker-Container eignen sich eher zum Entwickeln und Ausführen einzelner Anwendungen, während LXC gut mit Distributionen zusammenspielt. Hier wäre allerdings Canonicals LXD eine noch passendere Wahl.
Infos
-
Qnap TS-251A: https://www.qnap.com/de-de/product/model.php?II=239
-
QTS: https://www.qnap.com/de-de/qts4/con_show.php?op=showone&cid=1
-
Bitnami:https://bitnami.com/stacks
-
UCS:https://www.univention.de/download/ucs-download/iso-installationsimage/
-
Kopano: https://www.univention.de/2016/08/einmal-kopano-to-go-bitte/
-
Qnap-Club: https://forum.qnapclub.de/
-
Docker Hub: https://hub.docker.com/explore/
-
Docker Store: https://store.docker.com/search?source=verified&type=image
-
Dokumentation: https://www.qnap.com/de-de/family_apply_v2/con_show.php?op=showone&cid=10









