Thursday, November 13, 2008

EON Storage Features

EON ZFS Storage (Embedded Operating system/Networking)


Introduction (updated):
EON is a small Solaris ZFS NAS (network attached storage) image based on opensolaris. This is a RAM based live/install image which runs from CD, USB or CF (compact flash) or Disk on Module. The appliance image provides a high performance 32/64-bit storage solution built on ZFS using cost effective disks. A build script provides the basis for building your own network attached storage appliance on x86 hardware from the Solaris Express Community Edition CD's.


Requirements to test/install the pre-built iso (updated):
- A blank CD to burn, demo and install the iso (eon.iso).
- A bootable USB drive, 128 Mb or larger (256 Mb or higher recommended).
- An IDE to compact flash adapter and 128Mb or larger compact flash drive (CF install).
- A x86 machine capable of booting from CD and USB.


Requirements to create your own iso:
- A standard working opensolaris installation, B72 or higher.
- Solaris Community Express Edition CD's (a.k.a Opensolaris) or ISO images, B84 or higher.
- EON build scripts (imgsol.sh) and root access on the working Solaris installation.


Tested Solaris Community Express versions :
- Solaris Community Express Edition B84 - B89.


Features (updated):
- Simple and Secure CLI (command line interface) administration. Web-based GUI/BUI possible as a future development port of the Freenas web admin
- Supports ZFS, iSCSI (target and client initiator), NFSv3, NFSv4, CIFS (Sun Microsystems Implementation) or Samba, SFTP, SSH, NTP, IP filtering, rsync
- Supports RAID levels:
RAID-0 (striping)
RAID-1 (mirroring)
RAID-Z (similar to RAID-5 with variable-width stripes to avoid RAID-5 write hole, requires 3 or more disks)
RAID-Z2 (RAID-6, double parity, requires 4 or more disks)
- Supports client OS, Windows 2000/XP/2003/Vista, Mac OS X, Unix and Linux
- provides transparent and dynamic filesystem compression (using zlib or gzip) to save space
- Capable of expanding the zpool by expanding each disk in the pool (since snv_117)
- allows thin provisioning (green) file systems
- unlimited files, links, directories and snapshots(version-ing)
- link aggregation
- IPfilter module and application to control/restrict access to the appliance/device
- DTrace, Perl and PHP
- multi-cast DNS client and server (since version 0.59.3)


The development of the busybox and squashfs project will help to further reduce the memory footprint and performance of the image. Further possible enhancements include using mkisofs to create iso images of a binary set. This binary set could be compressed and later mounted to the opensolaris storage appliance image (eg /usr/local) via lofiadm using gzip compression/decompression.


Quickstart guide:
After the image (eon.iso) is burned to a CD and booted. Login as root.
user: admin pass: eonstore
user: root pass: eonsolaris

Type and run the following. This script prompts the user through configuration questions like hostname, IP/DHCP, netmask, domain name and more. This step will ask questions to configure the image for live image use.
# /usr/bin/setup


This step is optional and requires a destination USB (inserted) or CF drive attached. The command will format and install the live image to a USB or CF drive.
# /usr/bin/install.sh

This step should be done after install.sh or, to preserve configuration changes made to the image. This preserves the original image to /boot/x86.eon.orig (bootable by the OEM choice from GRUB) and saves a new default boot image to /boot/x86.eon. It will move the live image to x86.eon.1, x86.eon.2 and so on each time it is run.
# /usr/bin/updimg.sh


Notes:
For size considerations, the network driver built into the image is intended solely for the machine the image will run on. This submitted image may or may not match the interface in your testing machine. In the submitted image, the test hardware (Dell Optiplex GX 280, 520, 620 745) had broadcom and intel cards so the driver (bge, iprb) package (SUNWbge) was installed. The user can substitute a suitable driver by building their own EON live/install image.


Build package command description:
- imgsol.sh: The script to build your own live storage image. It does this using Solaris Community Express Edition CD's.

- stripbnl.sh: This script strips binaries and libraries to reduce the size and RAM footprint of the image

- trimpkg.sh: This processes the del-SUNWxxx package files and removes any file not commented. The del-SUNWxxx package files a created using pkgchk -vn SUNWxxx > del-SUNWxxx 2>&1.

- chkdev.sh: This script automounts CD's, USB and CF drives.

- makecd.sh: This script creates the CD iso image at the end of the build.

- example.imgsol.sh: Is an example answer key output of imgsol.sh used to build the submitted EON live image


Open bug(s) and other errors:
*1 - CIFS via Samba only for now, because the solaris CIFS kernel module is not running on a ramfs. The /devices/pseudo/smbsrv@0 device entries do not get created. Last working version is on B84. This seems broken since B85, bug id CR #6700070 (http://bugs.opensolaris.org/view_bug.do?bug_id=6700070), thread (http://www.opensolaris.org/jive/thread.jspa?messageID=243767&#243767)

*2 - The "WARNING: add_spec: No major number for nv_sata, ahci, si3124, marvell88sx" at boot are harmless. CR #6486493 (http://opensolaris.org/os/community/on/flag-days/pages/2008030601/)

*3 - Multiple cpu cores not being shown by psrinfo. Noticed since B87. Last noted working in B84.

11 comments:

JMoore said...

Any chance of adding the iSCSI target code to this, and at startup or image creation) time give the option to share the attached disks as direct iSCSI disks?

Or share ZFS volume datasets via iSCSI?

--Joe

Sean said...

Do you mean the iscsi client? Shouldn't be too hard. It's more of a size concern to keep the image small as possible.

The current version can already share ZFS volume as datasets via iscsi. Please let me know if it is failing or not working for you.

clockworm said...

i'm trying to test installing to a virtual ide disk in virtualbox, and getting errors like this:

/dev/rdisk/c0d0s0: no such device or address
newfs_slice /dev/rdisk/c0d0s0 failed

any ideas what might be wrong?

Andre Lue said...

clockworm,

I am aware of this problem. The workaround is to run format/partition manually. I have a new install.sh with the fix which will be released in the snv_110 release.

Andre Lue said...

Virtual disk format issue fixed since version 0.58.9 snv_104.

vertex_vr4 said...

hi andre,

Nice work with eon. I've got it up and running on my thecus (N5200R).

I've been looking into hdd monitoring and power down and I think it would be good if there was a svc manifest for smartd as well as saving away /etc/smartd.conf on updimg.sh.

I can provide mine if you like...

Again - nice work,
John

Andre Lue said...

vertex_vr4,

Feel free to post back your /etc/smartd.conf.

As for starting smartd, you can add the entry to /mnt/eon0.exec.

vertex_vr4 said...

My smartd.conf is boring:
/dev/rdsk/c1t0d0 -d scsi -n standby
/dev/rdsk/c1t1d0 -d scsi -n standby
/dev/rdsk/c1t2d0 -d scsi -n standby
/dev/rdsk/c1t3d0 -d scsi -n standby
/dev/rdsk/c1t4d0 -d scsi -n standby

A little more investigation shows that there may be a problem with the /etc/power.conf. It appears that the last line "autoshutdown autoshutdown......" causes the pmconfig command to spit the dummy - "pmconfig: "/etc/power.conf" line 16, bad time format (autoshutdown)"

Removing that line makes everything work including the HDDs to spin down. I'm not sure if this is peculiar to my system or not and I didn't spot anything in your scripts...

Tresten said...

Solaris 11 Express has been released: http://www.oracle.com/us/products/servers-storage/solaris/solaris-11-express-185123.html

Will any of this be ported to EON?

Andre Lue said...

Hi Tresten,

Most likely not, at least not until the legalese clearly states it is ok to do so.

Elon Richards said...

Andre

First let me say I am from Barbados and love this product. Great job! I am trying to get my system to sleep or shutdown after some idle time and I also want to be able to do Wake On LAN.
When I modify the last line "autoshutdown ..." it is reset back to the original setting. Is there a solution to this problem?

Elon