blog'o thnet

To content | To menu | To search

OpenSolaris

Entries feed - Comments feed

Monday 26 February 2007

Zones plus Resource Management Features in SX

Containers (in fact Zones plus Resource Management features) is a wonderful technology, particularly in virtualized environments. But the fact is that it is not very usable--speaking of the use of RM feature in particular--since it exists many different RM technologies, not always well integrated with Zones capability.

This is why the upcoming work on memory sets and cpu caps are so interesting, and a more-than-welcome work in order to enhance and ease the use and deployment of Containers on powerful Solaris systems.

Enjoy reading Jerry Jelinek's blog entry about this work (already in SXCE build 56!).

Sunday 18 February 2007

DHCP Bug Reintroduced in SXCE Build 57

After live upgrade'ing to snv_57, i was unable to get network informations, normally obtained using internal DHCP server. In the system log file, i can see something like:

Sat Feb 17 11:06:18 unic /sbin/dhcpagent[1494]: [ID 91213 daemon.warning]
 configure_v4_lease: incorrect broadcast address 255.255.255.255 specified
 for nge0; ignoring
Sat Feb 17 11:06:18 unic /sbin/dhcpagent[1494]: [ID 94624 daemon.warning]
 checkaddr: expected peer address 192.168.1.255 on nge0, have 255.255.255.255

In fact, it seems an old bug was reintroduced while working on an other (related) CR. See bug report 6516629 for a detail description of the problem. Since it was already fixed in snv_58, and because there are other known issues with this build being unable to boot some systems i will stay with build 56, waiting for build 58.

Monday 22 January 2007

European Type6 USB Keyboard Circumflex Key Issue

Although my first bug report against snv_38 on a issue related to the use of a European Type6 USB keyboard with circumflex key seems to be fixed somewhere between snv_39 and snv_54 (at least the status mentioned "Closed: Not Reproducible"), it is not. Filled a new bug report linking to the first one, against snv_55b this time.

Well, i think i will continue to copy and paste the appropriate word using Google searches for a while...

Thursday 11 January 2007

NFS and ZFS plus ZIL Interesting Notes

I recently learn about NFS on ZFS interaction problem reading the great blog of Ben Rockwood. Although not directly related to what he encountered, this recent great post about how NFS behaves with ZFS backend, particularly on the performance comparison front, says a lot of things about why you might see poor performance using this two technologies together.

To go deeper on this front, you can read more about the ZIL purpose on Eric Kustarz's weblog, and follow closely this ZFS thread on the OpenSolaris website.

Monday 8 January 2007

OpenSolaris Restricted Builds, and SX:CR build 55

As very, very well explained by Stephen Hahn recently, restricting operating system's development specific builds isn't new. In fact, it is more than desirable and as he said on his blog this can serve all of us (community users and community makers):

Certainly current distributions (or emerging ones) might consider using the stabilized build 55--however we got here--as an opportune version to base their next release upon.

Can't wait for the SX:CR build 55 to update my Solaris 11/06 systems!

Monday 4 December 2006

memconf Update!

AS you may notice, there is a new version of the memconf utility. I am proud that the improved x86 support was done using my Sun Ultra 20 as the reference Opteron (amd64) system ;-)

Here are the outputs before, and after Tom Schmidt's great work (look at the bold informations):

$ memconf -d
memconf:  V2.0 17-Oct-2006 http://www.4schmidts.com/unix.html
hostname: unic.thilelli.net
model:    Sun Ultra 20 Workstation (Solaris x86 machine)
Solaris Nevada snv_51 X86, 32-bit kernel, SunOS 5.11
2 x86 2211MHz cpus
diagbanner = Sun Ultra 20 Workstation
model = Sun Ultra 20 Workstation
modelmore = (Solaris x86 machine)
machine = i86pc
platform = i86pc
perl version: 5.008004
CPU Units:
==== Processor Sockets ====================================
Version                          Location Tag
-------------------------------- --------------------------
AMD Opteron(tm) Processor 148    Socket 939
Memory Units:
Type    Status Set Device Locator      Bank Locator
------- ------ --- ------------------- --------------------
unknown in use 0   A0                  Bank0/1
unknown in use 0   A1                  Bank2/3
unknown in use 0   A2                  Bank4/5
unknown in use 0   A3                  Bank6/7
total memory = 2047MB (1.9990234375GB)
$
$ memconf -d
memconf:  V2.1 29-Nov-2006 http://www.4schmidts.com/unix.html
hostname: unic
model:    Sun Ultra 20 Workstation (Solaris x86 machine)
Solaris Nevada snv_52 X86, 64-bit kernel, SunOS 5.11
1 AMD Opteron(tm) Processor 148 2211MHz cpu
diagbanner = Sun Ultra 20 Workstation
model = Sun Ultra 20 Workstation
modelmore = (Solaris x86 machine)
machine = i86pc
platform = i86pc
perl version: 5.008004
CPU Units:
==== Processor Sockets ====================================
Version                          Location Tag
-------------------------------- --------------------------
AMD Opteron(tm) Processor 148    Socket 939
Memory Units:
Type    Status Set Device Locator      Bank Locator
------- ------ --- ------------------- --------------------
unknown in use 0   A0                  Bank0/1
unknown in use 0   A1                  Bank2/3
unknown in use 0   A2                  Bank4/5
unknown in use 0   A3                  Bank6/7
total memory = 2048MB (2GB)

Thursday 30 November 2006

Simply Can't Wait for Nevada Build 53, Desktop Experience

I am really excited by the upcoming Nevada build 53, particularly in the desktop user space. Just read these two posts from Alan Coopersmith and Stephen Hahn to understand why! ;)

Tuesday 14 November 2006

Initial UI Design of the Caiman Installer

Just a little news to point out some fresh mockup screen shots about the upcoming OpenSolaris and future Solaris installer. All this work came from the Installation and Packaging OpenSolaris community.

Interesting, but i will wait and try an eventual LiveCD/LiveDVD to see it in action, if possible.

Sunday 12 November 2006

Installation of the AsciiDoc Utility on Solaris

Because it must always be easy to install, and uninstall, some new tools to try, here is a very quick and little update against the last installation script ((un)install.sh), in order to work out of the box on Solaris and OpenSolaris distributions. It try to preserve the very same behavior for (the original-targeted) Linux platform, although not tested on it.

Here is the diff against the AsciiDoc 8.1.0 release:

--- install.sh.orig  Sat Oct 21 09:21:11 2006
+++ install.sh       Sat Nov 11 14:02:21 2006
@@ -1,36 +1,61 @@
-#! /bin/sh
-#
+#!/usr/bin/env sh
+
 # AsciiDoc canonical installer/uninstaller.
 # Definative packager's guide.
 # Documented in INSTALL file.
-#

-BINDIR=/usr/local/bin
-MANDIR=/usr/local/man
-CONFDIR=/etc/asciidoc
+case `uname -s` in
+  SunOS)
+    install=/usr/ucb/install
+    sfwdir=/opt/sfw
+    bindir=${sfwdir}/bin
+    mandir=${sfwdir}/man
+    cnfdir=${sfwdir}/etc/asciidoc
+  ;;
+  *)
+    install=/bin/install
+    sfwdir=/usr/local
+    bindir=${sfwdir}/bin
+    mandir=${sfwdir}/man
+    cnfdir=/etc/asciidoc
+  ;;
+esac

-if [ `basename $0` == uninstall.sh ]; then
-    rm $BINDIR/asciidoc
-    rm $BINDIR/a2x
-    rm $MANDIR/man1/asciidoc.1
-    rm $MANDIR/man1/a2x.1
-    rm -rf $CONFDIR
+if [ "`basename $0`" = "uninstall.sh" ]; then
+  rm ${bindir}/asciidoc 2> /dev/null
+  rm ${bindir}/a2x 2> /dev/null
+  rmdir ${bindir} 2> /dev/null
+  rm ${mandir}/man1/asciidoc.1 2> /dev/null
+  rm ${mandir}/man1/a2x.1 2> /dev/null
+  rmdir ${mandir}/man1 2> /dev/null
+  rmdir ${mandir} 2> /dev/null
+  rm -rf ${cnfdir}
 else
-    install asciidoc.py $BINDIR/asciidoc
-    install a2x $BINDIR/a2x
-    install -d $MANDIR/man1
-    install doc/*.1 $MANDIR/man1
-    install -d $CONFDIR/filters $CONFDIR/docbook-xsl \
-        $CONFDIR/stylesheets $CONFDIR/javascripts \
-        $CONFDIR/images/icons/callouts
-    install -m 644 *.conf $CONFDIR
-    install filters/*.py $CONFDIR/filters
-    install -m 644 filters/*.conf $CONFDIR/filters
-    install -m 644 docbook-xsl/*.xsl $CONFDIR/docbook-xsl
-    install -m 644 stylesheets/*.css $CONFDIR/stylesheets
-    install -m 644 javascripts/*.js $CONFDIR/javascripts
-    install -m 644 images/icons/callouts/* $CONFDIR/images/icons/callouts
-    install -m 644 images/icons/README images/icons/*.png $CONFDIR/images/icons
+  cp a2x a2x.$$
+  sed -e 's,#!/bin/bash,#!/usr/bin/env bash,' \
+   -e "s,/etc/asciidoc,${cnfdir}," a2x.$$ > a2x
+  cp asciidoc.py asciidoc.py.$$
+  sed -e "s,/etc/asciidoc,${cnfdir}," asciidoc.py.$$ > asciidoc.py
+  ${install} -d ${bindir}
+  ${install} asciidoc.py ${bindir}/asciidoc
+  ${install} a2x ${bindir}/a2x
+  ${install} -d ${mandir}/man1
+  ${install} doc/*.1 ${mandir}/man1
+  for dir in ${cnfdir}/filters ${cnfdir}/docbook-xsl ${cnfdir}/stylesheets \
+   ${cnfdir}/javascripts ${cnfdir}/images/icons/callouts; do
+    ${install} -d ${dir}
+  done
+  ${install} -m 644 *.conf ${cnfdir}
+  ${install} filters/*.py ${cnfdir}/filters
+  ${install} -m 644 filters/*.conf ${cnfdir}/filters
+  ${install} -m 644 docbook-xsl/*.xsl ${cnfdir}/docbook-xsl
+  ${install} -m 644 stylesheets/*.css ${cnfdir}/stylesheets
+  ${install} -m 644 javascripts/*.js ${cnfdir}/javascripts
+  ${install} -m 644 images/icons/callouts/* ${cnfdir}/images/icons/callouts
+  ${install} -m 644 images/icons/README images/icons/*.png ${cnfdir}/images/icons
+
+  mv a2x.$$ a2x
+  mv asciidoc.py.$$ asciidoc.py
 fi

-# vim: set et ts=4 sw=4 sts=4:
+exit 0

This tool is one of the utilities mentioned on the excellent OpenSolaris Documentation Tools web page.

Thursday 5 October 2006

Zones and ZFS Integration, and New Features in OpenSolaris

The aim of this little test case is to present new features of zones, and its tightly integration with the ZFS powerful file system. In order to do so, we will:

  1. Create a specific ZFS namespace for non-global zone(s).
  2. Create a new zone.
  3. Move it to a new zonepath.
  4. Configure it automatically, using a sysidcfg file.
  5. Clone it.
  6. Duplicate the first zone using the clone.

Be sure to have a valid hostname and IP address for the two non-global zones:

# getent hosts | egrep 'beastie|watchie'
192.168.1.1   beastie.thilelli.net beastie
192.168.1.2   watchie.thilelli.net watchie

Create a valid ZFS dedicated namespace:

# zfs create -o compression=on \
   -o mountpoint=/export/zone \
   -o canmount=off pool0/zone
# zfs list -r pool0/zone
NAME         USED  AVAIL  REFER  MOUNTPOINT
pool0/zone  24.5K   228G  24.5K  /export/zone
# zfs get compression,mountpoint,canmount pool0/zone
NAME        PROPERTY     VALUE         SOURCE
pool0/zone  compression  on            local
pool0/zone  mountpoint   /export/zone  local
pool0/zone  canmount     off           local
# zfs mount | grep zone
#

Note: Since build 48 of Nevada, some new ZFS features were added. Create time properties and canmount property are two of them. Please refer to this excellent blog entry from Eric Schrock's weblog for more information on these putbacks.

Configure the different zone's informations:

# zonecfg -z beastie 'create; set autoboot=true; \
   set zonepath=/export/zone/badbeastie; add net; \
   set address=192.168.1.1/24; set physical=nge0; \
   end; verify; commit; exit'
# zonecfg -z watchie 'create; set autoboot=true; \
   set zonepath=/export/zone/watchie; add net; \
   set address=192.168.1.2/24; set physical=nge0; \
   end; verify; commit; exit'
# zoneadm list -vc
  ID NAME             STATUS         PATH
   0 global           running        /
   - beastie          configured     /export/zone/badbeastie
   - watchie          configured     /export/zone/watchie

Then, fire the zoneadm command:

# zoneadm -z beastie install
A ZFS file system has been created for this zone.
Preparing to install zone <beastie>.
Creating list of files to copy from the global zone.
[...]

Instead of configure it manually at first boot, create a configuration file which will do this task automatically for you, and start the zone:

# cat << EOF > /export/zone/badbeastie/root/etc/sysidcfg
system_locale=C
timezone=Europe/Paris
terminal=vt100
security_policy=NONE
root_password=xxxxxxxxxxxxx
timeserver=localhost
name_service=NONE
nfs4_domain=dynamic
network_interface=primary {
  hostname=beastie.thilelli.net
  ip_address=192.168.1.1
  netmask=255.255.255.0
  protocol_ipv6=no
  default_route=192.168.1.254
}
EOF
#
# zoneadm -z beastie boot && zlogin -C beastie
[Connected to zone 'beastie' console]
SunOS Release 5.11 Version snv_48 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: beastie
Loading smf(5) service descriptions: 119/119
Oct  4 04:30:22 svc.startd[3003]: svc:/system/dbus:default:
 Method "/lib/svc/method/svc-dbus start" failed with exit status 95.
Oct  4 04:30:22 svc.startd[3003]: system/dbus:default failed fatally:
 transitioned to maintenance (see 'svcs -xv' for details)
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair
rebooting system due to change(s) in /etc/default/init

[NOTICE: Zone rebooting]
SunOS Release 5.11 Version snv_48 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: beastie.thilelli.net
Oct  4 13:30:40 svc.startd[3757]: svc:/system/dbus:default:
 Method "/lib/svc/method/svc-dbus start" failed with exit status 95.
Oct  4 13:30:40 svc.startd[3757]: system/dbus:default failed fatally:
 transitioned to maintenance (see 'svcs -xv' for details)

beastie.thilelli.net console login: ~.
[Connection to zone 'beastie' console closed]

Well done. Now, change the zone path to something more appropriate. Eventually, adapt the ZFS name accordingly:

# zoneadm -z beastie halt
# zoneadm -z beastie move /export/zone/beastie
# zoneadm list -vc
  ID NAME             STATUS         PATH
   0 global           running        /
   - beastie          installed      /export/zone/beastie
   - watchie          configured     /export/zone/watchie
#
# zfs list -r pool0/zone
NAME                    USED  AVAIL  REFER  MOUNTPOINT
pool0/zone              248M   227G  24.5K  /export/zone
pool0/zone/badbeastie   248M   227G   248M  /export/zone/beastie
# zfs rename pool0/zone/badbeastie pool0/zone/beastie
# zfs list -r pool0/zone
NAME                 USED  AVAIL  REFER  MOUNTPOINT
pool0/zone           248M   227G  24.5K  /export/zone
pool0/zone/beastie   248M   227G   248M  /export/zone/beastie
#
# zoneadm -z beastie boot

Wow... Very interesting feature, isn't it?!

Now, lets try the cloning feature bundle with the new zoneadm command. Do some specific non-global zone tuning before; then do:

# zlogin beastie svcadm disable system/dbus
# zoneadm -z beastie halt
# zoneadm -z watchie clone beastie
Cloning snapshot pool0/zone/beastie@SUNWzone1
Instead of copying, a ZFS clone has been created for this zone.
# zoneadm list -vc
  ID NAME             STATUS         PATH
   0 global           running        /
   - beastie          installed      /export/zone/beastie
   - watchie          installed      /export/zone/watchie
#
# zfs list -r pool0/zone/beastie
NAME                           USED  AVAIL  REFER  MOUNTPOINT
pool0/zone/beastie             251M   227G   248M  /export/zone/beastie
pool0/zone/beastie@SUNWzone1  3.77M      -   248M  -
#
# sed -e 's/beastie/watchie/' \
   -e 's/ip_address=192.168.1.1/ip_address=192.168.1.2/'
   /export/zone/beastie/root/etc/sysidcfg > \
   /export/zone/watchie/root/etc/sysidcfg

You can now enjoy the first boot of the newly created zone:

# zoneadm -z watchie boot && zlogin -C watchie 
[Connected to zone 'watchie' console]
Hostname: watchie
Creating new rsa public/private host key pair
Creating new dsa public/private host key pair

watchie.thilelli.net console login: ~.
[Connection to zone 'watchie' console closed]

Awesome features and technologies i think! Really.

Last, note that Ben Rockwood already has a well written blog entry on this very same subject... he was the first to publish it though ;)

Note: It seems there is a little bug in the snv_48 SX:CR release which prevents the expected automatically ZFS file system creation or cloning from happening properly; the action fails with an error similar to this one:

cannot create ZFS dataset <zfs_name>: 'sharenfs' must be a string

This bug is already closed and fixed, and will be available in the next Solaris Express, see Bug ID: 6468554 for more information on this one.

- page 3 of 4 -