A few months ago, an ASUSTOR representative emailed me with an offer I couldn't refuse. He saw my blog post and video about building the fastest Raspberry Pi NAS, and asked if I wanted to put up my best Pi-based NAS against an Asustor NAS.
We settled on the Asustor Lockerstor 4, with dual-2.5 Gbps networking, 4 GB of RAM, and a quad-core Intel CPU. To make things even, he convinced Seagate to send four 8TB IronWolf NAS drives. I don't fancy he thought it would be a good show if I kept on using my four used WD GreenPower drives from 2010!
I posted a video of the hardware build process for both NASes on my YouTube channel:
But this blog post will focus on what it takes to build your own Raspberry Pi NAS, with the best specs and performance you can possibly get—on a Raspberry Pi, at least!
Parts Required
Here's the official parts list, with all the items I ended up using in my NAS (note: Amazon links are affiliate links):
If you watched the video closely, you may notice I swapped out a few parts for my final build that I used for benchmarking:
- The Exacq PCIe Switch with the TI chip was giving me a little trouble sometimes, so I swapped it out for the IO Crest board.
- I dropped the separate molex power adapter and the 12V 5A barrel plug power adapter for the PCIe switch and Pi, respectively, and plugged them both directly into the PC PSU. For the Pi, it required a molex to floppy adapter cable, but that was easy enough to find on Amazon.
For comparison, the Asustor Lockerstor 4 I'm using costs $549—almost $200 more in total. But the Lockerstor does offer a number of features the Pi doesn't (like dual NVMe SSD caching over a faster bus, dual 2.5G network ports that it can actually saturate (the Pi only has a single PCIe Gen 2 lane), and... an actual case to hold everything).
Assembly
I already knew from previous research for my Raspberry Pi PCI Express Database that I could get a Rosewill RC-20001 2.5GBASE-T adapter working if I compile the kernel with Realtek 8169/8168/8101/8125 ethernet support
. And I knew I could get an IOCrest JMB585 5-port SATA card working by enabling AHCI SATA support
and Marvell SATA support
.
But I hadn't yet had them working together. So I tried them with an Exacq PCIe switch I had laying around, and surprisingly, on my first try (with a custom kernel), they both powered up and worked.
A few boots later one or the other card wouldn't show, so I swapped out the Exacq switch for an IOCrest switch, and they both were recognized every time.
I used two sets of two Phanteks 3.5" Hard Drive brackets I found on Amazon to hold the drives themselves. I actually like how these cages provide plenty of room for airflow around the drives, and hold them very well, along with rubber grommets to help prevent vibration-related issues.
For power, I was leery of putting everything into my Redragon 700W PSU, since I had released an older Redragon's magic smoke earlier this year doing some testing... but eventually, I decided to connect everything to it, including the 4 SATA drives, the PCI Express switch (using a Molex to floppy adapter), and the Raspberry Pi itself (using another Molex to floppy adapter).
The final setup (well; almost final as pictured—I swapped PSUs for the Pi after taking this picture) is... not nearly as tidy as the ASUSTOR you see sitting in the background:
What's Next?
Well, I know you want benchmarks and a verdict, but I just haven't had the time yet to compile everything, especially since I ran into a few speed-bumps—with both the Pi and the ASUSTOR.
So software setup, benchmarks, more details about how they run, and my final word on whether I'd go with a Pi NAS (for the value and experience) over an ASUSTOR (or something similar like a QNAP or Synology NAS) is coming next week.
I can reveal that I can get consistent network copies at 200 MB/sec on the Pi over a 2.5 Gbps connection. But the ASUSTOR can go a bit further still.
Comments
Before you ask: yes, I have been trying to get a better PCI switch board that would either have 16x slots or open-ended 1x slots... since last October. I have ordered three since then. Each time, after a couple months, the seller cancels the order and apologizes that they couldn't ship the board.
So yeah... PC parts shortages are affecting everyone, even weirdos like me who are building Pi NASes.
While not quite as fast, just using the USB 3 port with a hub, and connecting HDDs and/or SSDs via USB3, and sharing via NFS or SAMBA would be a lot cheaper, use a Pi4, and not require a custom kernal.
Especially for mist of us that only have 1Gbps lical networking anyway.
John this sounds awesome. Can you share a link to a build?
When I watched Jeff's video I also thought about the stuff I could do away with to reduce costs, such as the PCIe extender card.
If all you need is a basic setup:
$35-55 Raspberry Pi 4 2-4GB
$10-15 Case
$10 Power Adapter
$10 32GB microSD card (SanDisk Extreme A1 recommended)
$65-90 Total for base hardware (might be cheaper if you find kits on sale)
Just add USB3 HDDs (two USB3 ports built-in on the RPi 4) and optionally a USB3 hub if you need more than two drives.
Then install and setup openmediavault:
https://wiki.omv-extras.org/doku.php?id=installing_omv5_raspberry_pi
I just did this project last weekend with a spare RPi 4 kit and portable HDD. The complete hardware and software setup took less than 1 hour.
I've seen WD Elements/Easystore 14TB and 16TB go on sale for $200 and $260 respectively so will be using those for final setup (no RAID, just automated rsync backups).
John this sounds awesome. Can you share a link to a build?
When I watched Jeff's video I also thought about the stuff I could do away with to reduce costs, such as the PCIe extender card.
I'm interested in doing exactly that. Are you having any kind of problems with the power needed for the drives? Are the USBs in the Pi delivering enough power?
Does this setup work with Ubuntu? Ubuntu does offer OS for the CM4, and I would expect it to work with the drives, but it would be nice to know if anyone has tried it. I have used a regular Pi 4 with USB drives, and have had a few years of success with that, but I think what you've put together here would be more reliable, even if it doesn't look quite as pretty.
The releases of Ubuntu 21.10 or earlier (including 20.04 LTS) do not yet have support for Raspberry Pi PCIe SATA usage. They use Linux kernel 5.13 or earlier, and I think support is in 5.15 or upcoming 5.16. Short of compiling your own kernel, Raspberry Pi OS is the only way to go as of December 2021. Officially, that's 32-bit, but there is a work-in-progress version of 64-bit to consider.