SD-Speicher statt Festplatte
Statt einer Festplatte reicht oft auch Solid State Speicher. Doch statt der teuren Solid State Disks fährt man in vielen Fällen mit einer CF-Karte und einem Adapter auf das 44 Pin IDE-Format günstiger.
Ältere Notebooks verdienen sich ihr Gnadenbrot oft als Firewall oder Printserver. Für diesen Einsatszweck ist eine handelsübliche Festplatte deutlich überdimensioniert. Die Alternative: ein ausreichend grosser CF-Speicher zusammen mit einem Adapter, der den Einbau in den Laufwerkschacht des Notebooks erlaubt.
Nach dem Einbau lässt sich das Betriebssystem (bei mir Debian) problemlos installieren. Der Vorschlag des Installers am Ende der "Platte" eine Swappartition vorzusehen erleichtert die späteren Tausch der CF-Karte falls dies mal nötig sein sollte; doch dazu später mehr.
Da NAND-Speicher nicht allzu oft beschrieben werden kann gilt es, Schreibzugriffe zu vermeiden oder zumindest massive zu reduzieren.
Ein erster Ansatzpunkt hierfür ist die /etc/fstab. Hier wird die SWAP Partition abgeschaltet (eine Firewall sollte keine 80 MB Hauptspeicher benötigen). Zusätzlich wird die Modifizierung der atime einer Datei unterbunden. Schliesslich werden stark beanspruchte Verzeichnisse wie /var/log/ und /tmp/ in eine RAM-FS ausgelagert, hier stören Schreibzugriffe nicht.
Letztlich sieht meine /etc/fstab wie folgt aus:
# /etc/fstab: static file system information. # # proc /proc proc defaults 0 0 #/dev/hda1 / ext3 defaults,errors=remount-ro 0 1 /dev/hda1 / ext3 nodiratime,noatime,rw,errors=remount-ro,commit=120 0 1 #/dev/hda5 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 # RAM FS none /tmp/ tmpfs defaults,size=2M none /var/log/ tmpfs defaults,size=2M none /var/run/ tmpfs defaults,size=2M none /var/lock/ tmpfs defaults,size=1MSchreibzugriffe auf die Festplatte lassen sich auch bündeln. Die folgenden Einträge in der /etc/sysctl.conf sorgen dafür, dass Daten lange im RAM bepuffert werden, und dann 'in einem Rutsch' auf die Platte geschrieben werden
#How many seconds after a read should a writeout of changed files #start (this is based on the assumption that a read will cause an #otherwise spun down disk to spin up again). vm.laptop_mode=120 #How often the kernel should check if there is "dirty" (changed) #data to write out to disk (in centiseconds). vm.dirty_writeback_centisecs=12000 #How old "dirty" data should be before the kernel considers it old #enough to be written to disk. It is in general a good idea to set #this to the same value as dirty_writeback_centisecs above. vm.dirty_expire_centisecs=12000 #The maximum amount of memory (in percent) to be used to store #dirty data before the process that generates the data will be #forced to write it out. Setting this to a high value should not be #a problem as writeouts will also occur if the system is low on memory. vm.dirty_ratio=10 #The lower amount of memory (in percent) where a writeout of dirty #data to disk is allowed to stop. This should be quite a bit lower #than the above dirty_ratio to allow the kernel to write out chunksx #of dirty data in one go. vm.dirty_background_ratio=1Weitere Schreibzugriffe lassen sich sparen, wenn Schreibzugriffe von syslog asynchron stattfinden. Dafür einfach vor jeden Dateinamen ein '-' schreiben. Ein kurzer Ausschnitt aus der /etc/syslog.conf
# /etc/syslog.conf Configuration file for syslogd. # # For more information see syslog.conf(5) # manpage. # # First some standard logfiles. Log by facility. # auth,authpriv.* -/var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* -/var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log uucp.* -/var/log/uucp.log . .Noch zwei Worte zur SWAP Partition: Wie oben schon geschrieben sollte die Verwendung von SWAP nicht nötig sein. Diese Partition dient eher als Puffer zum Ende des Speicherbereiches hin. Selbst bei identischen CF-Speichern kann die Grösse leicht variieren. Das führt zwangsweise zu Problemen wenn der CF-Riegel mal mit 'dd' auf einen anderen Riegel kopiert werden soll. Sollte der neue Speicher etwas kleiner sein als der neue wird die Patenpartition nicht beschädigt! Mit vmstat 1 lässt sich der Erfolg messen. In der Spalte 'bo' sollten nur selten und nur kleine Zugriffe vermerkt sein.
kuiper:~# vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 5024 8252 39428 0 0 0 0 301 23 10 5 84 0 0 0 0 5024 8252 39428 0 0 0 0 305 16 0 3 97 0 0 0 0 5024 8252 39428 0 0 0 0 288 12 0 3 97 0 0 0 0 5024 8252 39428 0 0 0 0 294 14 0 5 95 0 0 0 0 5024 8252 39428 0 0 0 0 287 10 0 1 99 0 0 0 0 5024 8252 39428 0 0 0 0 290 18 0 2 98 0 0 0 0 5024 8252 39428 0 0 0 0 284 10 0 2 98 0 0 0 0 5024 8252 39428 0 0 0 0 336 12 0 4 96 0 0 0 0 5024 8252 39428 0 0 0 0 366 10 0 7 93 0Um Problemen mit schlechtem Speicher (immerhin funktionieren die SMART Tools bei solch einem Konstrukt nicht) aus dem Weg zu gehen entschloss ich mich das Notebook alle 6 Monate runterzufahren, den Speicher auszubauen und mit 'dd' in einem Cardreader hart zu backupen.