Sun Fire X4540 for ZFS

Vor einiger Zeit kam ich über Twitter User smay4finger (Danke Stefan) an zwei Sun Fire X4540 Server. Diese wurden von Sun Microsystems speziell für das ZFS (Zettabyte File System) entwickelt. Das X4500 System ist zwar schon etwas in die Jahre gekommen, eignet sich aber sehr gut um mit ZFS zu experimentieren. Besonders interessant ist die BETA von TrueNAS CORE, welche die neuste Version von OpenZFS mitbringt. TrueNAS CORE verspricht viele Verbesserungen in der Performance und eine neue Version von FreeBSD. Die genauen Infos dazu stehen im diesem Blogbeitrag.

Meine Erfahrung mit TrueNAS CORE auf der X4540 waren überraschend gut, wenn man bedenkt das nur zwei AMD Opteron 2356 Quad-Core zum Einsatz kommen und das System mit relativ langsamen RAM arbeitet. Zum Test des ZFS Pools habe ich eine 10G Netzwerkkarte Chelsio CC2-N320E-SR auf einen von drei PCIe Ports verbaut. Der ZFS Pool besteht aus 44 Festplatten, eine L2ARC Cache SSD und LOG SSD. Der Pool wurde in 4 vdev unterteilt mit je 11 Platten im raidz2.

ZFS Replikation FreeNAS > TrueNAS CORE BETA1

Ein kurzer Test des 10G Netzwerks mit iperf ergab, dass über 6G konstant übertragen werden. Mehr gibt der PCIe nicht her. Nun habe ich von einer anderen FreeNAS Maschine eine ZFS Replizierung gestartet. Die Übertragungsgeschwindigkeit von FreeNAS zum TrueNAS war etwas ernüchternd lief aber mit 200-300 MB/s stabil. Bei der Replizierung von TrueNAS zum FreeNAS zeigte sich eine starke Steigerung mit etwas über 600 MB/s im Peak.

Die Versuche habe ich mit einem älteren Entwicklungsstand von TrueNAS CORE durchgeführt. Mit der BETA2 wurde jetzt eine weitere Performancesteigerung von bis zu 30% angekündigt. Nach dem Update werde ich die Tests wiederholen und genauer dokumentieren.

Warum experimentiere ich überhaupt auf der alten Sun Fire X4540? Zum Einen möchte ich zeigen, dass auch ältere Hardware sehr gut für ZFS geeignet ist – zum Anderen bietet sie mir eine tolle Möglichkeit ZFS und seine Eigenschaften zu verstehen, ohne mein reguläres Live-System zu verändern. Die verschiedenen Konfigurationsmöglichkeiten eines Pools zu testen, Auswirkungen von vdev, cache und log zu untersuchen sowie ein Gefühl für die Performance und Stabilität des Systems zu bekommen. Zum Abschluss noch ein Video von der X4540:

English version:

Some time ago I got two Sun Fire X4540 servers via Twitter user smay4finger (Thanks Stefan). These were developed by Sun Microsystems especially for the ZFS (Zettabyte File System). The X4500 system is a bit old, but it’s very good for experimenting with ZFS. Especially interesting is the BETA of TrueNAS CORE, which brings the latest version of OpenZFS. TrueNAS CORE promises many performance improvements and a new version of FreeBSD. The exact information about this can be found in this blog post.

My experience with TrueNAS CORE on the X4540 was surprisingly good, considering that only two AMD Opteron 2356 Quad-Core are used and the system works with relatively slow RAM. To test the ZFS pool I installed a 10G network card Chelsio CC2-N320E-SR on one of three PCIe ports. The ZFS pool consists of 44 hard drives, a L2ARC Cache SSD and LOG SSD. The pool was divided into 4 vdev with 11 disks each in raidz2.
A short test of the 10G network with iperf showed that over 6G is constantly streamed. The PCIe does not provide more. Next I started a ZFS replication from another FreeNAS machine. The transfer speed from FreeNAS to TrueNAS was a bit poor but ran stable around 200-300 MB/s. Replication from TrueNAS to FreeNAS showed a strong increase with a little over 600 MB/s at peak.

I did the tests with an older version of TrueNAS CORE. With BETA2 a further performance increase of up to 30% has been announced. After the update I will repeat the tests and document them more precisely.

Why am I experimenting on the old Sun Fire X4540 at all? On the one hand I want to show that older hardware is also very well suited for ZFS – on the other hand it gives me a great opportunity to understand ZFS and its features without changing my regular live system. To test the different configuration options of a pool, to investigate the effects of vdev, cache and log and to get a feeling for the performance and stability of the system.