Marc's Public Blog - Linux Hacking


vvv Click on the categories below to see other topic specific pages vvv



>>> Back to post index <<<

π 2026-04-16 01:01 in Computers, Linux

Upgrading a 29 year old linux install and 16 year old server

My main home linux server, called gargamel, was actually first built in 1997, with an early version of debian (slink) that did not yet support apt-get, just to say how old that was. The impressive part is that my current gargamel server (a dual core duo built back in 2008 (Intel i3 2100T dual core CPU), where I built the entire server from scratch, motherboard, case, CPU, RAM and all. Later, I was able to upgrade the CPU to a quad core (Core(TM) i7-3770 CPU @ 3.40GHz), the biggest that would fit in that motherboard, and maxed out the memory to 32GB, which was useful for a few things, including operating over 20 terabyte filesystems: some pictures of gargamel here

Old pictures:

Dual PIIi Xeon with 10x SCSI drives
Dual PIIi Xeon with 10x SCSI drives

Then I upgraded it to 10x hot swappable Sata drives which I upgraded over time
Then I upgraded it to 10x hot swappable Sata drives which I upgraded over time

Old motherboard with dual CPU before dual core existed, WinTV capture card and sound card
Old motherboard with dual CPU before dual core existed, WinTV capture card and sound card

then it was time to upgrade that old board
then it was time to upgrade that old board

new version with single dual core I3 2100T (so obsolete today) and later upgraded to a quad core i7-3770
new version with single dual core I3 2100T (so obsolete today) and later upgraded to a quad core i7-3770

It's impressive that the server has run non stop since 2010, and outside of the CPU and RAM upgrade, maxed to what that motherboard would allow, I only upgraded hard drives and that's it. It had a few failures, pretty much all related to drives, and I think the power supply actually survived the entire time.
That said, it was literally a 32bit debian install (upgraded many times) from 1997, so it's literally going to turn 30 years next year. 30 years without ever re-installing, and just upgrading userland and kernels on a per need basis. I could have done a full userland upgrade to 64bit, but to save myself some upgrade work, I kept most things 32bit while having a 64bit kernel and a few utilities like btrfs-tools in 64bit, as required by some kernel interfaces. So, who here has installed windows (or hell, even linux) and kept it upgraded without ever re-installing for 30 years?

That said, the hardware being more than 15 years old, did a good job, but it's really old and not power efficient anymore. At the same time, after 25+ years of having big disk arrays (I had up to 26 drives spinning early on, read up here, and settled on 2 arrays of 5 drives, or 10 drives running), it was finally time to switch to solid state drives (aka flash drives). Of course, those had been around for quite a while, but I had to get enough of them at a reasonable enough price. It wasn't my original plan, but after some ebay buying, I got another 12 SSDs to supplement the 6 4TB ones I already had, and ended up with 18 4TB drives. Now, I just needed a new server :)

Attempt to upgrade gargamel with an rPi5

I figured I would go for low power server, but I got a bit too optimistic and tried a Raspberry Pi 5, split its M2 PCI bus 4 ways. On paper, I got things to work, but in real life a single lane PCI split 4 ways with a PCI switch, once it's running 3 SATA cards and 18 drives, some cheap DRAM-less ones that can hang quite a while before they ack, ended up causing PCI timeouts and resets that crashed one or more sata cards and ruined the raid arrays I tested.

Now, trying an rPi5 was not entirely crazy as I successfully upgraded my 2 internet facing servers magic and moremagic to rPi5 and while I did encounter some power issues with high performance Samsung M2 PRo SSDs crashing due to lack of M2 slot power (which given that all that power comes from a tiny ribbon cable, is not very surprising), the Pi5s were otherwise pretty stable and replaced some huge power hungry (200 to 400W) obsolete dell servers.

Here are the related posts:

  • Magic v5: From Dell Poweredge 2950 to Raspberry Pi 5
  • Attempt to replace my 60TB Spinning Rust NAS with a Raspberry Pi 5 with Quad PCI Splitter and 18 2.5 Sata SSDs TLC and DRAM-less TeamGroup QLC drives: Unreliable single Lane PCI bus Under Load
  • Long story short, I was able to run 2 SSDs and 18 drives on a rPi5, but that was too much PCI traffic to go through a quad bus splitter, it worked until it didn't a bus timeout reset all the ports and crashed the Sata controllers:



    So, no, running 2 or 3 Sata controllers and 18 SATA drives on a rPi5 is not reasonable sounding, and indeed does not work.

    Moving from 2x 5 drive Sata Raid5s to 18 Sata SSDs

    After retiring my SCSI drives (73GB and a few rare 180GB ones), I went to Sata and multiple iterations from 1TB drives, 2TB, 4TB, 6TB and 12TB for the last array. I just upgraded one array at a time when the previous array was getting too full and the drives too old:

    I loved those 5 drive triple height hot swappable sata carriers
    I loved those 5 drive triple height hot swappable sata carriers

    First, I used a Sata Port Multiplier which had performance issues and obviously split the Sata bandwidth by 5, but at the time it was acceptable although array rebuilds did suck. As I increased the drive sizes from 1TB to 12TB, array rebuilds became more and more unbearable, so I tried to find reasonably priced (less than $500) Sata cards with 10 ports or more, but turns out those were rare, and some like and adaptec card I found, had terrible bios and firmware and insisted in trying to do its crappy RAID which I was never going to use (that was Adaptec Series 7 2274500-R 71605ESinglePCI-Express 3.0 x8 Low Profile SATA / SAS RAID Controller Card). That Adaptec card had 16 ports, awesome, but no real direct access to each port, it was very hard to even query the drive's SMART status due to the hardware raid crap in the middle...
    Eventually I found the RocketRAID 2720 which only supported 8 ports, but with another silicon image 3124 which supported another 4 ports, allowed me to run the 10 ports as direct connect. It did require some special expensive splitter cables, but it worked overall and wasn't terribly priced.

    For switching to SSDs, I knew switching to NVMEs was not going to be reasonable, first because they cost a fortune, and second because I wouldn't find a way to connect enough of them to a motherboard, so I Went to the Sata SSD route. While they are limited to 600MB/s, with 18 of them, that's still 10.8GB/s of bandwidth or 86Gbit/s, which is more than I'd be able to get from a motherboard anyway, so going to the SATA route was not terrible. I didn't need insane bandwidth, just 60TB of SSD storage at decent enough speed (faster than the hard drives they were replacing)
    So, I settled with 3 Sata controllers running at PCIe 3.0 speeds, which around 1GB/s per card, only the speed of 2 SSDs shen I'd plug 6 of them in each card, but that's still 3GB/s or 18Gbit/s of combined bandwidth across 3 PCIe slots, which is plenty.

    tried 3 different sata cards
    tried 3 different sata cards

    it's a bit crowded, so it's good to label the cables to know where they go
    it's a bit crowded, so it's good to label the cables to know where they go

    Moving from an rPi5 to a quad M2 lane N355 StoneStorm server

    After losing a couple of weeks building and testing that rPi5 solution, I had to admit that it was not going to work, and even if it did, dividing a single PCI lane bandwidth by 4, only to use 9 port sata cards, diving that 4th by 9 again, would negate any performance advantage from NVME drives.

    I asked Google Gemini was was the next best low power solution to run all my drives, and it first suggested a N150 system. I quickly found out that N355 as a more recent and more powerful than the older N150. Once I had settled on N355, gemini recommended a few systems that had 4 NVME slots, and one of them was from CWWK ( https://cwwkpc.com ). Their StoneStorm N355 server is amazing in how much it packs in such little space. After picking it and setting it up, I did struggle with working on it and wiring, as things are very cramped and most things are hidden under the quad NVME daughter board.

    This is how the server is meant to be used (although I found out later, that the daugherboard would not have enough power to deal with the peak demands of PRO drives):


    And instead, I did this (I used 3 cards to spread out the I/O load over 3 PCI lanes, whereas on rPi5 it was a single lane split 4 ways, so that wouldn't work)

    spreading the I/O load across 3 M2/PCI sata cards
    spreading the I/O load across 3 M2/PCI sata cards

    At this point, I need to note that on a money standpoint, those M2 sata cards are incredibly cheap (around $40 or less) while getting a full size PCIe Sata card that can do 9 drives, costs up to 10 times more, and often includes some crap raid firmware I didn't want. So, on top of being so compact, those cards are amazing value compared to using a bigger server that doesn't offer 4 NVME slots, but actual PCI slots.

    one downside is the chips get warm, so I had to add a fan to keep them cool so they didn't crash
    one downside is the chips get warm, so I had to add a fan to keep them cool so they didn't crash

    Of course the server is not setup to power external SATA drives, it has enough power for its own systems, and does include 2 onboard connections for 2 extra Sata drives directly connected to the motherboard, but not past that. I solved this by using external SSD enclosures, that unfortunately didn't provide their own power and required both 5V for the drives and 12V for the fans. As it turns out, I was not able to find external 12V/5V power supplies that had enough amps for 18 SSDs, so I made my own using a separate 40A %v power supply that could be boosted up to account for voltage sag, and a separate 12V power supply to run the fans in the enclosures. In the end, it looks like this:


    Replacing the N355 StoneStorm server quad M2 daughterboard due to its weak 3.3V Voltage Regulator and lack of amps

    Despite this, I ended up with my arrays crashing, gemini helped analyse the logs and confirmed that the sata chips were crashing due to voltage sag, PCI/M2 3.3V that came from the M2 daugherboard. Turns out that the voltage regulator on that board was only good for 7A on a good day, and mine partially failed under load (having an NVME PRo drive didn't help as those take extra power)


    By then my system wouldn't really work anymore, I needed a new daughterboard, so I ordered one from CWWK but that meant a one week+ delay with shipping from china (by then the servers were not available on amazon 2 day shipping anymore). So I discussed this with Gemini, and it gave me enough help to find the right 3.3V Vreg I could order overnight and how to wire it on my failed board:


    ` The board I built only had a 5A 3.3V Vreg, I was not able to find a 10A one, but it survived until limited load while the new board arrived. When I finally got it, I found out that the new board was actually a new version with an upgraded regulator that can sustain closer to 10A at 3.3V, which was exactly what I needed. The new board even had a dual pin power input to receive a bit more 12V power from the motherboard:


    The main problem was that the new board design was incompatible with the metal plate I had from the old one, so I contacted CWWK to inform them that they should ship both the plate and daughterboard at the same time, and they nicely sent me the correct plate which wasn't absolutely required for things to work, but provided EMI shielding between the motherboard and the PCI/M2 slots:

    the old metal plate just didn't work with the new daughterboard (see the voltage regulator hitting the plate)
    the old metal plate just didn't work with the new daughterboard (see the voltage regulator hitting the plate)

    This page has more details on the daughterboard Vreg emergency repair ( StoneStorm N355 M2 Daughterboard Repair with Gemini )

    Review of the rest of the CWWK StoneStorm N355

    As I alluded above, this server offers a lot in a small space, it's actually amazing how much it does offer if you use all of its IO. And at the time the price was incredible, only $350 without the RAM (now the price has unfortunately increased by $200). I didn't f around this time and just maxed out the RAM from the start, 48GB DDR5 for $472, even if RAM pricing had already doubled or tripled by then. Yes, the RAM cost 20% more than the entire PC, and it's probably even worse now (actually the RAM price almost doubled since I bought it!!!)
    If you want to know which mini PC exactly, I found this one:
  • amazon: https://www.amazon.com/dp/B0F6CBLCVH
  • CWWK: https://cwwk.com/products/cwwk-x86-p6-n150-n355-mini-pc-nas-4-x-m-2-nvme-x86-p6-mini-desktop-computer-with-2-x-i226-v-2-5gbe-lan-ddr5-micro-pc-2-display-wifi7-bt5-4-expandable
  • There are actually very few mini PCs that offer 4 M2 slots at all, so I was very happy google gemini helped me find it.

    The storage, the NVME drives I already had, I also had 6 4TB SSDs, so I had to buy 12 more to get 18, and that did cost a bit more than $2000 getting the cheapest 4TB drives I could find on ebay (while avoiding DRAM-less QLC, which are the worst).

    Without the metal place EMI shield, it's actually easy to make sure the pins go in the correct holes on the mainboard:


    But if you have the metal plate, in theory you can only slide it in the right way, but in my experience, that's dodgy, you're working blind, you don't really have feedback when you push it in, and it's sadly possible to be off by one, which could damage both the motherboard and the daughterboard. This is really the weakest point of this computer, the daughterboard is a pain to remove (lots of screws, including removing the M2 cards), and you never quite know if you're pushing it back in correctly. I did push it in wrong 3 times while working on it and it's only luck that caused no damage when I did that (but the system didn't turn on).


    This is what the motherboard looks like, with the single memory slot (so you need to take everything apart to change the memory). You can also notice the 2 white ribbon connectors for 2 sata drives, and the mini pin headers (not compatible with the regular motherboard headers that use bigger pins and bigger pitch).

    the M2 looking card in my hand is the connector/bridge for the daugherboard
    the M2 looking card in my hand is the connector/bridge for the daugherboard

    Now, I filled it every port and header, you can see ther serial header, the 2 Sata ones, and 2 USB2:


    The problem is nothing keeps those header plugs in, and they are not big, so they tend to pop out, and guess what, if they do, you have to take the entire PC apart again, including the painful removing of the M2 daughterboard:


    so my 'fix' was this, I put paper on top of the headers so that the pressure of the daughterboard would keep them in place
    so my 'fix' was this, I put paper on top of the headers so that the pressure of the daughterboard would keep them in place

    I'll be honest this is not ideal, but with my fix, it's workable, and again that's a lot of IO from a PC that small.

    The bios does support serial console on the single onboard serial port (on its own special small header), and after figuring out the non obvious bios options, I got it to work, but unfortunately it does not support serial break used by for sysrq over serial (a probelm for linux)


    it really wan't clear what COM0 was, apparently a direct connection to the CPU for debugging
    it really wan't clear what COM0 was, apparently a direct connection to the CPU for debugging

    turns out I did have to use COM1 (and ignore COM0)
    turns out I did have to use COM1 (and ignore COM0)

    after that, I could get the bios over serial, which made it easier to feed screens to gemini for help
    after that, I could get the bios over serial, which made it easier to feed screens to gemini for help

    So there you go, it was a bit tricky to setup, the M2 daughterboard update is greatly recommended if you somehow get the old one. Once I applied my fixes, it was amazingly stable under high load, and high IO, including putting way more M2 load and drives that this PC was ever built, for. Also, sales@cwwkpc.com did a great job with support and getting back to me when I needed help (to swap the metal plate).

    Future, 20 Camera Frigate NVR. Will N355 be enough?

    As a file server and I/O wise, I'm pushing that StoneStorm N355 beyond what it was meant to do, but it is running around 60TB over 18 SSDs without issues. As a file server, it's great. Now, as I write this, I'm setting up frigate NVR with up to 20 cameras and will see how that CPU handles the load, or if I'll need a bigger CPU to do this.

    But if I need a bigger machine, it may be tricky to find one that has 4 M2 slots, as they think one or two PCI slots are enough, when not only they are not for me, but getting a PCIe card that can handle 18 sata drives is actually quite expensive (about 10x more than my solution, and they often require custom cables instead of just SATA)

    Watch this space, I hope to have an update in a couple of months.


    More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 December 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 March 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 August 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024 September 2024 November 2024 July 2025 August 2025 October 2025 November 2025 April 2026

    >>> Back to post index <<<

    Contact Email