By relling on Jul 29, 2004
You might see some Sun Cluster marketing materials which try to make a big deal about Sun Cluster being integrated into the Solaris kernel. Here's my take...
When we think about being "kernel-based" there is really two (or more) perspectives possible:
running code in the kernel context
using kernel-based private interfaces
Running code in the kernel context is a long standing topic of discussion. It is difficult to answer the question of whether running in the kernel context is a win or not, in and of itself, for many service. Going forward, with increased virtualization, for better or worse, further strains this argument. After all, if you run Solaris 10 zones on a Sun Opteron-based workstation under VMWare, where exactly is the “kernel context”? And where is the ambiguity? And where is that confounded bridge?
I consider that the benefit of Sun Cluster's kernel-based claim is really in the realm of using kernel-based, and other, private interfaces. To understand better, please see the man page onattributes(5) and note the section on Interface Stability. Sun Cluster was developed inside Sun and in close coordination with the kernel development, device driver, file system, logical volume management, systems management, and hardware teams. Features which were needed by the Sun Cluster developers are negotiated with the other teams as part of an architectural review process. In some cases the features require interfaces which are not classified as stable. When this occurs we may make a contract between the source owner and the cluster team to identify the interface and its dependencies. This allows each team to move forward with some awareness of the effects of potential future code changes. This tight relationship allows us to build systems which have intimate knowledge of the failure modes of the components, how to detect such failures quickly, how to recover quickly, and how to protect data from harm when parts of the system aren't fully function. If you look in the Sun Cluster Error Messages Guide, you might see some possible messages and wonder how we could detect that error via a public interface. We may be using private interfaces.
It will be interesting to see how this process changes, if it changes, as we open source Solaris. Clearly, public interfaces will be preserved and private interfaces will continue to exist...