The FreeNAS development team is happy to announce the release of FreeNAS 10 BETA 2. We are also very happy to say that we are now “feature complete” and have feature-parity with FreeNAS 9.10. Anyone who’s been following the FreeNAS 10 development effort knows that FreeNAS 10 represents a complete rewrite of the world’s most popular software-defined storage OS. It adds significant capabilities not seen in Open Source storage: new capabilities for hosting virtual machines and containerized applications, and a ground-up rewrite of the user interface with a scriptable command-line interface.

This post will explain what’s new in FreeNAS 10 BETA 2. If you’re entirely new to FreeNAS 10, don’t worry. You can still jump on board with the aid of these resources:

  1. http://www.freenas.org/download – This is our download site for FreeNAS and has links to the latest 10 Nightly build.
  2. https://forums.freenas.org/index.php?forums/10-testing.54/ – This is the FreeNAS 10 testing forum. We have active discussions and explanations for all things FreeNAS 10 there every day, and anyone is free to register and join in.
  3. https://github.com/freenas – This is the FreeNAS project on GitHub, for both FreeNAS 9 and FreeNAS 10.

Design Goals

  • The first thing you need to know about FreeNAS 10, particularly if you’ve used FreeNAS 9, is that 10 is fully asynchronous. A user can log in, submit a bunch of tasks, and then log out again without having to wait until each and every task completes. Multiple users also can log in simultaneously and submit tasks, and if one user attempts to delete or modify something another user is working on, they both will receive a task notification that says the attempt failed (a later release of FreeNAS will improve this).
  • The second thing you need to know about FreeNAS 10 is that it’s designed to maximize situational awareness when using either the CLI or the GUI. Unlike FreeNAS 9, the user is told about things in real-time as soon as they happen, via alerts or task notifications, and the UI also updates itself dynamically as the hardware / software environment changes in various ways. What you’ll see in BETA2 is the start of an ongoing and ever-expanding effort to make what FreeNAS is doing transparent and informative!
  • The third thing you need to know about FreeNAS 10 is that it includes the bhyve hypervisor and can host and manage Virtual Machines and Docker containers. We have leveraged these capabilities in some interesting ways within FreeNAS itself and plan to leverage it more in the future (more on this later in the post).

Diving In – The Dashboard

They say a picture is worth a thousand words, so let’s introduce some screenshots to demonstrate in-depth what we’ve done:screen-shot-2016-11-21-at-4-45-54-pm

This is the dashboard for FreeNAS 10, which is the first screen you’ll see. It can be customized to show different statistics depending on your preferences. Your changes are saved so when you log back in, you will see your customization. We will be enhancing the dashboard to include more hardware information, like CPU and disk temperatures. You can file any requests here.

The Volume UI

FreeNAS 10 combines operations that are spread across multiple locations in the Volumes and Sharing UI in FreeNAS 9. Things like Snapshots and Replication info are similarly displayed alongside their associated Datasets, making it much easier to see what’s going on. This is another good example of “enhanced situational awareness”:

screen-shot-2016-11-21-at-5-31-55-pm

This screenshot displays the topology of an existing volume. As you can see, it has a bunch of drives in it. Clicking on any one of those drives will also bring up a per-drive UI, where you can get and set various drive-specific options. You are literally seeing how the volume is laid out in what is hopefully a fairly easily understandable form.

At the top of the Topology view, you can see how much space is being allocated to parity (or “redundancy”) information and how much is usable for storage. You can see how the volume is laid out. We are making the volume as visual as possible, and scrolling around in this view will quickly tell you how many drives are being used. If there are any spares available, it shows which drives are hard disks and which are solid state, and so on.

In the Volume Create view, you can choose a canned “usage profile” or drag the small white puck around the Speed / Storage / Redundancy triangle and view the different potential choices made by the ZFS layout manager. See what happens if you want to increase the tolerance to drive failure or want to increase the number of parallel I/Os the volume can handle. You can also add or remove drives from the “free drive” list.

Moving into other areas of the new Volume UI, you can make file and block shares much more easily now. Simply go to the Share -> Create UI, pick a type (e.g. SMB) and then fill in its name and other details and FreeNAS handles all the rest, including making the underlying ZFS dataset for you, setting the right permissions on it, and optionally enabling the underlying service. You do not have to do anything but fill out a single form and click Save.

While not really a “situational awareness” improvement per-se, all of this design will only be improved and extended as the project moves towards RELEASE and we get valuable user feedback to aid the evolution of the UI.

Accounts, Networking, System, Services

Another brand-new thing in BETA2 is a fully fleshed-out Directory Services (DS) system. Active Directory, LDAP, NIS and a new directory service type, FreeIPA, are all supported so that bindings to Directory Servers are asynchronous. If a DS server goes up or down, we post alerts whenever connectivity is lost.

The Windows Domain Controller service has an associated volume and its own IP address (that’s because the Domain Controller is now running inside its own Virtual Machine!). The IP address you see is the bridged IP address of the DC, and we can even bind to it as an Active Directory controller on the same FreeNAS box, though that’s obviously not recommended since it creates a mutual dependency (inception!) and one could easily get into trouble that way. Used with care, however, it’s a pretty neat feature.

Clicking on the “Open DC GUI” button will also take you to the Zentyal appliance UI where you can add users, configure the domain information, and even set it up as a Microsoft Exchange server for Email! Like all VMs, the login information and other configuration details can also be found in the VM section of the UI (specifically, in the README view). More on that in just a bit.

screen-shot-2016-11-21-at-7-27-24-pm

Console, Calendar, Peering

  1. The Console UI is a quick and easy way to get to the CLI interface we’ve mentioned a few times. Click on it, wait a bit, and you’ll have an interactive CLI prompt that you can do lots of powerful things from. It’s not a Unix shell, so typing “help” or “?” will give you a bit more guidance on what to do next if you’ve never used it before. There are also a number of example scripts to look at in the /usr/local/lib/python3.4/site-packages/freenas/cli/examples directory on every FreeNAS 10 machine (see “cli_src_path” variable if you forget where it is), and as previously mentioned, going to http://yourboxip/cli will also bring up the developer documentation for it. Finally, the CLI is also available on the physical (VGA or Serial) console of the machine and is just a “cli” command away if you happen to prefer ssh’ing into the box. Your choice.
  1. The Calendar UI is an interface for scheduling tasks and gaining awareness on what your machine is scheduled to do and when, which helps you  prevent resource conflicts and other problems. Simply drag a task represented by one of the colored labels at the top of the Calendar UI to the desired time, edit the details to match your desires, and then click Save. Clicking on the task in the calendar also allows you to edit it and make adjustments as you go. It’s just that simple! The Calendar is also currently the only way to set up periodic replication tasks between machines, once you’ve set up a peer.
  1. Peering. This is used to do replication between two FreeNAS machines. Simply set one machine as a peer of the other, and you can then replicate between those peers! In FreeNAS 10 you can specify a much wider range of compression, encryption and throttling options on your replications tasks because they are using their own dedicated channel. We are already planning a number of improvements to the overall status information we display for peers and replication tasks as they are running.

Anyone who has ever replicated 10Tb of data over a hard-wired 10Gbit link before sending a replica machine to another physical location will appreciate this flexibility, and we are already planning a number of improvements to the overall status information we display for peers and replication tasks as they are running. See our saved ticket query to follow along in the bug tracker as we march towards RELEASE and add much more capability and polish to the peering mechanism in 10!

Virtual Machines

FreeNAS 10’s VM support started with the bhyve code base and then added the 9pfs filesystem for sharing data between the host and VMs, guest tools for the various guest OSes, a high-performance VNC graphical console server, and many other features. The result is an interface for creating and managing VMs that is considerably simpler than the usual bhyve Unix command-line experience. For example, here is the configuration UI for a running Windows 10 VM:

screen-shot-2016-11-21-at-11-32-34-pm

Creating a VM requires that you create a CD-device that points to the installation ISO, have a disk of suitable size and type, pick a graphics device, and create a NIC. You then select the bootloader type and set the VM to have a Boot Device value of the CD device the first time, start it up, install your OS to the virtual disk, and stop the VM. Then you set the Boot Device to the disk device, save the configuration, and start it again. Then you can click the “VGA Console” button in the upper left corner and boom, your VM’s GUI!

Docker Containers

Docker is a huge ecosystem which supports tens of thousands of different applications and supports them directly out of the already significant Linux application ecosystem. If there’s an app or development environment available for any purpose, chances are excellent that someone has already turned it into a Docker container. Anyone wishing to learn more about Docker containers may find this rather long post to be worth reading first.

Unlike jails, Docker containers are read-only. Once you have created a container, the container software itself is immutable and represents itself that way in the GUI and CLI. This is not to say that a container cannot both read and write data, of course. This is what container Volumes are all about. The container advertises the names of the “volumes” it would like to have available to it, and you map those volumes as desired to parts of your physical ZFS volume(s) on the host as part of the creation process. Now the Container can be torn down at any time and you don’t have to worry about valuable data going away with it, as is sometimes the case when users delete jails in FreeNAS 9.x.

FreeNAS’ Dockerfiles contain all the extra metadata necessary for the GUI and/or CLI to prompt the user upfront for all the necessary configuration data in the process of initially creating the container. You can also create your own “collections” on Dockerhub and point FreeNAS at them, so you are no longer constrained by the “canned plugins” that FreeNAS 9 comes with. The Docker ecosystem is truly wide-open to the FreeNAS user and provides several orders of magnitude more applications.

Wizard

Last, but not least, we have the new setup Wizard. The goal of the Wizard is to simplify the initial setup of FreeNAS 10 by reducing the number of steps and get you from “zero to sharing” with the least amount of effort. It is also somewhat rudimentary in BETA2, but we plan to extend and make it even more powerful in subsequent builds.

There is much more we could cover with FreeNAS 10 BETA2, but we hope this at least gave you a taste of what to expect with it now and what you can hope to see in the future as we move towards RELEASE. We also hope you’ll join the forum to discuss your experiences in more detail and file tickets where things don’t work as you expect or if you want to make suggestions on how things can work better.

Thank you for reading!

The FreeNAS Development Team