BrandZ: fitting square pegs into round holes since 2005.
By nilsn on Dec 13, 2005
Today we are unleashing the initial release of BrandZ into the wild. BrandZ is a framework that builds on the zones functionality introduced in Solaris 10, and is the technology that underlies the feature known as Solaris Containers for Linux Applications (SCLA).
BrandZ allows for the creation of zones populated with non-native software. Each new zone type is referred to as a brand and the installed zones are called Branded Zones. This software could include a different set of Solaris software, such as a GNU/Solaris distribution.
More interesting, BrandZ allows us to create zones populated with non-Solaris software. This initial release includes a single brand, lx, which enables the creation of zones that run Linux software rather than Solaris.
BrandZ and the lx brand are both still very much works in progress, so they are being released independently from the mainline Solaris source tree. Much of the basic functionality is in place, but there is still a lot of work to do before this is ready to be integrated into Solaris. A description of the remaining work can be found on the BrandZ community page. If you just want to play with BrandZ, this description can help identify what you shouldn't expect to work yet. If you are interested in participating in the BrandZ development, this list will give you some ideas for places to start.
Seriously? Why Linux on Solaris?
This feature has been in development for several years (more on that below). In its early days the focus was on customers that were trying to transition from Linux to Solaris, but had a number of legacy Linux applications that were preventing the switch. Linux emulation was viewed as a way to help them make the switch to Solaris before their full software toolset was available. Since the release and rapid uptake of Solaris 10, ISVs have been porting their applications to Solaris on x86 even faster than we expected, somewhat reducing the need for this transitional tool. There are still many customers for whom this will be useful, but their interest is now as likely to be on in-house applications as on ISV applications.
Another area in which this feature is useful is for consolidation. A monocultural example would be a customer that wants to consolidate multiple Linux applications onto a single machine, but is not sure how, or if, those applications can coexist peacefully. BrandZ allows each application to run in its own Linux zone, eliminating most of the possible coexistence problems. Alternatively, a customer may have a mix of Linux and Solaris applications, but not want to maintain two sets of machines to run them. This use case is already being explored by an EDA group in Sun.
In a consolidation environment, whether Linux-only or a Solaris/Linux mix, you can think of the underlying Solaris kernel as being a highly-featured, scalable, and stable hypervisor. As noted in this Register story, this feature also allows you to host your Linux environments on a ZFS filesystem.
The most interesting use case for this OpenSolaris release is in the developer community. By enabling Linux applications on to run on Solaris, developers are able to use Solaris tools such as DTrace to develop, debug, and tune their Linux applications. This use case has attracted the most immediate attention from customers, as it is an easy and low risk environment in which to evaluate a new technology. For more information on using DTrace on your Linux applications, see Adam's blog entry.
Janus, or What Took You Guys So Long?
Many people, both inside and outside of Sun, have asked whether this is "Project Janus", which is an internal code name that got a surprising and unfortunate amount of external exposure. Janus was the internal name for an initial prototype of Linux application support on Solaris. Rather than saying that BrandZ is Janus, it would be more accurate to say that BrandZ is the follow-on to Janus.
The Janus project was intended to be delivered with Solaris 10, and its development was wrapping up in time to make the initial release. However, last fall during the late-stage design and code reviews we decided that we really needed to rethink how the functionality was going to integrate into Solaris as a whole. There were a number of problems that Janus solved in task-specific ways, which we decided were solved more cleanly and generally by the then-recently integrated Zones technology.
In the end we decided that it was more important that we get this project right than it was to make our original ship date. So we pulled the functionality from the initial release of Solaris 10 and essentially started over with a zones-based approach.
The Janus prototype was released to a small number of customers as the "Linux Application Environment technology preview", to get their thoughts on the quality of the emulation and the overall user experience. Much of the feedback from that preview has been rolled into BrandZ.
Why are we doing an OpenSolaris release?
Another question that I've gotten several times is: "why are you putting this out on opensolaris.org when you still have so much work to do on it?"
The first, and most obvious, answer is that people keep asking about it. Customers are asking their sales people where the feature is, and people within Sun are asking us how they can use it. Getting this out on opensolaris.org lets us answer everybody at once. This isn't feature-complete by any stretch of the imagination but, for good or ill, this release will let everybody know exactly where the project stands.
Second, we want to enable the creation of new brand types. We want to verify that our framework is sufficient to support a variety of brands before we roll it into Solaris.
Given the limited time and resources available, we are focussing our efforts on supporting the Red Hat and CentOS distributions. These distros only cover a small subset of the Linux environments currently in use. By distributing BrandZ through OpenSolaris, we hope to enable users to develop their own brands that support other distributions.
In some cases, supporting a new distro may be as simple as modifying our install scripts. A more interesting possibility is that some people may want to develop radically new brands. The most likely possibility seems to be a FreeBSD brand. Implementing these new brands is likely to require extending or modifying the BrandZ infrastructure. Allowing users to get an early start on this development will increase the likelihood that we will be able to roll any needed infrastructure changes into our code before we integrate into the main Solaris source tree.
Finally, emulating a new operating system is a complex proposition and ensuring that the emulation is correct and complete is equally complex. We have a number of test suites available to us to help verify the completeness and correctness, but test suites are necessarily limited. They tend to be comprised of small, focused tests, designed to ferret out relatively simple errors.
Properly testing an system such as BrandZ requires running a wide variety of applications in a wide range of environments. We can make some progress by testing applications ourselves, but we cannot reasonably test more than a small number of applications. By releasing BrandZ via OpenSolaris we hope to get early exposure to a wide range of users, environments, and applications. We hope that this exposure will help us identify important applications that we have overlooked, and to find errors or shortcomings that the formal test suites cannot.
If you have any interest in experimenting with the Linux application support, improving the support for our current Linux distributions, adding support for new distros, or even developing completely new brands, then please check out the new BrandZ Community and/or sign up for the BrandZ discussion list.