Das DNS-323 bietet die Möglichkeit, an den externen USB-Anschluss Speichermedien wie Flash-Speicher oder Festplatten anzuschließen. Inspiriert durch Ulis Tutorial habe ich daher eine 2,5″ Festplatte an den USB-Anschluss angehängt, auf der mein fun_plug mitsamt Squeezeboxserver läuft. Doch obwohl die aktiv genutzten Programme auf dem externen USB-Laufwerk liegen, weigert sich mindestens eine der beiden internen Festplatten dauerhaft ausgeschaltet zu bleiben bzw. läuft teilweise sogar dauerhaft. Dies ist dem Swap-Speicher zu verschulden, der auf den beiden internen Festplatten angelegt ist.
cat /proc/swaps
offenbart die gegenwärtige Verteilung der Swaps:
Filename          Type           Size    Used      Priority /dev/sda1         partition      530104 62188  -1 /dev/sdb1         partition      530104 0          -2
Wie zu erkennen, liegt auf beiden Festplatten eine ca. 500 MB große Swap-Partition, wobei sda1 (rechtes Laufwerk) eine höhere Priorität genießt, also primär genutzt wird. Da dieser irrsinnig große Swapspeicher selten über 500 MB genutzt werden dürfte, erklärt sich damit, warum vor allem die rechte Festplatte nie aufhören will, sich zu drehen.
Nun erstellen wir zunächst eine leere Daten mit der Größe von z.B. 512 MB auf dem USB-Laufwerk:
dd if=/dev/zero of=/mnt/HD_a2/usbstorage/swapfile bs=1M count=512
Anschließend muss die Datei zu einem Swapfile konvertiert werden:
mkswap /mnt/HD_a2/usbstorage/swapfile
Nun kann das swapfile als nutzbarer Swap-Speicher ins System eingebunden werden:
swapon -p 0 /mnt/HD_a2/usbstorage/swapfile
Die beiden Swaps auf den internen Platten können nun ausgebunden werden:
swapoff /dev/sda1 swapoff /dev/sdb1
Bei Ausklinken werden automatisch alle verwendete Daten auf dem Swap auf das höchstpriorisierte Swap, also den USB-Speicher verschoben werden.
Eine letzte Kontrolle mittels
cat /proc/swaps
sollte uns nun den USB-Speicher als einziges Swap-Laufwerk bestätigen:
Filename       Size     Used   Priority /mnt/HD_a2/usbstorage/swapfile  524280 45964  0
Damit sind nun zunächst alle wichtigen Schritte abgeschlossen und nach Ablauf der eingestellten Wartezeit werden nun auch beide Platten den spindown vollziehen. Über
/bin/dmesg | /bin/grep HD1 | /bin/tail -1
bzw.
/bin/dmesg | /bin/grep HD2 | /bin/tail -1
lassen sich die letzten Aktionen der Platten überwachen:
*           HD1 stand by now!       * *           HD0 stand by now!       *
Das Swapfile bleibt auf dem USB-Stick dauerhaft erhalten, muss jedoch beim Boot wieder neu eingebunden werden. Das lässt sich leicht automatisieren. Ich habe dazu die Datei fun_plug.init mit dem Editor vi bearbeitet:
vi /ffp/etc/fun_plug.init
Dort an den Anfang, z.B. unter “# fixup firmware issues” anfügen:
swapon /mnt/HD_a2/usbstorage/swapfile -p 0
Da zum Zeitpunkt der Ausführung noch keine weiteren Dienste wie MediaTomb, Twonkey, SqueezeboxServer etc. geladen sind, ist der Swap auf der internen Platte noch ungenutzt. Ich empfehle daher, diese für den Notfall zu belassen und nicht zu löschen. Denn schlägt die Einbindung des Swaps auf dem USB-Speicher aus irgendwelchen Gründen fehl, würde das NAS ganz ohne Swap da stehen und vermutlich einige Dienste nicht mehr laden.
Anschließend speichern und schließen. Nach einem reboot sollte die Swap-Tabelle dann so aussehen:
cat /proc/swaps
 Filename Type Size Used Priority /dev/sda1 partition 530104 0 -1 /dev/sdb1 partition 530104 0 -2 /mnt/HD_a2/usbstorage/swapfile file 524280 35800 0
Fertig!
Sobald das NAS fertig geladen hat und die Wartezeit für den Spindown vorrüber ist, sollten dann auch endlich beide Festplatten sauber abschalten!