Workshop: Plattenverwaltung unter Linux, Teil 2: Volume Manager

Flexible Disks

20. Juli 2006, 11:55 Uhr | Andreas Stolzenberger

Der Logical Volume Manager von Linux entkoppelt physische Disks von nutzbaren Laufwerken und ermöglicht damit ein flexibles Plattenmanagement.

Serverplatten laufen schneller über, als es Administratoren erwarten. Schön, wer da über freien Speicherplatz verfügt, den er möglichst ohne große Ausfälle einsetzen kann. Laufwerke, die fest auf physischen Partitionen liegen, lassen sich jedoch nur schwer erweitern. So führen neue Platten in der Regel zu neuen Verzeichnissen im Dateisystem. Dann heißt es einmal mehr, volle Verzeichnisse auf die neue Platte zu verschieben und die alte mit symbolischen Links auf die verschobenen Directories vollzupfropfen, so dass der Anwender die Verschiebung nicht merkt. Ähnlich aufwändig fällt die Kopierarbeit aus, soll ein Laufwerk ganz oder teilweise geräumt und aus einem Verband genommen werden. Eine elegante und bei Linux ohnehin integrierte Lösung ist der Logical Volume Manager (LVM). Dieser trennt physische Laufwerke und Partitionen von logischen Volumina. Ein nutzbares Laufwerk kann dabei nur den Teil einer Partition oder mehrere physische Laufwerke belegen. Logische Volumina des LVM lassen sich jederzeit in der Größe verändern. Der Administrator kann bestehenden Laufwerken einfach Speicherplatz hinzufügen oder auch wegnehmen. Windows-Server können ihre dynamischen Volumina im Gegenzug zwar erweitern, um sie jedoch zu verkleinern, bedarf es zusätzlicher Tools von Herstellern wie Powerquest. Linux liefert neben dem Volume-Manager auch die passenden Hilfsmittel, um Dateisysteme zu vergrößern und zu verkleinern – und das ohne Neustart des Systems.

Profi-Workshop Inhalt: Funktion, Bedienung und Einrichtung von LVM-Laufwerken unter Linux.

Voraussetzung: Linux-Server mit 2.4-Kernel-Distribution und installiertem LVM. Für die Platten- und Partitionstests sollte das System über eine oder mehrere leere Festplatten verfügen. Stehen diese nicht zur Verfügung, lassen sich alternativ loop-Devices (siehe Kasten) für den Workshop einsetzen.

Von Platte zu Volume in drei Schichten

Der Linux-LVM arbeitet in drei Ebenen. In der untersten stehen die eigentlichen Platten und deren Partitionen. Diesen Layer bezeichnet der LVM als »PV«. Tools zur Verwaltung der physischen Volumina beginnen daher immer mit pv wie beispielsweise pvcreate. Um physical Volumes zu erhalten, muss der Administrator auf seinen Laufwerken Partitionen mit dem Typ 8e erstellen und dann dem LVM über pvcreate zuweisen. Dabei können komplette physische Laufwerke oder auch nur Teile davon als PV-Partitionen auftreten. Der LVM unterstützt dabei reguläre Laufwerke wie /dev/hdx (IDE) oder /dev/sdx (SCSI) ebenso wie RAID-Laufwerke /dev/mdx (Multiple Device). Da sich logische Volumina oft über mehrere Laufwerke erstrecken, sollte ein RAID-Verband ohnehin die Ausfallsicherheit gewährleisten.

Die verfügbaren PVs weist der LVM dann so genannten Volume Groups zu. Diese als VG bezeichneten Gruppen halten Speicher für die eigentlichen logischen Laufwerke bereit. Natürlich kann der Anwender zur Laufzeit einer Volume-Gruppe weitere physical Volumes hinzufügen oder ungenutzte PVs wieder entfernen und einer anderen Volume Group zuweisen. Jede Volume Group muss der Administrator dabei mit einer festen Extent Size generieren, die sich nicht mehr ändern lässt. Dieser Parameter legt fest, in welchen Kapazitätsschritten sich logische Volumina vergrößern oder verkleinern lassen. Die Vorgabe lautet 4 MByte. Jedes logische Volumen kann maximal 65534 Extents enthalten, auch darf ein physical Volume maximal in 65534 Extents aufgeteilt werden. Von der Extent-Größe hängt damit auch die maximale Größe der benutzbaren Platten und der logical Volumes ab. Bei einer Extent-Size von 4 MByte kann ein logisches Volumen maximal 256 GByte groß werden. Der Verwalter kann die Extent-Size auf maximal 16 GByte anheben. Da sich dieser Wert nach der Deklaration einer VG nicht mehr ändern lässt, muss der Systemverwalter im Vorfeld abschätzen, wie große die logischen Volumina maximal ausfallen.

Linux kann maximal 99 Volume-Groups und 256 logische Volumina verwalten. Theoretisch können LVs bis 2 Petabyte groß werden, aber x86-Systeme schränken derzeit die maximale Größe auf 2 TByte ein. Kommandos zur Verwaltung von Volume Groups beginnen mit vg wie vgcreate.

Über welche VGs ein System verfügt, sichert Linux in der Datei /etc/lvmtab. Die Verzeichnisse /etc/lvmconf und /etc/lvmtab.d enthalten binäre Konfigurationsdateien zu den Volumina. Darüber hinaus sichert das System die Volumeninformationen in gesicherte Speicherbereiche der zugehörigen Laufwerke. Jede Volume Group verfügt über ein eigenes Verzeichnis unter /dev.

Die dritte und letzte Schicht enthält schließlich die logischen Laufwerke LV, die der Systemverwalter mit einem Dateisystem versieht und im System mountet. Alle Kommandos, die logical Volumes verwalten, beginnen mit lv. Logische Volumina gehören immer zu einer festen Volumen-Gruppe. Das jeweilige Block-Device steht dann unter /dev/volumegroupname.

Alle Statusinformationen des LVM stehen unter /proc/lvm. Die Datei /proc/lvm/global enthält dabei eine Zusammenfassung zu allen definierten LVs. In Verzeichnissen unterhalb /proc/lvm stehen Directories mit den Namen der VGs. Dort finden sich die Statusinformationen zu den zugehörigen LVs und PVs. Ein modernes Linux-System kann einen LVM-Datenträger auch als Root-Volumen verwenden. Es empfiehlt sich jedoch für Notfälle, den eigentlichen Systemkern, die initiale Ramdisk und die Konfiguration des Boot-Loaders auf einer regulären Partition zu sichern. So kann man im Problemfall jederzeit von einer Rescue-CD starten und an die wesentlichen Systemparameter herankommen, auch wenn die Rescue-CD keine LVM-Volumina unterstützt. Wer auf Nummer Sicher gehen will, kann auch das Konfigurationsverzeichnis /etc auf dem /boot-Datenträger ablegen, dann kommt er von einer Rescue-CD aus an die gesamte Systemkonfiguration.

LVM einrichten und verwenden

Linux-Setup-Routinen wie Redhats Anaconda können bereits bei der Installation den LVM einrichten. Allerdings lässt der Disk Druid nicht alle Parameter der LVM-Konfiguration zu. Möchten Sie ein neues System mit LVM einrichten, empfiehlt es sich, zunächst nur eine kleine Volume Group und ein logisches Laufwerk zu erstellen. Sobald das System läuft, lassen sich weitere Gruppen und Volumina mit individuellerer Konfiguration einrichten.

Wollen Sie den LVM auf einem bereits laufenden Rechner verwenden, sollten Sie zunächst einmal alle Daten sichern und das System auf einen einzigen Datenträger zusammenziehen. Dann können Sie frei gewordene Partitionen dem LVM zuweisen und erste Volume Groups erstellen. Sollten Sie eine ganze Platte als Root-Volumen verwenden, können Sie mit Hilfe des Resize-Tools die Root-Partition verkleinern. Für diesen Workshop können Sie stattdessen auch Loop-Devices einsetzen (siehe Kasten) und die bestehenden Partitionen vorerst unverändert lassen.

Info Das Loop-Device

Für Tests mit vielen Platten, Partitionen und Dateisystemen stehen in der Regel nicht genügend Laufwerke in einem System zur Verfügung. Nicht jeder Administrator verfügt über VMWare, um kritische Vorgänge wie die in diesem Workshop beschriebene Vergrößerung und Verkleinerung von Partitionen erst einmal in einer virtuellen Umgebung auszuprobieren. Linux selbst aber bietet die Möglichkeit, virtuelle Laufwerke für Testzwecke zu erstellen.

So genannte Loop-Devices simulieren Block-Devices wie Festplatten oder Floppy-Laufwerke und sichern deren Inhalt in Image-Dateien. Diese virtuellen Laufwerke setzen Linux-Anwender häufig in Verbindung mit dem Crypto-Modul ein, um verschlüsselte Dateisysteme zu erstellen. Loop-Devices arbeiten im Large-Floppy-Modus, verwalten einen Datenträger also ohne Partition-Table. Partitionierbare Loop-Devices soll es in Distributionen mir Kernel 2.6 geben. Der LVM kann aber auch mit partitionslosen Laufwerken arbeiten und diese zu Volume Groups hinzufügen.

Möchten sie beispielsweise eine leere 100-MByte-Platte für Testzwecke erstellen, legen Sie eine passende Datei an:

dd if=/dev/zero of=/pfad/disk.image bs=1k count=100

Dieses Kommando erstellt die Image-Datei disk.image und kopiert 100 Blöcke à 1 KByte Null-Bytes hinein. Diese Datei weisen Sie dann einem der 16 Loop-Devices des Systems zu:

losetup /dev/loop0 /pfad/disk.image

Jetzt können Sie das Device mit einem Dateisystem formatieren

mkfs.ext3 -j /dev/loop0

und sofort einbinden

mount /del/loop0 /mnt/loop0

Haben Sie das Device einmal eingerichtet, brauchen Sie es bei künftigen Systemstarts nicht mehr mit losetup zuzuweisen. Der mount-Befehl kann dies selbst erledigen. Sie können eine Image-Datei auch wie folgt einbinden:

mount -t ext3 -o loop /pfad/disk.image /mnt/loop0

Wollen Sie Tests mit bestehenden Partitionen erst einmal simulieren, kopieren Sie einfach eine komplette Partition in eine Image-Datei:

dd if=/dev/sda1 of=/pfad/sda1.image

losetup /dev/loop1 /pfad/sda1.image

Achten Sie dabei darauf, dass dd eine Datei mit der kompletten Partitionsgröße von /dev/sda1 anlegen wird, unabhängig vom freien Speicher innerhalb des Volumens. Sie benötigen also mindestens eine weitere Partition, die größer als /dev/sda1 ist. Anstatt am lebenden Objekt /dev/sda1 können Sie das Verkleinern des Dateisystems am Image ausprobieren:

e2fsck -f /dev/loop1resize2fs /dev/loop1 blockzahl

Je nach Blockgröße des Dateisystems müssen Sie hier, wie im Text beschrieben, die 1k-Blocke umrechnen.

Da das Loop-Device ohne Partition-Table auskommen muss, simulieren Sie die Verkleinerung, indem Sie mit dd eine verkleinerte Kopie von sda1.image anlegen:

dd if=/pfad/sda1.image of=/pfad/kleines.image bs=1k count=blockzahl

Die Blockzahl des Kommandos errechnet sich, wie im Text beschrieben, aus der verkleinerten Blockzahl in 1k-Blöcken des Dateisystems zuzüglich des Dateisystem-Mehrverbrauchs.

Jetzt können Sie prüfen, ob der Vorgang funktioniert hat.

e2fsck -f dev/loop1mount /dev/loop1 /mnt/loop1

Das Loop-Device lösen Sie vom Image über das Kommando

losetup -d /dev/loop1

Um ein paar virtuelle Platten für diesen Test zu erhalten und dem LVM zuzuweisen, generieren Sie einfach wie beschrieben ein paar leere Image-Dateien mit dd und weisen Sie diese mehreren Loop-Devices zu. Fügen Sie die Loop-Devices dann einfach dem LVM zu und erstellen Sie eine Volume Group.

pvcreate /dev/loop0 /dev/loop1 /dev/loop2

vgcreate loopgroup /dev/loop0 /dev/loop1 /dev/loop2

Jetzt können Sie mit den LVM-Kommandos testen, ohne dabei reale Partitionen und Platten überschreiben zu müssen. Am Ende der Tests lösen Sie einfach LVs, VGs und PVs, trennen die Loop-Devices und löschen die Disk-Images.

Bestehende Partition anpassen

Die folgende Anleitung verkleinert eine bestehende Partition, um Raum für LVM-Partitionen zu schaffen. Dieser Vorgang ist riskant und kann bei Fehlern die Root-Partition zerstören. Führen Sie diesen Vorgang nur dann aus, wenn Sie ein vollständiges System-Backup besitzen und die Prozedur zuvor mit virtuellen Laufwerken oder Partitionen schon einmal durchgespielt haben.

Starten Sie das System von einer Rescue-CD oder einer Live-Linux-CD (Knoppix), welche die nötigen ext3-Tools (oder Reiser, bei Suse) enthält. Mounten Sie Ihr Root-Dateisystem als Read-Only und prüfen Sie die Größe des belegten Speichers über das df-Kommando, hier am Beispiel einer SCSI-Platte:

mount -r /dev/sda1 /tmp/mnt

die Ausgabe könnte wie folgt aussehen:

Filesystem 1k-blocksUsed Available Use Mounted on

/dev/sda11925056 378289 1448988 20% /tmp/mnt

Notieren Sie dabei die Anzahl der gesamten Blöcke. Um später die Größe des Laufwerks ändern zu können, müssen Sie zudem die Blockgröße des Dateisystems ermitteln.

tune2fs -l /dev/sda1

Dieses Kommando zeigt den kompletten Superblock des Dateisystems an (für Reiser gibt es ein ähnliches Tool). Suchen Sie nach der Angabe »Block Size«. Diese legt fest, wie viele Kilobyte das Dateisystem zu einem Block zusammenfasst.

Starten Sie dann fdisk und notieren Sie die Blockgröße des Volumens

fdisk /dev/sda

Geben Sie das Kommando »p« für print ein und erhalten dann etwa folgendes Bild:

Device Boot Start End Blocks id System

/dev/sda1 * 69 1023 1955824 83 Linux

/dev/sda2 1 68 139248 82 Linux Swap

Wie man erkennen kann, gibt fdisk eine größere Zahl von Blöcken für das Laufwerk an als df. Die Differenz beider Werte hängt davon ab, wie viele Blöcke das verwendete Dateisystem (ext2, etx3, Reiser, xfs, jfs etc..) für sich selbst beansprucht. Diese Differenz benötigen Sie, um später die verkleinerte Partition an das Dateisystem anzupassen.

Unmounten Sie das Laufwerk und verkleinern Sie das Dateisystem mit dem entsprechenden Tool auf die gewünschte Größe, beispielsweise von den hier angezeigten 1,9 GByte auf 800 MByte mit ext3-Dateisystem. In diesem Fall gibt tune2fs aus, dass /dev/sda1 mit 4 KByte-Blöchen arbeitet, also soll resize2fs das Laufwerk auf 200000 Blöcke à 4 KByte reduzieren.

unmount /tmp/mnt

fsck.ext3 -f /dev/sda1

resize2fs /dev/sda1 200000

Passen Sie dann die Größe der Partition in fdisk an. Dazu löschen Sie die Partition und erstellen sie mit der geringeren Zahl an Blöcken neu. Diese neue Partition muss mit dem Zylinder der früheren Partition beginnen – in unserem Beispiel 69. Die Zahl der Blöcke muss mindestens den Wert der neuen Dateisystemgröße (819200) plus den Mehrverbrauch des Dateisystems betragen. In unserem Beispiel wären das zusätzliche 30786 Blöcke, folglich 849986. Um auf Nummer Sicher zu gehen, können Sie ein paar Blöcke mehr angeben, beispielsweise 900000. Sollte fdisk nach dem Kommando »w« für write angeben, dass der Kernel noch die alte Partitionstabelle benutzt, müssen Sie das Rescue-System neu starten.

Rufen Sie dann erneut resize2fs auf, aber ohne Angabe einer Blockzahl.

fsck.ext3 -f /dev/sda1

resize2fs /dev/sda1

Das Tool passt das Dateisystem dann exakt an die Größe der Partition an. Sollte bis hierher alles funktionieren, können Sie auf der Platte eine zusätzliche Partition vom Typ 8e für den LVM erstellen. Danach starten Sie wieder in das eigentliche System und beginnen mit der LVM-Konfiguration.

LVM konfigurieren

Sobald Ihr Server über eine oder mehrere Partitionen vom Typ 8e – oder wie im Kasten beschrieben das eine oder andere Loop-Device verfügt, beginnen Sie mit der LVM-Konfiguration.

Zunächst erstellen Sie die LVM-Konfigurationsdateien und -Verzeichnisse. Starten Sie dazu einfach das Kommando vgscan. Findet dieses Tool keine oder falsche LVM-Konfigurationsinformationen, legt es neue an. Weisen Sie dann die LVM-Partitionen dem Pool phyischer Disks zu.

pvcreate /dev/sda5 /dev/sdb1

falls Sie mit Loop-Devices arbeiten, sieht das Kommando so aus:

pvcreate /dev/loop0 /dev/loop1

Anschließend erstellen Sie ihre erste Volume Group.

vgcreate vol00 /dev/sda5

Ihre neue Gruppe arbeitet dabei mit der Standard-Extent-Size von 4 MByte. Sollten Sie größere Volumina benötigen, müssen Sie mit dem vgcreate-Kommando die Extent-Size angeben. Mit einer Extent-Size von 32 MByte ermöglichen Sie logische Laufwerke bi 2 TByte.

vgcreate -s 32M vol00 /dev/sda5

Sie können dieser Volume Group zur Laufzeit weitere Platten und Partitionen hinzufügen:

vgextend vol00 /dev/sdb1

Physische Platten und Extents, die nicht zu einem aktiven logischen Laufwerk gehören, lassen sich aus der Volume Group entfernen:

vgreduce vol00 /dev/sdb1

Im Speicherpool einer Volume Group können Sie dann logische Laufwerke einrichten. Dazu bietet Ihnen das lvcreate-Kommando eine Reihe von Optionen. Die minimale Kommandozeile erstellt einfach ein logisches Volumen bestimmter Größe am Anfang des freien Speichers innerhalb der Volumengruppe.

lvcreate -L 4G vol00

Das Kommando legt ein 4 GByte großes logisches Laufwerk mit dem automatisch vergebenen Namen lvol0 im Verzeichnis /dev/vol00/lvol0 an. Einrichten können Sie dieses Laufwerk via:

mkfs.ext3 -j /dev/vol00/lvol0

mount /dev/vol00/lvol0 /mnt/lvol0

Ohne weitere Parameter erstellt der LVM das neue Volumen einfach am Beginn des freien Speichers innerhalb der Volume Group. Droht das Volumen überzulaufen, können Sie es jederzeit erweitern. Dazu gibt das Kommando lvextend die neue, absolute Größe des Laufwerks an:

lvextend -L 5G /dev/vol00/lvol0

Dabei wächst zunächst nur das Laufwerk, nicht aber das Dateisystem. Um das Dateisystem an die neue Größe des Volumens anzupassen, müssen Sie es zunächst aushängen, prüfen und dann vergrößern:

sync

umount /mnt/lvol0

e2fsck -f /dev/vol00/lvol0

resize2fs /dev/vol00/lvol0

mount /dev/vol00/lvol0

/mnt/lvol0

Sollten Sie Suse-Linux mit ReiserFS verwenden, finden Sie ein passendes Tool namens resize_reiser, um die Größe anzupassen. Früheren Linux-Versionen lag ein Tool namens ext2online bei, mit dem sich ein gemountetes Dateisystem vergrößern ließ. Dieses ältere Tool lässt sich leider auf modernen Distributionen mit Kernel 2.4.x nur mit Kernel-Modifikationen betreiben und liegt daher Redhat und Suse nicht mehr bei.

Sollte ein Volumen den Speicherplatz nur teilweise nutzen, können Sie es ebenso verkleinern. Dazu müssen Sie zunächst das Dateisystem reduzieren. Der Vorgang ist im Abschnitt »Bestehende Partitionen anpassen« beschrieben. Anschließend können Sie das logische Volumen mittels lvreduce verkleinern.

Abbilder für das Backup

Mit lvcreate können Sie neben neuen Volumina auch Snapshots bestehender Laufwerke erzeugen. Ein Snapshot enthält den eingefrorenen Inhalt eines LV zum Zeitpunkt des Snapshots. Ein solches Abbild kann dazu dienen, ein Dateisystem auf ein Band oder ein anderes Volumen zu sichern, ohne dabei Prozesse, die auf das eigentliche Laufwerk zugreifen, zu behindern oder anzuhalten. Zum Zeitpunkt der Erstellung belegt der Snapshot kaum Speicher. Jede Änderung am Original-Volumen lässt den Snapshot anwachsen, da dieser die Differenzen zum ursprünglichen Original sichert. Die Größe eines Snapshots müssen Sie daher passend berechnen. Benötigen Sie das Abbild nur wenige Minuten, können wenige Megabyte für den Snapshot genügen, wenn sich in dieser Zeit auch nur wenig am Original ändert. Läuft ein Snapshot über, deaktiviert er sich automatisch. Sie können natürlich über lvextend den Snapshot vergrößern, bevor das passiert. Ein Dateisystem-Resize fällt dabei nicht an. Snapshots haben Nur-Lese-Status. Um einen Snapshot des oben kreierten Volumens zu erzeugen, führen sie folgende Kommandos aus:

sync

lvcreate -L 200M -s -n snap1

/dev/vol00/lvol0

mount -r /dev/vol00/snap1

/mnt/snap1

Sobald Sie das Abbild nicht mehr benötigen, entfernen Sie es:

umount /mnt/snap1

lvremove /dev/vol00/snap1

Weitere LVM-Funktionen

Ohne zusätzliche Angaben nutzen lvcreate und lvextend beliebige freie Blöcke innerhalb der Volume Group. Ein logisches Volumen kann daher physisch über mehrere Platten verteilt liegen, was die Performance verlangsamt. lvcreate erlaubt, Volumina mit dem Status contiguos, also fortlaufend zu erstellen. Das so erzeugte Volumen nutzt nur zusammenhängenden Speicher. Im Zweifelsfall lässt sich ein solches Volumen später aber nicht mehr mit lvextend erweitern. Um mehr Performance zu bekommen, lassen sich Volumina auch mit Stripes erstellen. Der LVM verteilt dabei das Laufwerk blockweise über mehrere physische Disks der Volume Group. Als Parameter können sie die Zahl der Stripes und die Größe der verteilten Blöcke festlegen. Voraussetzung für gestripte Volumina ist, dass ihre Volume Group sich über mehrere Partitionen und/oder Laufwerke erstreckt. Gestripte Volumina lassen sich nicht auf zusätzliche Disks erweitern.

LVM-Tools mit der Endung »scan« geben Ihnen eine Übersicht über die Konfiguration. pvscan zeigt die zugewiesenen Platten und Partitionen, vgscan zeigt die Volume Groups, und lvscan listet die definierten logsichen Laufwerke auf. Tools mit der Endung »display« geben detaillierte Informationen über einzelne Geräte, Gruppen und Laufwerke. vgdisplay ohne Parameter listet alle Volume Groups und deren Konfiguration auf. Die Kommandos lvdisplay und pvdisplay erfordern jeweils die Angabe eines Devices, um weiterführende Informationen anzuzeigen.

Info Workshop-Setup

Für diesen Workshop nutzte Network Computing einen Intel Barebone-1-HE-Rackserver mit zwei 2,8-GHz-Xeon-Prozessoren, 2-Gbyte-Kingston-Speicher und zwei gespiegelten 160-Gbyte-IDE-Laufwerken. Als Basisbetriebssystem setzte die Maschine den Windows-2003-Enterprise-Server ein. Darauf wiederum lief der VMWare-GSX-Server 2.5.1. Die Workshop-Tests liefen in mehreren virtuellen Maschinen des VMWare-Servers mit Redhats neuer Open-Source-Distribution »Fedora Core 1«.

Tools mit der Endung »change« ändern Namen, Parameter oder Status einzelner Devices. lvchange -a n /dev/vol00/lvol0 würde beispielsweise das angegebene Volumen deaktivieren, dabei aber dessen Inhalt und den reservierten Speicher erhalten. Eine Reihe zusätzlicher Tools erlaubt, die Konfiguration von Volumen-Gruppen zu sichern oder wiederherzustellen. Hilfsmittel wie vgmerge oder vgsplit ermöglichen es, Volumen-Gruppen zusammenzuführen oder zu aufzuteilen. Vor der Verwendung von vgmerge müssen Sie eine Gruppe mit vgchange deaktivieren.

Weiterführende Informationen zum Logical Volume Manager unter Linux finden Sie in den man-Pages der jeweiligen Tools oder im LVM-Howto, dass Sie auf vielen Linux-Sites im Internet online abrufen können. [ ast ]


Jetzt kostenfreie Newsletter bestellen!

Matchmaker+