Pfsense auf SSD - best practice(?)



  • Guten Tag!

    Zum setup:
    pfsense (2.1.15) auf APU1D4 (=APU1C4 mit suspend/resume fix) auf einer SSD (dieser) laufen.
    memstick-serial-amd64 release von pfsense um genau zu sein.

    Ich möchte das maximum an Lebensdauer aus meiner SSD rausholen, da dieses System im Echtbetrieb beim Kunden laufen soll/wird. Ich habe sehr viel über den Umgang mit pfsense<->SSD gelesen und festgestellt, dass man einiges tun kann. Was ich bereits gemacht habe:

    • TRIM aktiviert.
    • NCQ aktiviert.
    • /var /tmp als ramdisk gemounted - schreibzugriffe erfolgen ins RAM und auf auf die ssd

    Es existieren ein großer thread über pfsense<->ssd installs aber selbst wenn ich den ganzen thread durchkrame - er verwirrt merh als dass er aufschlüsse liefert. Es gibt dort zu viele Meinungen.
    http://lists.pfsense.org/pipermail/list/2013-June/004164.html

    Jetzt habe ich einige Fragen zu denen ich einfach gern eine solide Aussagen hätte:

    • Als image: nanobsd (4gb) auf die ssd schrweiben um lebensdauer zu vergrößern, oder obig genantes?
      Es gibt leute die sagen, dass man mit ner ssd + trim support + ramdisks locker das normale image nehmen kann. (memsick, serial). Also nicht das nanobsd. Ist das wirklich so? Andere sagen, dass eine SSD kein halbes Jahr mit dem normalen image durchhält. Gibt es jemanden der zu nanobsd raten würde wenn es um SSDs geht, weil er z.b. schlechten erfahrungen gemacht hat? (aber bitte kommt nicht mit kingston low-end ssds der ersten generation an und sagt dass diese nach 2m defekt war.)

    • Wenn man den proxy squid betreibt, loggt dieser standardmäßig nach /var (also in die ramdisk) - damit sollte es keine schreibvorgänge auf der ssd geben, oder? (außer config-änderungen)

    • Habt ihr erfahrungen mit externen usb platten und pfsense? Ich würde auf dauer, nur um ganz sicher zu gehen, die logs gern komplett auslagern. Hat jemand erfahrungen damit, wo ich einstellen kann, dass die logs an einen anderen speicherort ausgelagert werden? Bin ich blind, oder gibt es diese einstellung in pfsense nicht? (außer bei squid)

    Gruß!



  • Hallo,
    Ich bin kein Expert, eigentlich Newbie, kann aber einiges sagen :

    • Als image: nanobsd (4gb) auf die ssd schrweiben um lebensdauer zu vergrößern, oder obig genantes?

    Mit dem Nanobsd 4 GB ist dir wohl klar dass du am Ende nur 1.8 GB Disk space zur Verfügung haben wird ja ?
    Wenn du auf SSD gehen willst, nutze lieber die full installation.

    Andere sagen, dass eine SSD kein halbes Jahr mit dem normalen image durchhält

    das würde mich jetzt mal auch interessieren. :) Ich habe bisher noch nichts gehört darüber.

    Ich würde auf dauer, nur um ganz sicher zu gehen, die logs gern komplett auslagern.

    Macht ein jeden Fall Sinn. Syslog Server aufsetzen, syslog.conf konfigurieren, in Pfsense remote logging enable, und squid event auf local5 oder 6 senden.

    • TRIM aktiviert.
    • NCQ aktiviert.
    • /var /tmp als ramdisk gemounted - schreibzugriffe erfolgen ins RAM und auf auf die ssd

    Da ich mir jetzt eine mSSD hole, würde mich auch interessieren wie das hier geht ? also TRIM NCQ usw :) Danke schon mal !



  • Das kann ich dir kurz und kanpp erklären. Ich hatte trouble beim aktivieren, allerdings hab ich da jetzt schon gesicherte Aussagen drüber:

    TRIM:
    ahci_load="YES" in die /boot/loader.conf.local eintragen
    kldload ahci
    reboot
    beim start, taste 7 fürs laoder prompt
    im loader prompt tippen: ufs:/dev/ada0s1a (je nach chipset: ada0;ada1;ada4 - einfach durchprobieren)
    /bin/sh
    vi /etc/fstab - mountpoint richtig setzen. durch obige steps ist deine ad disk zu ada geworden. Das muss hier berichtigt werden.
    reboot - "pfsense will now boot like before if you have edited fstab correctly."
    boot zum single user mdoe
    tunefs -p /
    trim ist off
    tunefs -t enable /dev/ada0s1d
    tunefs -p /
    trim ist an
    reboot

    das ist quasi eine angepasste version dieses artikels, der mir geholfen hat.

    NEQ:
    war per default aktiviert. kannst es überprüfen wenn du beim boot den log mitließt. gibt dafür auch bestimmt einen befehl.

    RAMDISKS auf /var und /tmp:
    in der pfsense oberfläche:
    https://<pfsenseip>/system_advanced_misc.php
    siehe anhang
    Um den erfolg zu sehen kannst du auf der console eingeben: mount

    /dev/ada0s1a on / (ufs, local, noatime, synchronous)
    devfs on /dev (devfs, local)
    /dev/md0 on /tmp (ufs, local)
    /dev/md1 on /var (ufs, local)
    devfs on /var/dhcpd/dev (devfs, local)
    

    Um das ganze nochmals zu testen: pfsense sagt dir im dashboard die ram-auslastung. schieb per scp einfach ne 1gb datei doer so nach var oder tmp und schau dir an, dass dir ram-auslastung hoch geht und nicht die disk-auslastung! (cool)


    </pfsenseip>



  • Was mir gerade einfällt: Für die nachwelt die auch verbessern will:
    Ich habe dem mountpoint / in der /etc/fstab weitere optionen gegeben: noatime,sync

    das macht ihr mit
    vi /etc/fstab
    /dev/ada0s1a            /              ufs    rw,noatime,sync 1      1

    erklärung von noatime:
    https://wiki.archlinux.de/title/Noatime

    erklärung von sync
    "Nach jedem Schreibvorgang wird geflusht, also der Pufferinhalt sofort auf den Datenträger geschrieben. Das ist z.B. bei USB Memory Sticks sehr hilfreich, weil man sie somit nicht manuell aushängen muss (bei Automountsystemen). "



  • Vielen Lieben Dank !
    Ich probiere das alles aus sobald ich die mSSD bekomme und gebe Bescheid :)


  • Rebel Alliance Moderator

    @trisse sync in der fstab macht IMHO keinen Sinn. Da die SSD nicht als HotPlug genutzt wird, ist der Sinn von Sync nicht gegeben. Wenn der Puffer also immer sofort geschrieben wird, wird das FS Caching ausgehebelt und jedes kleine Byte immer gleich hart auf die SSD geschrieben. noatime als Option mag durchaus sinnvoll sein, wird zumindest gern auch bei Linux Systemen mit SSD empfohlen.

    Bei den SSDs wird es sehr wahrscheinlich auf die Qualität der Flash Bausteine ankommen. Wie du schon meinst, SSDs mit MLC erster Generation werden hier sehr schnell ausgenuckelt sein, SLCs oder aktuelle MLCs mit optimierteren Controllern sollten auch mit und durch TRIM Support eigentlich auch nicht weniger gestresst werden als in einem normalen PC, wo man Sie für Linux, Windows und Co einsetzt und auch hier steht man ja nicht nach einem halben Jahr beim Händler und die SSD ist kaputt (meine OCZs, Samsungs und Crucials halten bislang alle noch durch ohne einzigen Ausfall. Die erste OCZ Vertex 3 ist dabei schon knapp 3 Jahre alt).

    Je kleiner die SSD ist umso eher werden auch die Zellen häufiger beschrieben. Wenn noch dazu erweitertes Logging im Spiel ist, würde ich auf eine externe Log Lösung ausweichen (Syslog Server oder Logging Systeme auf ELK-Stack bspw.)

    Geht es um minimalen Verschleiß ohne großes Logging oder Pakete kann man gern auf die NanoBSD Variante ausweichen, allerdings sind hier nicht alle Pakete verfügbar, deshalb oft nur bei relativ einfachen Setups nutzbar. Ansonsten sollte man mit der Vollinstallation und einigen Anpassungen (Logging ins RAM oder auf Logserver) ganz gut auskommen.



  • Hey,

    ich kann dir zumindest mal kurz meine Erfahrungen in Verbindung mit SSD's mitteilen. Ich habe insgesamt 5 pfSense Installationen, welche auf SSD's betrieben werden.

    2x Rechenzentrum auf Intel 330 60GB, Betrieb seit Februar 2012 und bisher keine Probleme.
    2x Office auf Intel 330 60GB, Betrieb seit Oktober 2012 und bisher keine Probleme.
    1x Außenstelle, Intel 525 30GB mSATA, seit Dezember 2013 und bisher keine Probleme.

    Auf allen habe ist das Standard Image aufgespielt, ohne weitere besondere Anpassungen gemacht zu haben.

    Kann also nichts negatives berichten :)


  • Rebel Alliance Moderator

    @crashi: Ahoi und danke für die Erfahrungen. Hast du bei den Installationen irgendwelche schreib-intensiven Dienste laufen? Also Logging-Schweine wie Squid, Snort & Co? ;) Und ist auf den Installationen TRIM aktiv (automatisch)? Das wäre noch interessant zu wissen. Für Trim Setting kann man auch mal kurz ein

    tunef2 -p /

    in der Console abfeuern.

    Grüße



  • @JeGr

    Also auf den beiden Firewalls im Rechenzentrum läuft zusätzlich Snort. Auf den Firewalls im Büro läuft dagegen ein Squid. Und auf der kleinen pfSense Box in der Außenstelle läuft kein weiterer zusätzlicher Dienst. Die restlichen Einstellungen wie das Logging auf Disk etc. sind default. Sprich es wird alles auf die SSD geschrieben. Keine Ram Disk oder ähnliches vorhanden.

    Trim ist ebenfalls deaktiviert :)

    tunefs: POSIX.1e ACLs: (-a)                                disabled
    tunefs: NFSv4 ACLs: (-N)                                  disabled
    tunefs: MAC multilabel: (-l)                              disabled
    tunefs: soft updates: (-n)                                disabled
    tunefs: gjournal: (-J)                                    disabled
    tunefs: trim: (-t)                                        disabled
    tunefs: maximum blocks per file in a cylinder group: (-e)  2048
    tunefs: average file size: (-f)                            16384
    tunefs: average number of files in a directory: (-s)      64
    tunefs: minimum percentage of free space: (-m)            8%
    tunefs: optimization preference: (-o)                      time
    tunefs: volume label: (-L)

    Wie gesagt nicht wirklich etwas optimiert, läuft aber dennoch bisher alles sehr stabil und zuverlässig.



  • Hallo,

    mein Beitrag ging grade flöten, keine Lust nochmal alles zu schreiben daher hier die Kurzfassung:

    Schau dir Berichte über die Langlebigkeit der SSDs an:
    z.B: http://techreport.com/review/26523/the-ssd-endurance-experiment-casualties-on-the-way-to-a-petabyte/3

    Ich selbst verwende sowohl privat als auch im Businessbereich SSDs seit der 1.GEN und hatte nur mit dieser (1.GEN) auch Probleme - seitdem komplett fehlerfrei.

    Privat habe ich einen Server mit einer EVO 1TB seit 01/2013 im Betrieb (15 VMs - darunter pfSense mit Snort/Squid) bis heute lächerliche 15TB TBW

    Daher meine Empfehlung:
    Nimm das volle Image und freu dich über eine schnelle und langlebige FW

    Lg

    Edit: PS: TRIM ist für die Lebensdauer vollkommen egal - TRIM sorgt dafür, dass die Schreibperformance etwa gleichbleibend ist.


  • Rebel Alliance Moderator

    @hege: Trim ist nicht ganz egal, wenn es um die Lebensdauer geht. Es mag kein riesiger Aspekt sein, aber Trim sorgt auch für Verbesserung bei Write Amplification und Wear Leveling, was den Zellen insgesamt eine bessere und gleichmäßigere Auslastung bietet womit sie sich weniger abnutzen. Insofern nicht vollkommen egal und hat nicht nur mit Schreibperformance zu tun.

    Grüße



  • @JeGr:

    …Write Amplification und Wear Leveling,..

    Wenn die SSD so wenig freien Speicher hat, dass TRIM für besseres Wear Leveling benötigt wird, dann hat man mMn ein grundsätzliches Problem das es zu lösen gilt.

    Lg



  • Danke erstmal für die ganzen Infos! Scheint so als kratze ich da bisher nur an der Oberfläche ;)

    @hege:

    bis heute lächerliche 15TB TBW

    Mich würde stark interessieren, wie du das monitorst. Ich würde auch gerne eine art statistik haben, die mir sagt, wie viele bytes gestern/heute/im letzten monat/gesamt geschrieben wurden.. möglich?



  • @trisse:

    ..Ich würde auch gerne eine art statistik haben, die mir sagt, wie viele bytes gestern/heute/im letzten monat/gesamt geschrieben wurden.. möglich?

    möglich? - klar
    wie? - das ist die andere Frage :)

    Bei mir lese ich die Smart-Werte aus, ich bin mir sicher, dass sich mittels Nagios (oder was auch immer) auch so etwas wie von dir gewünscht ergeben wird.


Log in to reply