My existing home file server is now 10 years old. It has grown organically
through the years. The original configuration used noisy SCSI drives with DAT
tape backup. The household was happy when I retired my original SCSI drives --
they sounded like a jet airplane taking off. Today's configuration uses
ATA/100 drives with rsync'ed backups to an external USB drive.
The usage cases have changed. Originally the server was expected to provide
email services for the household. Later, I added support to netboot my vaxen.
Now, the household wants file sharing, timemachine backups, samba shares. I
was spending too much time trying to fix the old server. Time to start over
again. I decided that using one server for all services might not be a good
idea anymore. I am already using another box for the firewall -- time to
continue this trend. The server becomes a collection of servers that I can
individually change, instead of a one big monolithic server. I will start with
a new box for serving files and for backups -- a NAS device.
I reviewed some of the NAS consumer devices that are available today. I
decided to avoid them. My existing server lasted for so many years because I
was able to make changes to the hardware and software. I was not convinced
that a consumer device would be so flexible. So, I am going to make my own NAS
-- what do I want it do?
- What services would be required for the household?
-
- daapd server support
- timemachine backup server support
- samba/NFS/AFP/tftp server support
- backup files using ssh/rsync interface
- What OS features are required?
-
- software RAID support
- fast snapshots
- detect and recover from disk data corruptions
- Hardware requirements?
-
- SATA drives
- intel x86 CPU
- low power footprint
- just needs to be fast enough to serve files
- PCI slot
- use existing parts, if possible
I discovered the Asus ITX-220 motherboard while searching an online catalog. I
will purchase it with 2G of RAM. I can use an existing ATX case. The
motherboard only supports 2 SATA drives -- I already have a SATA PCI card with
two more SATA ports. I figure that 4 SATA drives should be enough for now -- 3
for the RAID and 1 for a rsync'ed backup.
ZFS would be a match for my requirements, but this will limit my OS choices.
This was a worry, until I heard about the FreeNAS project. Using FreeNAS with
ZFS is a perfect match. I should be able to boot the new box off an old USB
key.
At first, I considered my ITX-220 ZFS FreeNAS project to have a low chance of
success. I would divide the project into a number of milestones and
evaluate the project when one of the milestones failed:
- hardware install
-
I put the new motherboard, in the old case. I needed a new cable to allow my
new motherboard to work with the my older ATX power supply. It booted without
problems.
- software install
-
I put the lastest FreeNAS image on an old USB key. It took a couple of
attempts to get FreeNAS to boot of the USB key. During last attempt, I
copied the raw image to the beginning of the key and ignored the parition
table.
- ZFS
-
I put in two SATA drives. I have never used ZFS before. I read an online
example and configure the two drives into a big raidz pool. This step took
the longest amount of time. I tried using "compression=gzip" and the box
started to run too slow -- the "lzjb" compression scheme seems to work
better.
- backup
-
I copied files to the NAS. Just in time -- I saw this error on my existing
older server:
wd1a: error reading fsbn 236276797 of 236276768-236276799 (wd1 bn 236276860; cn 234401 tn 10 sn 22)wd1: (uncorrectable data error)
- servers
-
I used the FreeNAS GUI to enable AFP. I followed the steps on a blog to
setup time-machine backups. I setup daapd and samba shares. The tricky
part was testing that the new server works, as expected, with the existing
clients. The speed of the NAS appears to be fast enough for the existing
clients.
- increase size of raidz pool
-
Not supported by ZFS. In the future, I will make a backup and re-create
the raidz pool with three drives.
In summary, it all just works. In about 9+ hours, I had a working NAS.
References: