ZFSguru NAS fileserver project

Hi, I tried signing up on the forum at zfsguru.com to post this, but it won't let me log on. Anyways, I followed the manual install for 0.1.7, installed lighttpd, php5,php5-sessions, and fast-cgi and all that, some things were different with the lighttpd and fastcgi config files, but I got it working (or maybe not? lol).

I've got it so it starts and runs, and I can access it through the web interface, but I've had some weird issues where I keep seeing errors in the logs about undefined indexes, and it can't seem to figure out what distribution I have, so the reset to defaults for zfs settings doesnt work either. I installed the 0.1.8 preview as well but the errors are still the same:

web.jpg


web.jpg


/var/logs/lighttpd/errors.log :

2011-02-25 18:45:05: (mod_fastcgi.c.2701) FastCGI-stderr: PHP Notice: Undefined index: pref_destroy_pools in /usr/local/www/data/system.php on line 372
PHP Notice: Undefined index: pref_limit_access in /usr/local/www/data/system.php on line 372
PHP Notice: Undefined index: pref_allow_cli in /usr/local/www/data/system.php on line 372
PHP Notice: Undefined index: pref_allow_root in /usr/local/www/data/system.php on line 372

2011-02-25 18:51:25: (mod_fastcgi.c.2701) FastCGI-stderr: PHP Notice: Undefined variable: config in /usr/local/www/data/guru.php on line 1843
PHP Notice: Undefined index: dedup in /usr/local/www/data/files.php on line 698

2011-02-25 19:06:01: (mod_fastcgi.c.2701) FastCGI-stderr: PHP Notice: Undefined variable: config in /usr/local/www/data/includes/samba.php on line 46

2011-02-25 19:07:10: (mod_fastcgi.c.2701) FastCGI-stderr: PHP Notice: Undefined index: pref_destroy_pools in /usr/local/www/data/pages/system/preferences.php on line 62
PHP Notice: Undefined index: pref_limit_access in /usr/local/www/data/pages/system/preferences.php on line 62
 
Well no one mentioned FC, and yes it would be best, but we werent talking about that now or enterprise SAN were we? Didnt think so.

I still maintain that NFS > iSCSI.

With iSCSI you have some limitations. Single Disk IO,VMFS vs RDMs, Zones, identical LUN Ids across ESX servers, you cant resize LUNs on the fly.

With NFS all of this goes away. VMDK thin provisioning by default, You can expand/decrease the NFS volume on the fly and realize the effect of the operation on the ESX server with the click of the refresh button., no vmfs or rdm decisions, no zones, HBAs, LUN ids. No single disk I/O queue, so your performance is strictly dependent upon the size of the pipe and the disk array.
You can have a Single mount point across multiple IP addesses and you can use link aggregation IEEE 802.3ad to increase the size of your pipe whereas with iSCSI you are restricted to 1gbps unless you have a 10gbps network (which most people dont).

I may have over stated my opinion based on my own experience. Though I have never heard of anyone stating the lack of a feature to be a positive before. RDM is very useful in may scenarios, esp when working with DB's. Sometimes block level control is whats needed.

I use both thick and thin provisioning depending on need and function with iSCSI. Increasing the size of a disk presented to the VM on the fly without issue. Increasing the size of the lun can also be done on the fly, I do it all the time.

No mention of MPIO or 3rd party MEM plugins for increased bandwidth and IOPS.

For me iSCSI works great and is a better option than NFS, so long as your not using a netapp.

This is a debate that will go on maybe till the end of time. Thank you for sharing your opinions.
 
Hi, I tried signing up on the forum at zfsguru.com to post this, but it won't let me log on.
It sends the password to your email account; you may not have received email due to spam/filtering issues. Please send an email to my personal account (sub.mesa at gmail) from the address you registered the account on, and i'll email you your password manually.

There is no password mailer yet for my site; will come sometime you're not the only one with registering problems.

Anyways, I followed the manual install for 0.1.7, installed lighttpd, php5,php5-sessions, and fast-cgi and all that, some things were different with the lighttpd and fastcgi config files, but I got it working (or maybe not? lol).
Manual installation is not very well supported, and the documents describing it are out of date.

The best way to test the 0.1.8 preview is just to use the 0.1.7 livecd and then update to 0.1.8 using the command line instructions posted in this thread recently. By using the livecd, you will be using a known system image release with a known checksum.

On a manual installation, your distribution type will be unknown; and it won't know a checksum as well. This would disable some abilities, though i consider the memory tuning thing a bug; that should work even for an unknown system image or distribution type. I'll fix that in 0.1.8 final.

I've got it so it starts and runs, and I can access it through the web interface, but I've had some weird issues where I keep seeing errors in the logs about undefined indexes
Those are not really errors; just notices. You can safely ignore them, 0.1.8 final shouldn't yield such messages but it shouldn't be the cause of any problem.

The only real problem i see is that by using the Manual installation method your distribution type is 'unknown'; that causes the memory tuning to fail because it needs to select between Root-on-ZFS loader.conf and Embedded/LiveCD loader.conf. That check fails, instead i should probably use Root-on-ZFS for unknown distributions, while performing tuning.
 
It sends the password to your email account; you may not have received email due to spam/filtering issues. Please send an email to my personal account (sub.mesa at gmail) from the address you registered the account on, and i'll email you your password manually.

There is no password mailer yet for my site; will come sometime you're not the only one with registering problems.

Ok thanks, I emailed you the info


Manual installation is not very well supported, and the documents describing it are out of date.

The best way to test the 0.1.8 preview is just to use the 0.1.7 livecd and then update to 0.1.8 using the command line instructions posted in this thread recently. By using the livecd, you will be using a known system image release with a known checksum.

On a manual installation, your distribution type will be unknown; and it won't know a checksum as well. This would disable some abilities, though i consider the memory tuning thing a bug; that should work even for an unknown system image or distribution type. I'll fix that in 0.1.8 final.

Those are not really errors; just notices. You can safely ignore them, 0.1.8 final shouldn't yield such messages but it shouldn't be the cause of any problem.

The only real problem i see is that by using the Manual installation method your distribution type is 'unknown'; that causes the memory tuning to fail because it needs to select between Root-on-ZFS loader.conf and Embedded/LiveCD loader.conf. That check fails, instead i should probably use Root-on-ZFS for unknown distributions, while performing tuning.

Ahh.. that explains it! I thought it was something that I did wrong. I would use your full install setup, but I already have a running system with FreeBSD 8.2 (just updated from 8.1 yesterday). I do have a Root-on-ZFS setup though, I followed the instructions at http://wiki.freebsd.org/RootOnZFS/GPTZFSBoot/Mirror

Is there a way that I can tell it manually that its a Root-on-ZFS install without too much trouble?
 
try this as root:
touch /zfsguru.dist

It wouldn't detect the checksum properly, but it may solve/workaround your issue of resetting the loader.conf. Do know that this totally replaces your existing /boot/loader.conf and as such will not preserve any changes in here. Reset means copy a sample from zfsguru web directory to /boot/loader.conf.
 
Well no one mentioned FC, and yes it would be best, but we werent talking about that now or enterprise SAN were we? Didnt think so.

I still maintain that NFS > iSCSI.

With iSCSI you have some limitations. Single Disk IO,VMFS vs RDMs, Zones, identical LUN Ids across ESX servers, you cant resize LUNs on the fly.

With NFS all of this goes away. VMDK thin provisioning by default, You can expand/decrease the NFS volume on the fly and realize the effect of the operation on the ESX server with the click of the refresh button., no vmfs or rdm decisions, no zones, HBAs, LUN ids. No single disk I/O queue, so your performance is strictly dependent upon the size of the pipe and the disk array.
You can have a Single mount point across multiple IP addesses and you can use link aggregation IEEE 802.3ad to increase the size of your pipe whereas with iSCSI you are restricted to 1gbps unless you have a 10gbps network (which most people dont).

I use iSCSI at work with LACP as well as formatting the LUN as vmfs with no issues. Yes you cannot expand on the fly. How is iSCSI limited to 1Gbps even with LACP?
 
Last edited:
Ah, I kinda feel like a dope now, I for some reason thought that zfsguru calculated what you should have for base zfs values defaulted just those, not replace the whole file. I didn't realized that you still had to manually adjust them anyways. I did take a look at the default file though, and saw the notes in there on how to adjust them properly, so I will play around with that

Sorry to waste your time, but thanks for the help anyways!
 
I still left you with confusion; sorry from my part!

When you press the "Reset to recommended values" button:
1) the script will look whether you run Root-on-ZFS distribution or Embedded/LiveCD which needs a different kind of loader.conf
2) the script will copy that loader.conf to your /boot/loader.conf, overwriting (destroying) the existing file
3) finally, it performs memory tuning on the /boot/loader.conf

So the copied sample only serves as template. Automatic memory tuning happens when you press the "Reset to recommended values" button on the System->Tuning page, -OR- when you perform an install on the System->Install page.

Automatic memory tuning sets the arc_min, arc_max and kmem values according to the memory size that is present during the memory tuning. So if you ever change the RAM size, you need to perform tuning again.

In the future i will make the tuning page more user friendly, right now it's tightly coupled with the actual loader.conf without a really user-friendly GUI which will come, one day. ;-)

Hope this eases your confusion; cheers!
 
Ah yes that did the trick. I tried it earlier and didn't catch the / on the /zfsguru.dist and did it in the /usr/local/www/data/ directory with all the other zfsguru files, and it obviously didn't work. I re-read the post and then did it to / and it worked like a charm!

I did add vfs.root.mountfrom="zfs:zfsroot" to the /usr/local/www/data/files/roz_loader.conf template file so that if I do end up resetting again, it has my zfsroot listed in there so it'll boot up

thanks for the help!
 
Last edited:
A little update!

I've been working on the new system disk release, which is running but needs additional functionality still before release. But the exciting part is Virtualbox, and the phpvirtualbox interface. It wasn't easy to get this all working, so the better that soon it will be installable with just one mouseclick.

Once you get to the phpvirtualbox web-interface, you can create VMs and start them. But you must use a separate VNC client (like TightVNC Viewer) to see any visual output. The open source edition of Virtualbox does not support RDP. Anyway, you can see the boot process and all, and for funs i booted Ubuntu livecd and browsed to the HardOCP forum website:

ZFSguru-Virtualbox-VNC.png


So it works! :D

There are limitations, though:
  • Still based on VirtualBox 3.2.12; 4.0.4 is being ported to FreeBSD currently, but not yet in portstree
  • Lacks RDP or USB support, and perhaps more?
  • Virtualbox runs "headless" so without any visual output just as background process

The biggest constrain would be lack of audio feedback, but this should already be useful for alot of things you want to 'offload'. You can use local disk images on your ZFS filesystem, compressed or not, deduped or not, and use your host CD/DVD optical drive as passthrough. Bridged networking also works.

I still need to build this properly, then package it into one package, and make changes to the web-interface. After that, i probably would include Virtualbox + phpvirtualbox interface as first major ZFSguru Extension. It should be downloadable via integrated bit-torrent client; i'm still working on that. It's vital so all ZFSguru users could seed the extension packs and people should get a good download speed. Virtualbox is pretty big download; other extensions will likely be 'lighter'.

I think Virtualbox is an excellent first extension, because it offers one easily accessible VM solution where ZFSguru is running as host OS. I also looked at 'Flashlight' which is a Flash-based VNC client. This could be integrated into the ZFSguru web-GUI as well to access your VMs easily without installing anything locally. But it needs alot of security exceptions and i didn't got it working yet.

Edit: for a screenshot of phpVirtualBox, look here: http://code.google.com/p/phpvirtualbox/
 
Last edited:
Very exciting! I tried to get it going but just couldn't get passed a certain point and got busy/distracted with other things. Once again, thank sub!
 
I use iSCSI at work with LACP as well as formatting the LUN as vmfs with no issues. Yes you cannot expand on the fly. How is iSCSI limited to 1Gbps even with LACP?

It depends on how LACP divides up the traffic. It's not round-robin, as that would cause potential out-of-order issues, hindering TCP performance. Instead they hash a value, like MAC, IP, TCP/UDP port, either sending or receiving, or a combo thereof. Depending on the switch and client.

You can have a case where you have 4 1Gbit links bonded, but traffic only goes over one of them. Essentially, a single TCP connection or UDP flow will only travel over one of a number of 802.1AD links. If you have a single iSCSI host, with lots of iSCSI clients, a LACP link for the iSCSI host will use multiple links most likely, while the initiators would likely only use one of their links (not enough source/destination variety).

NFS would suffer the same problem.
 
Very nice work! This is a very important feature to have, imo, and I think it would make an excellent first extension.

I've used phpvirtualbox myself. It's quite nice, had very few complaints. It's been awhile since I used it, so they may have even fixed some of the "issues".
 
I have Virtualbox 4.0.4 working now, with latest phpVirtualBox. I also developed a fix for starting VNC automatically, since it is not supported in phpVirtualBox.

The fix is as follows: you create a VM with a name like "Ubuntu;5900". Note the ;5900 suffix, this will be the VNC port number. So now you can start VMs from phpVirtualBox and it would start VNC automatically. And it works great; have two VMs running now in separate VNC windows. I can even watch youtube videos with like 7fps which is decent IMO. Though it doesn't feel as fast as native Virtualbox window, of course.

So it works now, tomorrow gonna try packaging it. Then i could already put it up for download so you guys can test it, while i work on the torrent distribution system. Great stuff! :D
 
What are you going to use for the built in torrent client? I have tried a bunch of different clients and have found qbittorent to be the best. It has a webui, is fairly light, has a built in search, does rss feeds, and is pretty much a copy of utorrent just styled different and open source.
 
I found phpvirtualbox to be a bit more sluggish than just virtual box itself, but it was still very usable. I can't complain for being free.
 
What are you going to use for the built in torrent client?
I will make (at least) two torrent clients:
- one internal for system disk downloads and extension pack downloads; zfsguru-internal torrent client. i probably will use rtorrent for this.
- one user-operated torrent client available as extension; including webgui and running in FreeBSD Jail (for security reasons)

So the torrent client i need for ZFSguru would be something that is always installed when using my LiveCD or system images (Root-on-ZFS) but the torrent you use for downloading your own personal torrents would be separate as extension and thus not preinstalled.

I probably will do the torrent client after VirtualBox, as second major extension package. But before that i would want to make the internal rtorrent client working so i can begin working on integrating this all into the web-interface. Then you can access all GUIs from the Services page, which i think would be great!
I have tried a bunch of different clients and have found qbittorent to be the best.
That is a QT4-based graphical torrent client. You need a graphical environment for that and that's a huge package. I will do X11 package sometime but not soon.

Instead, i will look for a torrent that runs as daemon (background service/process) and has a web-interface or remote interface to communicate with. That could be rtorrent but i think the best is transmission-daemon. Then you can use any Transmission client and connect to the remote server and manage your torrents with a Windows (or Linux) frontend application.
 
I will make (at least) two torrent clients:
- one internal for system disk downloads and extension pack downloads; zfsguru-internal torrent client. i probably will use rtorrent for this.
- one user-operated torrent client available as extension; including webgui and running in FreeBSD Jail (for security reasons)

So the torrent client i need for ZFSguru would be something that is always installed when using my LiveCD or system images (Root-on-ZFS) but the torrent you use for downloading your own personal torrents would be separate as extension and thus not preinstalled.

I probably will do the torrent client after VirtualBox, as second major extension package. But before that i would want to make the internal rtorrent client working so i can begin working on integrating this all into the web-interface. Then you can access all GUIs from the Services page, which i think would be great!

That is a QT4-based graphical torrent client. You need a graphical environment for that and that's a huge package. I will do X11 package sometime but not soon.

Instead, i will look for a torrent that runs as daemon (background service/process) and has a web-interface or remote interface to communicate with. That could be rtorrent but i think the best is transmission-daemon. Then you can use any Transmission client and connect to the remote server and manage your torrents with a Windows (or Linux) frontend application.

qBittorent works headless by using --disable-gui during compilation. Source
 
The addition of virtualbox is awesome, and what Ive really wanted to do with a zfs server for a while..

So I can run zfsguru as a storage backend.. then whs 2011 in virtualbox for my pc backups..
 
The addition of virtualbox is awesome, and what Ive really wanted to do with a zfs server for a while..

So I can run zfsguru as a storage backend.. then whs 2011 in virtualbox for my pc backups..

Yeah, this sounds like an ideal solution for me too. I'm looking forward to trying it out.
 
deluge-torrent :cool:

+1 for this. Last I checked there are simple and attractive native apps available for all major OSes that can connect to this.

Transmission or rTorrent(+ruTorrent) would be a great option as well, and for those of us who prefer not managing torrents through a browser Nativa(OS X) and nTorrent both provide handy local interfaces for rTorrent.

I know that most people will prefer torrents, but will there be any potential love for a richly featured FTP client? Perhaps one that has a webGUI built in? I've searched and searched and been unable to dig up sort of solution to this, as it is now the 1 thing keeping me chained to Windows.
 
The cool thing is about ZFSguru extensions is that i can create an extension for every available torrent client; it doesn't have to be just one. I'll probably start on transmission-daemon and will look at the other torrent clients later; but they can be included just as well, even alongside eachother. They would need different port numbers, though.


Virtualbox LiveCD soon available for testing/preview!
I've packaged Virtualbox and phpVirtualBox in one file with setup script; and it works, hurray! But it requires newer packages i've built for 8.2-RELEASE so it requires a new system image. I don't want to release 8.2-002 just yet, so here's what i decided:

I'll release a ZFSguru 0.1.8-preview2-vbox LiveCD with FreeBSD 8.2-RELEASE (final) and virtualbox all preinstalled. For testing purposes, of course; but it should be working out of the box even while running the livecd so no installation required.

I'm currently building the livecd, and after some testing i can upload and release it for you guys!


Other changes in the LiveCD
Some random changes:
- a fix for querying SMART information for Highpoint controllers in the web-interface (Disks->SMART page)
- a fix for unknown distributions when performing memory tuning (assumes rootonzfs)
- new 8.2-002 system image has new packages and is now based on FreeBSD 8.2-RELEASE
- new system image has a fix for displaying 0.0.0.0 IP address in the menu after booting
 
ZFSguru 0.1.8-preview2-vbox LiveCD (.iso)

Torrent: http://zfsguru.com/files/ZFSguru-0.1.8-preview2-vbox.iso.torrent (test release)


Quick Start
Just boot the LiveCD, read the IP address and access the web-interface. On the Services page you see a URL to phpvirtualbox interface.

When creating a new VM, be sure to choose a name like "Ubuntu;5900" like discussed in my previous posts. Then use a local VNC client (TightVNC Viewer) to connect to your ZFSguru server IP address with the port number specified (5900 is default).


Other notes
When trying the LiveCD, be sure to allocate enough memory; 1.5GB+. Testing in Virtualbox is good. Would not recommend it for real installations though; some things are going to change when i create a foundation for extensions.

Let me know how it works for you!
 
Anyone tested Virtualbox yet?

Just a nice update: FreeBSD 9-CURRENT (the development branch which will become 9.0 when ready) now has ZFS v28 integrated. In a few months it will be ported to 8-STABLE (which is not 8.1 or 8.2, but will become 8.3).

So i could make a new 9.0-002 system image based on more modern FreeBSD9 + ZFSv28 code. And i could also create a 8.3-001 i guess, once ZFS v28 has been ported to 8-STABLE. That would still be experimental though, although inclusion in 8-STABLE means it starting to mature which is good news! ZFS v28 on FreeBSD might be stable by summer, and 9.0 / 8.3 might be released about the same time (just a guess).

Right now i'm working on the rtorrent integration as internal bittorrent client for ZFSguru. Once that work is complete i can release the upcoming 8.2-002 system image based on 8.2-RELEASE.
 
@B34M3R: see your thread. :)

Some news: future releases will be able to boot from 4K sectorsize override pools! Support for this was included in HEAD as well (along the ZFS v28 patch). I can include that in future web-interface releases; but it would only work if you formatted the disk after that update, so it writes the updated GPT boot code to your disk.

So good news for people who want to use Root-on-ZFS on the main pool, but can't due to 4K sectorsize override. This limitation will be gone in 0.1.8 final release.
 
Hi :)

That nice feature to use an SSD as an cache disk, wil it be an GUI for that sooner or later?
 
Its a pitty its based on 8.0 rather than 8.2 tho (and zfs 14 not 15!) more waiting for them to catch up, im sick of waiting.

I'm hanging out for zfsguru 0.2.0/stable to move off freenas!
 
Sub, would the HP Micro ProLiant server be good enough to handle storage of media and important files only? It would be strictly home use and top speed is not an issue, but a balance between decent speed to serve 3-4 Blu-rays at once and keeping my data safe with ZFS. I was thinking of going with a single large 640GB WD Black in the 5 1/2inch bay and host ESXi and all of my VM's. Then fill up the 4 bays with 2TB drives and have 4GB ram. Would the ESXi vm be able to to see all the drives, if I kept them in AHCI mode?
 
Any update on SAS2008 compatibility since I last described the timeout issue?

And one other thing...will these features (rtorrent, Virtualbox, etc) be available as packages? So that, if I don't want them, I can not have them installed (in order to save resources, increase security, and so on)?
 
There was an error when doing a root-on-zfs, on the last step: ERROR: Could not locate system version HASH748d96ba00f129e05f78610cbe46bec4

Using the the live-cd, managed to see virtualbox booting at the least. I'm very excited about this feature.
 
Yes that is a known bug, i had fixed it, but i forgot to add the fix to the livecd when i built it, thinking that i already did.

Simple workaround: when at step4, modify the URL of the page and remove the HASH string, so it only gets that very long alphanumerical number. Then it may work; untested though.

I'm releasing a proper preview2 soon, that already has some service pages; not much though. But i progressed alot with the extensions; i solved alot of potential issues with different design choices. And i think this could become one of the best features of ZFSguru:

And one other thing...will these features (rtorrent, Virtualbox, etc) be available as packages? So that, if I don't want them, I can not have them installed (in order to save resources, increase security, and so on)?
Yes. The LiveCD would ship with only basic (required) extensions and thus wouldn't have iSCSI installed by default and many other things as well.

So you start slim, and can add weight later when installing additional services, ones you actually use. You can uninstall them again, upgrade them and purge them (remove all data but not the package itself, like for Vbox delete all VMs and virtual harddisks).

There are some required services, though:
screen (dependency for rtorrent)
rtorrent (required for downloading anything in the ZFSguru web-gui)

Perhaps more will follow later. rtorrent is the internal torrent client; hidden from the user. Visible to the user are the optional torrent clients (qbittorrent, transmission and whatnot).

As far as security goes: many services can be 'jailed' or 'chrooted'. This adds additional security that restricts that service access to your personal data. If it should become breached, there are limits to what damage a malicious user could do, especially in a jail and less so for a chroot. The internal rtorrent runs chrooted, and starts as soon as you start downloading something (a new zfsguru release, a new systemdisk, a new service, and so on). You can stop it manually, or leave it running to continue seeding the ZFSguru-specific data; unrelated to your real BitTorrent client for your real torrents. Those would be separate and use a nicer package than rtorrent.

So security for services would be good, but some things have to run on the host system like Virtualbox. That would pose a potential security risk to the system, and thus also your files. When using in a protected home environment these concerns would be abysmal, but when having live direct internet access i would not store sensitive or critical files/data on there.

Any update on SAS2008 compatibility since I last described the timeout issue?
Yes, there is a new updated driver committed to 8-STABLE. I tried porting it, should appear in next 8.2-002 system image release, in under a week i think. Not sure what the changes are, but this driver coming to 8-STABLE is generally a good sign!
 
Back
Top