A little bit about my experience building up a NAS system for home use.
The Plan
The Plan: Build a Network Attached Storage system for a home network for storing iTunes data (windows and Mac), and general archiving.
Nice to have:
- DHCP server / Local DNS / DNS Cache.
- Time Machine Backup.
Hardware
The Jetway mini-ITX system for my home NAS project has the following components:
- Jetway JNC9C-550 Mini-ITX motherboardwith Intel(R) Atom(TM) CPU N550 @ 1.50GHz
- 4 x 3Gb/s SATA II internal ports
- 4 x USB 2.x external ports
- 1 x PCI slot, 1 x Mini PCI-E slot
- 2x1GB of DDR3 1333MHz SODIMM RAM
- SATA daughter board (ADPE4S)so I could plug in 4 extra hard drives for storage. (88SE6145 SATA II PCI-E controller)
- See also http://www.jetway.com.tw/jw/ipcboard_view.asp?productid=625&proname=ADPE4S-PB
- Note: Linux didn't like it, so I used the PCI slot for a 4 port Promise PCI SATA card.
- 1x30G SSD
4x1.5T Seagate ST31500541AS HDDs - 5900 RPM, 3G SATA, 32MB Cache

These drives ended up being a bad idea. Two of them have failed as of 4/05/2013. See Replacing a Failing Hard Drive in a ZFS Pool
- Fractal Design Array R2 NAS Chassis
- 6 x 3.5" drive bays
- 1 x 2.5" drive bay
- 300 watt PSU
The 4 HDDs will be used as storage, and the smaller SSD will be used for booting the OS.
Building it up
The case is pretty simple, not a lot to connect. The motherboard is also simple since the CPU is pre-installed.
- Unscrew and remove the top panel.
- Unscrew and remove the disk tray.
- It took a little bit of force to get the disk tray unstuck. I guess the padding on the rails that it hangs on had adhered to the metal.
- Unscrew and remove the power supply. It blocks access to space where the motherboard goes.
- Unpack the motherboard, install the RAM sticks. The CPU is already installed, so nothing to do there.
- Install the back panel.
- Place the motherboard into the case, align with the back panel.
- Bend up the tabs covering the NIC ports.
- Install the motherboard.
- Align the motherboard correctly on the back panel.
- Install it with the screws provided with the case.
... TODO: POST test, disk tray install ...
Installing an OS
I decided to try Fedora 14 first, as I have some experience with Fedora.
Create a Bootable Live USB
Since the system doesn't have a CD/DVD drive, I have to use a USB stick to install the OS.
See Fedora - Making a Live USB
Boot the Live USB
- Insert the USB drive into the target system (the Jetway mini-ITX in my case).
- Reboot the system, press F11 (to boot select)
- Select 'USB' as the boot device
- Wait for Fedora to boot up from the USB device (may take a while)
- Click Login, admire fancy Fedora 14 desktop artwork.

- Click on the Install to Hard Diskicon on the desktop.
- I chose to install to the SSD, wiping out anything else.
- Restart the system, booting from the SSD. Answer the remaining questions.
After updating, about 2.5G was used on the SSD. Not bad considering it has a full GNome GUI and lots of stuff.
Set up some basics
- <ctrl-alt-F2> to get a console window, log in as root.
Give users in the
wheelgroup sudo privileges:Un-comment this line
Put my own user account into the wheel group:
Configure
sshdto start on boot:Start
sshd:
After that, I can do everything from my regular workstation via ssh.
Install vim, wget, yum-utils, rpmreaper:
Static IP
Since I am going to want to use this machine as a server, possibly a DHCP / DNS server, it should be set up with a static ip.
See Static IP configuration for Linux
Marvell SATA RAID Controller
See Marvell SATA RAID Controller - Linux Not Happy
In the end I went with a Promise PCI SATA card. Fedora recognized it right away, all the hard drives showed up appropriately:
Yay! Five drives, two partitions on the first drive.
Installing ZFS
One of the best things about ZFS is it has a really easy to configure software RAID. Also it has RAIDZ, which is like RAID6 (and supposedly a little better). Since ZFS has open source license conflicts with the Linux kernel the easiest installation is zfs-fuse, which adds some overhead due to the 'fuse' layer. Since this system is for home use the overhead of fuse isn't going to be noticeable, so zfs-fuse it is!
Testing zfs-fuse
Make sure that the mount point directory does not exist in the filesystem before creating the ZFS mountpoint! If you create the mount point directory in the normal filesystem then zfs will fail to mount the pool when the system boots. In this example, the mountpoint is |
This example makes a RAIDZ pool called testpool using the four HDDs connected to the Promise IDE SATA card (sdb, sdc, sdd, sde), and mounts them on /mnt/testzfs:
iozone can be used to compare the performance of the SSD/ext4 filesystem with the zfs-fuse/HDD filesystem. First, we need to install it:
This will install iozone in /opt/iozone. Running this benchmark in the home directory will give us some idea of the performance of the SSD/ext4 filesystem:
Setting up ZFS for NAS Storage
See Setting up ZFS for NAS Storage
DHCP and DNS
Installing and Setting up a DHCP Server
See:
Installing and Setting up a DNS Server
See DNS Server Setup
SAMBA
NFS
See NFS Server Setup
Clients
Mac OSX
Automatically mount SAMBA drives
To automatically mount SAMBA drives on login:
- System Preferences->Accounts
- Select a user (usually the current user)
- Click Login Items, then '+'
- Click on the server and the share you want to have mounted on login.
See http://support.apple.com/kb/HT4011