Netgear verkauft seit Ende des Jahres 2021 keine NAS-Systeme mehr.
Das ist schade, da ich mit meinem ReadyNAS RN204 sehr zufrieden war und bin. Seit 2015 tuckert es völlig unauffällig als allnächtliches Backup-Ziel vor sich hin.
Die Weboberfläche ist funktional und übersichtlich, darunter werkelt btrfs samt Snapshots, Quotas und Kompression auf einem mdadm-Raid. Es werden alle gebräuchlichen Netzwerkprotokolle (nfs, ssh, rsync, webdav,…) unterstützt, fancy Gimmicks gibt’s (zum Glück) keine.
ReadyNAS-OS basiert auf Debian 8(!), das jedoch von Netgear großflächig aktualisiert wurde und – Stand Februar 2024 – weiterhin wird. Außerdem hat man hat root-Zugang und kann Debian-Pakete installieren.
Zum Glück läuft ReadyNAS-OS auch auf echter, normaler PC-Hardware:
Netgear bietet ReadyNAS-OS zur Installation in VirtualBox an (https://github.com/ReadyNAS/sdk/wiki/Setup-ReadyNAS-OS-on-VirtualBox). Gedacht ist das für Entwickler, die Apps für ReadyNAS-OS entwickeln wollen. Das System ist bis auf’s letzte Bit komplett identisch zum ReadyNAS-OS auf den echten NAS-Geräten – und wird deswegen ebenso mit Updates versorgt.
Wer’s nachprüfen will: Die normalen Firmwareupdates von Netgear sind TAR-Archive mit einem 16384 Byte langen Header, den man vor dem Entpacken entfernen muss. Nach dem Entpacken erhält man das Root-Dateisystem (wieder als tar-Archiv), die initrd und den Kernel. Das VirtualBox-VMDK-Image enthält die identischen Dateien wie ein Firmwareupdate mit der selben Versionsnummer, nur zusätzlich noch einen Syslinux-Bootloader.
Unterstützte Hardware
Die Hardwareunterstützung von ReadyNAS-OS ist etwas eingeschränkt. Der Kernel bringt folgende Treiber mit für Netzwerk und SATA/SAS:
== NIC PCIe: == kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko kernel/drivers/net/ethernet/intel/e1000/e1000.ko kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko kernel/drivers/net/ethernet/intel/i40e/i40e.ko kernel/drivers/net/ethernet/intel/igb/igb.ko kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko kernel/drivers/net/ethernet/marvell/sk98lin/sk98lin.ko == NIC USB: == kernel/drivers/net/usb/asix.ko kernel/drivers/net/usb/ax88179_178a.ko kernel/drivers/net/usb/lan78xx.ko kernel/drivers/net/usb/pegasus.ko kernel/drivers/net/usb/r8152.ko kernel/drivers/net/usb/rtl8150.ko == SATA/SAS: == kernel/drivers/ata/libata.ko kernel/drivers/ata/ahci.ko kernel/drivers/ata/libahci.ko kernel/drivers/ata/sata_sil24.ko kernel/drivers/scsi/mpt3sas/mpt3sas.ko
Es werden also so ziemlich alle Intel- und Marvell/SysKonnect Netzwerkchips mit 1 GBit/s unterstützt, außerdem Intel-Chips mit 10 GBit/s (ixgbe-Treiber) und 40 GBit/s (i40e-Treiber). Des Weiteren Broadcom NetXtreme II mit 10 GBit/s (bnx2x-Treiber).
Ebenso funktionieren USB-Netzwerkadapter mit Chips von ASIX, Microchip, und von Realtek mit RTL8150 und RTL8152/RTL8153. Wer ReadyNAS-OS in einer VM betreiben möchte, wird sich über Unterstützung für die VirtIO-„Netzwerkkarte“ freuen.
Wer will kann zusätzlich einen USB-WLAN-Stick anstöpseln. ReadyNAS-OS unterstützt jedoch ausschließlich 802.11n-WLAN-Sticks mit den Chipsätzen Realtek RTL8188CU, RTL8188CUS und RTL8192CU. Eine Liste mit passenden USB-WLAN-Sticks gibt’s bei WikiDevi.
Für SATA/SAS funktionieren praktisch alle Chips (bis auf historische ohne AHCI), plus die älteren Silicon Image 3124, 3132 und 3531, sowie die im Firmenumfeld beliebten Broadcom/LSI SAS-Controller, die seit Jahren unter diversen Marken vertrieben werden.
Außerdem muss der Rechner im BIOS-Modus booten können. UEFI wird nicht unterstützt.
Installation
Bootmedium vorbereiten
Zum Booten kann entweder eine SD/CF/??-Karte in einem USB-Kartenleser benutzt werden, oder ein USB-Stick.
Zuerst von Netgear das VMDK-Disk-Image herunterladen und in’s RAW-Format konvertieren:qemu-img convert -f vmdk -O raw ReadyNASOS-6.6.0-x86_64.vmdk ReadyNASOS-6.6.0-x86_64.img
Anschließend ReadyNASOS-6.6.0-x86_64.img
als Image auf den USB-Stick oder die Speicherkarte schreiben:dd if=
(Das „X“ anpassen je nachdem welches Device USB-Stick/Speicherkarte eben hat)ReadyNASOS-6.6.0-x86_64.img
of=/dev/sdX
Falls ein USB-Stick benutzt wird muss dieser noch bootfähig gemacht werden – bei Speicherkarte-in-USB-Kartenleser ist das nicht nötig:
syslinux -i /dev/sdX1
dd conv=notrunc bs=440 count=1 if=/usr/lib/SYSLINUX/mbr.bin of=/dev/sdX
Booten
Dann vom USB-Stick (oder Speicherkarte) im BIOS-Modus booten.
Keine Panik: Der Bildschirm bleibt schwarz, es gibt keinerlei Ausgaben – das passt schon so! Gelegentlich blinkt das Festplattenlämpchen und die Platten klackern, aber das war’s dann auch. Bei echten Netgear-NAS-Geräten würde der Fortschritt des Startvorgangs in dem kleinen LC-Display angezeigt werden. Wer neugierig ist kann die Bootmeldungen per serieller Konsole auf ttyS0 mitverfolgen.
Nach ein paar Minuten Warten ist ReadyNAS-OS über die Weboberfläche zu erreichen (Benutzername: admin Password: password) und kann ganz normal eingerichtet werden. Um die IP-Adresse herauszufinden einfach in der Fritzbox oder den Logs des DHCP-Servers nachschauen, je nachdem was man eben hat.
Noch während des Einrichtens wird ein Update auf die aktuelle ReadyNAS-OS-Version angeboten, das man problemlos durchführen kann.
Der USB-Stick bzw. die Speicherkarte wird auch nach der Installation zum Booten benötigt! Also nicht abstecken.
SATA Hot-Swap und Stromsparen
Der SATA-Standard sieht Hot-Swap vor, d.h. SATA-Platten können im Betrieb getauscht werden. Damit das funktioniert, müssen in manchen BIOSen die SATA-Schnittstellen als „eSATA“ oder „Hot Swap“ eingestellt werden. Ansonsten merkt der Rechner zwar, dass eine Platte entfernt wurde, erkennt eine neu hinzugefügte Platte aber erst nach einem Reboot.
Für den Fall dass der Stromverbrauch noch mit Powertop oder entsprechenden udev-Regeln optimiert werden soll:
Vorsicht beim „SATA link power management“ und für die SATA-Controller vom „Runtime PM“: Wenn hier stromsparende Einstellungen gesetzt werden, funktioniert SATA Hot-Swap nicht mehr und man muss nach einem Plattentausch neu booten. So zumindest die offizielle Dokumentation. Je nach eingesetzter Hardware kann’s trotzdem funktionieren. Bei mir tut’s!
Und: Wer Wert auf zuverlässiges Netzwerk legt und/oder Wake-On-LAN nutzen will, sollte zumindest bei Intel-Netzwerkchips keine Stromsparoptionen bei den Netzwerkchips aktivieren.
Hier meine Stromspar-udev-Regeln (Datei /etc/udev/rules.d/99-strom-sparen.rules)
:
##### SATA Link Power Management ##### # Bei manchen SATA-Chips kein funktionierendes Hotplug mit "medium_power" oder "min_power" # Von "min_power" wird heftig abgeraten! # Bei mir funktioniert Hotplug mit "medium_power" SUBSYSTEM=="scsi_host", KERNEL=="host*", ATTR{link_power_management_policy}="medium_power" ##### I2C ##### ACTION=="add",SUBSYSTEM=="i2c", TEST=="power/control", ATTR{power/control}="auto" ##### PCI Runtime PM ##### # Vendor- und Device-PCI-IDs werden mit "lspci -nn" angezeigt ## Intel-Netzwerkkarten überspringen, verlieren bei aktiviertem Runtime PM gelegentlich den Link ACTION=="add",SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x15b7", ATTR{power/control}="on", GOTO="pci_pm_end" ACTION=="add",SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0x1533", ATTR{power/control}="on", GOTO="pci_pm_end" ## SATA-Hotplug geht oft bei aktiviertem Runtime PM nicht - bei mir schon # Intel Onboard SATA #ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0xa102", ATTR{power/control}="on", GOTO="pci_pm_end" # ASMedia PCIe-Karte #ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1b21", ATTR{device}=="0x1166", ATTR{power/control}="on", GOTO="pci_pm_end" ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{power/control}="auto" LABEL="pci_pm_end" ##### USB ##### ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto" ##### Enable power save mode for Intel HDA ##### ACTION=="add", SUBSYSTEM=="module", DEVPATH=="/module/snd_hda_intel", \ RUN="/bin/sh -c 'cd /sys/module/snd_hda_intel/parameters; echo 1 > power_save; echo Y > power_save_controller'"
Zu viel Zeit sollte man hier nicht investieren: Den einzigen am Strommessgerät sichtbaren Unterschied macht die „SATA Link Power Management“-Regel ganz oben.
Fazit
Funktioniert schnell und stabil. Selbst das zeitgesteuerte Ein- und Ausschalten funktioniert. Topp!
Ich hab’s hier am Laufen auf einem Fujitsu D3346-ATX-Mainboard, einem Xeon E3-1225 v5 und 8 GByte DDR4-ECC-RAM. Irgendein alter Celeron oder Athlon und 2 GByte RAM müssten jedoch auch reichen.
Mein Mainboard hat zwei Intel-1 GBits/s-Netzwerkanschlüsse. Diese können in ReadyNAS-OS per Link Aggregation zusammengeschaltet werden. Da das Mainboard nur sechs SATA-Anschlüsse hat, hab ich noch weitere SATA-Anschlüsse mit einer billigen PCIe-Karte nachgerüstet (ASM1166-Chip, 6 SATA-Ports).
Das Ganze steckt in einem Silverstone SST-CS380 V2-Gehäuse. Das Gehäuse ist sehr windig, hat aber acht praktische Hot-Swap-Einschübe für 3,5″-SATA/SAS-Platten. Außerdem gibt es zwei 5 1/4-Zoll-Plätze, so dass in Summe zehn Platten verwendet werden können.
Was nicht funktioniert
Lüfterdrehzahl sowie CPU- und Systemtemperatur werden nicht in der Weboberfläche angezeigt.
Stromverbrauch (mit zehn 4-TByte-Platten)
- 180 Watt beim Hochfahren der Platten
- 90 Watt bei Benutzung
- 68 Watt im Leerlauf
- 25 Watt im Leerlauf mit Platten im Standby
Vergleichbare NAS-Systeme bewegen sich in ähnlichem Rahmen.
Optimierungen
Desktop-Platten im RAID
Falls es bei einem Sektor Leseprobleme gibt, versuchen Desktop-Platten den störrischen Sektor ziemlich lange einzulesen bevor sie aufgeben. NAS-Platten geben ihre Leseversuche dagegen ziemlich schnell auf – die Daten liegen ja eh für gewöhnlich redundant im RAID. Laut „Quelle Internet“ sind Platten während dieser Leseversuche nicht empfänglich für Kommandos von außen, was dazu führen kann, dass Desktop-Platten als vermeintlich kaputt aus dem RAID geworfen werden, anstatt dass nur der eine Sektor als defekt markiert wird.
Bei den meisten Desktop-Platten lässt sich aber einstellen, dass sie sich wie NAS-Platten verhalten sollen und Leseversuche früher aufgeben. Dazu einfach eine Datei /etc/udev/rules.d/99-hdd-scterc.rules
mit diesem Inhalt anlegen und einen Reboot durchführen:
SUBSYSTEM!="block|machinecheck", GOTO="md_timeouts_end" ENV{DEVTYPE}!="partition", GOTO="md_timeouts_end" IMPORT{program}="/sbin/mdadm --examine --export $devnode" ACTION=="add|change", \ ENV{ID_FS_TYPE}=="linux_raid_member", \ ENV{MD_LEVEL}=="raid[1-9]*", \ TEST=="/sys/block/$parent/device/timeout", \ TEST=="/usr/sbin/smartctl", \ PROGRAM!="/bin/sh -c '/usr/sbin/smartctl -l scterc,70,70 /dev/$parent && exit 0 || exit 1'", \ RUN+="/bin/sh -c 'echo 180 > /sys/block/$parent/device/timeout'" LABEL="md_timeouts_end"
Netzwerk tot: „Detected Hardware Unit Hang“
Nach ein paar Wochen Laufzeit ging plötzlich das Netzwerk nicht mehr. Im Syslog stand was von „Detected Hardware Unit Hang“. Das Problem scheint mit Intel-Netzwerkchips häufiger aufzutreten. Im Internet finden sich einige Berichte dazu – und auch die Lösung: Offloading abschalten! Dazu eine Datei /etc/udev/rules.d/99-disable-offloading.rules
mit folgendem Inhalt anlegen und einen Reboot durchführen:
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*" \ RUN+="/sbin/ethtool -K %k tso off gso off"
In der Tat: Das Problem ist auch nach mehren Monaten Uptime nicht mehr aufgetreten.
Borg-Backup
Netgear liefert leider keine aktuelle Version von borg mit. Um hier auf aktuellem Stand zu sein, einfach https://github.com/borgbackup/borg/releases/download/1.2.8/borg-linuxold64 herunterladen, nach /usr/local/bin/borg
umbenennen und mit chmod +x
ausführbar machen./usr/local/bin/borg
ssh-Update
Das bei Debian 8 mitgelieferte OpenSSH 6.7 ist arg eingestaubt. Ich habe darum OpenSSH 7.4 aus Debian 9 zurückportiert. Zum Installieren:
curl -s http://apt.geierb.de/repokey.asc | apt-key add - echo "deb http://apt.geierb.de/ jessie readynas" >> /etc/apt/sources.list apt-get update apt-get install openssh-client=1:7.4p1-10+deb9u7~readynas1 openssh-server=1:7.4p1-10+deb9u7~readynas1 openssh-sftp-server=1:7.4p1-10+deb9u7~readynas1