Für die redundante Anordnung von Speicher unter Freunden von Pinguinen hat sich das Linux-Software RAID etabliert. Implementieren lassen sich damit beispielsweise:
Die Motivation hinter dem Projekt war es, einfach mal auszuprobieren, ob sich wirklich mit Diskettenlaufwerken RAIDs aufbauen lassen. Mir war bewusst, dass beim Linux-Software RAID der Devicetype des Geräts weitesgehend egal war - um eben sowohl mit IDE- als auch mit SCSI/SATA/SAS-Geräten RAIDs aufbauen zu können. Aber mit Floppys?
Für dieses Projekt habe ich eine kleine Debian Linux VM angelegt. Auf dieser werden im folgenden ein Software-RAID implementiert und diverse Programme zum Datenaustausch eingerichtet.
Auf eBay habe ich für dieses Experiment einige USB-Diskettenlaufwerke ersteigert. Letztendlich habe ich 7 Geräte zusammengetrommelt. Da mein Notebook aber keine 7 USB Ports hat, habe ich zwei kleine 4-Port USB 2.0 Hubs zur Anbindung der Diskettenlaufwerke benutzt.
[PC] | STROM---[HUB]---Floppy | |\---Floppy STROM---[HUB]---Floppy | | \---Floppy | | ---Floppy | \-----Floppy Floppy
Bevor das RAID angelegt wird, ist es wichtig, dass alle USB-Floppys erkannt wurden:
vm-debian:~# dmesg [ 1989.711037] scsi 1:0:0:0: Direct-Access NEC USB UF000x 1.50 PQ: 0 ANSI: 0 CCS [ 1993.646018] sd 1:0:0:0: [sdb] Attached SCSI removable disk ... [ 1997.708672] scsi 2:0:0:0: Direct-Access NEC USB UF000x 1.60 PQ: 0 ANSI: 0 CCS [ 1998.364916] sd 2:0:0:0: [sdc] Attached SCSI removable disk ... [ 2008.259838] scsi 3:0:0:0: Direct-Access NEC USB UF000x 1.50 PQ: 0 ANSI: 0 CCS [ 2009.113761] sd 3:0:0:0: [sdd] Attached SCSI removable disk ... [ 2022.827853] scsi 4:0:0:0: Direct-Access SMSC USB FDC 2.10 PQ: 0 ANSI: 0 CCS [ 2025.579417] sd 4:0:0:0: [sde] Attached SCSI removable disk ... [ 2041.259219] scsi 5:0:0:0: Direct-Access Y-E DATA USB-FDU 3.04 PQ: 0 ANSI: 0 CCS [ 2041.324987] sd 5:0:0:0: [sdf] Attached SCSI removable disk ... [ 2051.777417] scsi 6:0:0:0: Direct-Access Y-E DATA USB-FDU 4.01 PQ: 0 ANSI: 0 CCS [ 2053.234643] sd 6:0:0:0: [sdg] Attached SCSI removable disk ... [ 2779.199789] scsi 7:0:0:0: Direct-Access CITIZEN X1DE-USB 1001 PQ: 0 ANSI: 0 CCS [ 2779.669255] sd 7:0:0:0: [sdh] Attached SCSI removable disk
Ich habe die USB-Geräte an den Rechner angeschlossen und mittels passender Funktion in VMWare Workstation durchgereicht.
Wichtig ist es auch, die Disketten für die Verwendung im RAID vorzubereiten. Hierfür werden sie überschrieben, um vorherige Inhalte zu entfernen. Normalerweise werden Medien zur Verwendung in einem Software-RAID formatiert. Doch mit Floppys funktioniert das leider nicht - sie lassen sich zwar partionieren, doch mdadm lehnt die Verwendung der Partition mit der Begründung „too small“ ab.
vm-debian:~# dd if=/dev/zero of=/dev/sdb dd: Schreiben in /dev/sdb: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 175,175 s, 8,4 kB/s vm-debian:~# vm-debian:~# dd if=/dev/zero of=/dev/sdc dd: Schreiben in /dev/sdc: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 173,893 s, 8,5 kB/s vm-debian:~# vm-debian:~# dd if=/dev/zero of=/dev/sdd dd: Schreiben in /dev/sdd: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 172,846 s, 8,5 kB/s vm-debian:~# vm-debian:~# dd if=/dev/zero of=/dev/sde dd: Schreiben in /dev/sde: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 172,337 s, 8,6 kB/s vm-debian:~# vm-debian:~# dd if=/dev/zero of=/dev/sdf dd: Schreiben in /dev/sdf: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 152,831 s, 9,6 kB/s vm-debian:~# vm-debian:~# dd if=/dev/zero of=/dev/sdg dd: Schreiben in /dev/sdg: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 162,811 s, 9,1 kB/s vm-debian:~# vm-debian:~# dd if=/dev/zero of=/dev/sdh dd: Schreiben in /dev/sdh: Auf dem Gerät ist kein Speicherplatz mehr verfügbar 2881+0 Datensätze ein 2880+0 Datensätze aus 1474560 Bytes (1,5 MB) kopiert, 248,928 s, 5,9 kB/s
Software-RAIDs müssen vom Kernel unterstützt werden - die meisten Distributionen haben diesen Support schon seit Jahren kernelseitig aktiviert. Bei „Eigenbau-Distributionen“, wie beispielsweise CRUX oder Gentoo, muss das allerdings beim „Kernelbau“ berücksichtigt werden. Interessant sind hier die folgenden Einstellungen bei der Kernelkonfiguration:
[*] Multiple devices driver support (RAID and LVM) <M> RAID support <M> Linear (append) mode <M> RAID-0 (striping) mode <M> RAID-1 (mirroring) mode <M> RAID-10 (mirrored striping) mode (EXPERIMENTAL) <M> RAID-4/RAID-5/RAID-6 mode ...
Für die Verwaltung und Implementation von Software-RAIDs wird unter Linux das Toolkit mdadm benötigt - unter Debian gibt es hierfür ein gleichnamiges Paket:
vm-debian:~# apt-get install mdadm Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Lese Status-Informationen ein... Fertig ...
Ein Software RAID-5 wird mit dem folgendem Befehl auf den vorbereiteten Medien erstellt:
vm-debian:~# mdadm --create /dev/md0 --level=5 --raid-devices=7 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh mdadm: array md0 started.
Der Befehl benötigt bei den alten Floppys einiges an Zeit - besonders am Ende ist ein lustiges Rattern auf allen Geräten zu sehen.
Zeit für einen kleinen Speedtest - mittels hdparm wird das folgende Kommando abgesetzt:
vm-debian:/# hdparm -tT /dev/md0 /dev/md0: Timing cached reads: 2 MB in 16.03 seconds = 127.74 kB/sec Timing buffered disk reads: 2 MB in 14.04 seconds = 145.87 kB/sec
Doch wie sieht es im Umgang mit Dateien aus? Für diesen Zweck wird Samba installiert, um eine Windows-Netzwerkfreigabe zu erstellen:
vm-debian:/# apt-get install samba Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Lese Status-Informationen ein... Fertig Die folgenden zusätzlichen Pakete werden installiert: samba-common Vorgeschlagene Pakete: openbsd-inetd inet-superserver smbldap-tools ldb-tools Die folgenden NEUEN Pakete werden installiert: samba samba-common 0 aktualisiert, 2 neu installiert, 0 zu entfernen und 46 nicht aktualisiert. Es müssen 7711kB an Archiven heruntergeladen werden. Nach dieser Operation werden 21,2MB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren [J/n]? j ... Fertig. Starting Samba daemons: nmbd smbd.
Für Samba wird nun folgender Inhalt in die Konfigurationsdatei geschrieben:
[global] workgroup = WORKGROUP server string = %h server obey pam restrictions = Yes passdb backend = tdbsam pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . unix password sync = Yes syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 dns proxy = No panic action = /usr/share/samba/panic-action %d [FDDRAID] path = /mnt/test read only = No create mask = 0664 directory mask = 0775 guest ok = Yes
Der folgende Befehl verifiziert die Konfiguration und zeigt ggf. Fehler auf:
vm-debian:/# testparm Load smb config files from /etc/samba/smb.conf Processing section "[FDDRAID]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
Nach mounten des RAID-Arrays und einem Neustart des Samba-Dienstes steht die Netzwerkfreigabe zur Verfügung:
vm-debian:/# mount /dev/md0 /mnt/test -o sync vm-debian:/# /etc/init.d/samba restart Stopping Samba daemons: nmbd smbd. Starting Samba daemons: nmbd smbd.
Bevor das Volume gemountet werden kann, benötigt noch ein Benutzer ein Samba-Passwort zur Authentifizierung - für diesen Testzweck tuts auch root:
vm-debian:/# smbpasswd -a root New SMB password: Retype new SMB password:
Im Kurztest mit Samba komme ich leider nicht über 10,3 kb/s hinaus. Wenn man die Ergebnisse mit hdparm vergleicht, muss das entweder an Samba oder an der RAID-Konfiguration liegen.