NAS based on Nexenta and ZFS
Wednesday, January 30th, 2008For some time now I have been flirting with the idea of getting myself a Network Attached Storage (NAS). I get excited about the idea of having all my important files and stuff on a single device that supports raid 1. I can then reinstall Ubuntu on my laptop as many times as I want without having to worry about moving data somewhere safe first. I will not have to give up my laptop to my wife because that is where we keep all our personal digital photos and videos and she really wants to send the latest snapshots of our daughter to her mother… NOW.
If you look at what is available on the market you can see that the cost of these devices are tremendous. The much cheaper alternative is to build something myself. I had a dual PIII 800MHz machine but I thought that was an over kill. I want this to consume the least possible amount of power and to run as cool as possible. When I found a old celeron machine at Uni I decided that I would put something together. I attached 3x 14GB IDE hard disks and a CD drive and had myself an ugly but functional machine.
I looked at FreeNAS which is based on monowall which in turn is a based on a minimal FreeBSD system. What is really cool about FreeNAS that it easily fits on a USB or CF disk and moves your machine towards being an appliance with all the benefits that include less heat and better reliability.
Being a bit paranoid I decided I would not accept anything less than ZFS for my data. I believe it is the only file system that detects silent data corruption. It also has a lot of hype surrounding it and I have being wanting to play around with it for a while. The current versions of FreeNAS do not have ZFS support, but when FreeBSD 7.0 comes out it will have native ZFS support. This means that FreeNAS will gain ZFS support at some stage. I, however do not want to wait.
Enter Nexenta, a distribution based on opensolaris with a GNU userland. I wasn’t completely at home, coming from a Linux background and I noticed that some of the command line tools support different command line options, but here is the best thing about Nexenta… It uses apt for its package management. I truly believe that apt is the best tool out there and is what drew me to Debian in the first place. It also has some nifty features like support for ZFS root file system and a tool called apt-clone that takes a ZFS snapshot of the system before major upgrades and allows you to revert if the upgrade goes wrong. All this without rebooting so no downtime. To summarize Nexenta is an interesting project and I will use it to build my NAS.
I installed Nexenta Alpha7 and created a zpool out of 2 of the disks changed the mount point to /mydata and shared it via NFS (ZFS has built in NFS/NFS4)
zpool create mydata mirror c0d1 c1d0 zfs set mountpoint=/mydata mydata zfs set sharenfs=on mydata
After a while I realized that the Alpha7 version was not the latest and I wasn’t able to upgrade to the latest via apt! I installed Nexenta 1.0 RC3 and was able to import my old (mydata) ZFS pool. running zpool import will show all available pools that can be imported.
root@sun:~# zpool import
pool: home
id: 14253621109838762705
state: ONLINE
status: The pool is formatted using an older on-disk version.
action: The pool can be imported using its name or numeric identifier, though
some features will not be available without an explicit 'zpool upgrade'.
config:
home ONLINE
c0d0s1 ONLINE
pool: mydata
id: 7749473723610951541
state: ONLINE
status: The pool is formatted using an older on-disk version.
action: The pool can be imported using its name or numeric identifier, though
some features will not be available without an explicit 'zpool upgrade'.
config:
mydata ONLINE
mirror ONLINE
c0d1 ONLINE
c1d0 ONLINEI had to use -f (force) to import my previous pool
root@sun:~# zpool import mydata cannot import 'mydata': pool may be in use from other system use '-f' to import anyway root@sun:~# zpool import -f mydata
I was then able to upgrade the ZFS pool
root@sun:~# zpool upgrade This system is currently running ZFS pool version 10. The following pools are out of date, and can be upgraded. After being upgraded, these pools will no longer be accessible by older software versions. VER POOL --- ------------ 3 mydata Use 'zpool upgrade -v' for a list of available versions and their associated features. root@sun:~# zpool upgrade mydata This system is currently running ZFS pool version 10. Successfully upgraded 'mydata' from version 3 to version 10
And finaly I get to see my pool up and running
root@sun:~# zpool list mydata NAME SIZE USED AVAIL CAP HEALTH ALTROOT mydata 12.6G 9.30G 3.33G 73% ONLINE - root@sun:~# zfs list mydata NAME USED AVAIL REFER MOUNTPOINT mydata 9.30G 3.13G 9.30G /mydata
I must say I am happy with my NAS. All I need is to get some large disks in there and I am good to go. I also look forward to get some experience with Nexenta and ZFS. I wonder if you can fit Nexenta onto a 128MB or 256MB CF card?


