USE IMPROVE EVANGELIZE
Open Solaris
Bart Muijzer
Netherlands Open Solaris User Group Host
USE IMPROVE EVANGELIZE
Disclaimers
• I am not a Lawyer (nor do I play one on TV)
• I don't know Linux
• I am not into licensing structures
• Not speaking for Sun (today)
• Here to just show a bit of OpenSolaris
Thanks for the invitation !!
2
USE IMPROVE EVANGELIZE
Agenda
● Sun and OpenSource
● OpenSolaris features
– With demos...
● Solaris Development Process
● OpenSolaris Distributions
3
USE IMPROVE EVANGELIZE
Sun and Open Source
“Every software asset we produce is open
source. If it isn't today, it will be pretty
damn quickly.”
Jonathan Schwartz
CEO, Sun Microsystems
January 2007
4
USE IMPROVE EVANGELIZE
Sun and OpenSource
● Driver and long-term strategy:
Innovation through Sharing
● Build Communities:
– opensolaris.org
– User Groups (NLOSUG)
● Can't do without:
– “You can't hire all the smart people” -- Bill Joy
– Key to Solaris on x86
● Buisiness: How to make money?
http://blogs.sun.com/bmc/entry/dtrace_leopard_and_the_business
http://blogs.sun.com/jimlaurent/entry/scott_mcnealy_s_five_reasons
● Licensing (GPL, CDDL) 5
USE IMPROVE EVANGELIZE
NLOSUG Charter
The Netherlands OpenSolaris User Group has
been established to connect members of the
community interested in OpenSolaris and Solaris,
and to grow the OpenSolaris community in the
Netherlands. All are welcome – developers, open
source contributors, systems administrators,
architects, and any other interested parties.
6
USE IMPROVE EVANGELIZE
NLOSUG on the Internet
How to join and keep in touch
www.nlosug.org
Everything important will be on this site
7
USE IMPROVE EVANGELIZE
OpenSolaris and Solaris
Development Release
Closed
Source CDE Source
Consolidation Solaris 9 Patches
Admin Sun-only
s opened by Development Solaris 10 Updates,
Sun (ongoing Install Open Source Patches
since Jan Sun and Solaris Express (Nevada)
ON Community
2005)
X Development Developer Edition
OpenSolaris Community
Distributions (various)
8
USE IMPROVE EVANGELIZE
OpenSolaris
● Goal: allow external collaborations during the
development of Solaris
● Distribution: SolarisExpress Developers Edition
– Quarterly release
– Full Solaris binary distribution
– Source available for: ON, JDS, SFW
– No sources for: closed source bits
– The latest Developer Tools
Sun Studio 12, gcc, NetBeans 5.5, Java Platform,
Standard Edition 6
Automatically installed when the OS is installed.
9
USE IMPROVE EVANGELIZE
OpenSolaris Features
10
USE IMPROVE EVANGELIZE
The Zettabyte Filesystem (ZFS)
● Existing file systems
– No defense against data corruption
– Lots of limits
● Size, number of files, etc.
– Difficult to manage
● fsck, /etc/fstab, partitions, volumes
● Too many things to manually tune
● Next wave design principles
– End-to-end data integrity
– Lots of capacity
– Simple to administer
11
USE IMPROVE EVANGELIZE
ZFS: no more of...
# format # newfs /dev/md/rdsk/d20
... (long interactive session omitted) newfs: construct a new file system /dev/md/rdsk/d20: (y/n)? y
... (many pages of 'superblock backup' output omitted)
# metadb -a -f disk1:slice0 disk2:slice0 # mount /dev/md/dsk/d20 /export/home/ann
# vi /etc/vfstab ... while in 'vi', type this exactly:
# metainit d10 1 1 disk1:slice1 /dev/md/dsk/d20 /dev/md/rdsk/d20 /export/home/ann ufs 2 yes -
d10: Concat/Stripe is setup
# metainit d11 1 1 disk2:slice1 # newfs /dev/md/rdsk/d21
d11: Concat/Stripe is setup newfs: construct a new file system /dev/md/rdsk/d21: (y/n)? y
# metainit d20 -m d10 ... (many pages of 'superblock backup' output omitted)
d20: Mirror is setup # mount /dev/md/dsk/d21 /export/home/ann
# metattach d20 d11 # vi /etc/vfstab ... while in 'vi', type this exactly:
d20: submirror d11 is attached /dev/md/dsk/d21 /dev/md/rdsk/d21 /export/home/bob ufs 2 yes -
# metainit d12 1 1 disk1:slice2 # newfs /dev/md/rdsk/d22
d12: Concat/Stripe is setup newfs: construct a new file system /dev/md/rdsk/d22: (y/n)? y
# metainit d13 1 1 disk2:slice2 ... (many pages of 'superblock backup' output omitted)
d13: Concat/Stripe is setup # mount /dev/md/dsk/d22 /export/home/sue
# metainit d21 -m d12 # vi /etc/vfstab ... while in 'vi', type this exactly:
d21: Mirror is setup /dev/md/dsk/d22 /dev/md/rdsk/d22 /export/home/sue ufs 2 yes -
# metattach d21 d13
d21: submirror d13 is attached # format
... (long interactive session omitted)
# metainit d14 1 1 disk1:slice3 # metattach d12 disk3:slice1
d14: Concat/Stripe is setup d12: component is attached
# metainit d15 1 1 disk2:slice3 # metattach d13 disk4:slice1
d15: Concat/Stripe is setup d13: component is attached
# metainit d22 -m d14 # metattach d21
d22: Mirror is setup # growfs -M /export/home/bob /dev/md/rdsk/d21
# metattach d22 d15 /dev/md/rdsk/d21:
d22: submirror d15 is attached ... (many pages of 'superblock backup' output omitted)
12
USE IMPROVE EVANGELIZE
but:
● Create a storage pool named “home”
# zpool create -m /export/home home mirror c0t3d0 c0t4d0
● Create filesystems “ann”, “bob”, “sue”
# zfs create home/ann
# zfs create home/bob
# zfs create home/sue
● Later, add space to the “home” pool
# zpool add home mirror c0t8d0 c0t9d0
13
USE IMPROVE EVANGELIZE
ZFS Data Integrity Model
● Pooled Storage model
● Everything is copy-on-write
Never overwrite live data
On-disk state always valid – no “windows of vulnerability”
No need for fsck(1M)
Snapshots are free
● Everything is transactional
Related changes succeed or fail as a whole
No need for journaling
● Everything is checksummed
No silent data corruption
No panics due to silently corrupted metadata 14
I USE IMPROVE EVANGELIZE
Predictive Self Healing
● Components:
– Fault Management Architecture (FMA)
– Service Management Facility (SMF)
● SMF: Manage running services
– Replace ancient “rc files”
– Maintain:
•Dependencies
• Snapshots
• Status
– Functions: enable, disable, rollback, restart
– See:
http://www.sun.com/bigadmin/content/selfheal/smf-
quickstart.html 15
USE IMPROVE EVANGELIZE
SMF bootgraph
16
USE IMPROVE EVANGELIZE
Dtrace – Dynamic Tracing
What is causing all the cross calls?
The X server
What are the X servers doing?
They're mapping and unmapping /dev/null
Why are they doing that?
They're creating and destroying pixmaps
Who's asking them to do that?
Several instances of a stock-ticker application
How often is each stock-ticker making this request?
100 times per second
Why is the application doing that?
It was written by 10000 monkeys at 10000 keyboards
17
USE IMPROVE EVANGELIZE
Dtrace (2)
C C dtrace(1M)
User
DTrace Framework
Kernel
P P P P P
18
USE IMPROVE EVANGELIZE
Demo: DTrace
19
USE IMPROVE EVANGELIZE
Least Privilege (1)
● Running with as few privileges as
needed to get the job done and no more
● No more “all or nothing” proposition
● So: check for privilege, not for euid=0
● Rule: a process can NEVER obtain more
privileges than it already has
20
USE IMPROVE EVANGELIZE
Least Privilege (2)
● Each process has 4 privilege sets:
– E – Effective set
Privileges in effect
– P – Permitted set
Privs the application is allowed to put into effect
Upperbound of E
– I – Inheritable set
Privileges that are inherited by exec'd process
– L – Limit set
Limit of privs a process or its childs can obtain
Not enforced until exec-time
Typically the set of all privileges
21
USE IMPROVE EVANGELIZE
Least Privilege(3)
contract_event contract_observer cpc_cpu
dtrace_kernel dtrace_proc dtrace_user
file_chown file_chown_self file_dac_execute
file_dac_read file_dac_search file_dac_write
file_downgrade_sl file_link_any file_owner
file_setid file_upgrade_sl graphics_access
graphics_map ipc_dac_read ipc_dac_write
ipc_owner net_bindmlp net_icmpaccess
net_mac_aware net_privaddr net_rawaccess
proc_audit proc_chroot proc_clock_highres
proc_exec proc_fork proc_info
proc_lock_memory proc_owner proc_priocntl
proc_session proc_setid proc_taskid
proc_zone sys_acct sys_admin
sys_audit sys_config sys_devices
sys_ipc_config sys_linkdir sys_mount
sys_net_config sys_nfs sys_res_config
sys_resource sys_suser_compat sys_time
sys_trans_label win_colormap win_config
win_dac_read win_dac_write win_devices
win_dga win_downgrade_sl win_fontpath
win_mac_read win_mac_write win_selection
win_upgrade_sl
22
USE IMPROVE EVANGELIZE
Demo: Least Privileges
23
USE IMPROVE EVANGELIZE
Zones
● Single Solaris instance
– Appearance of many OS instances
– Minimal performance impact
Container Container Container
Container
Zone
Container
Zone
Container
Zone Zone
OS OS
CPU CPU CPU CPU CPU CPU CPU CPU
Memory Memory
24
USE IMPROVE EVANGELIZE
Resource sets
OS S OS
CPU Memory SWAP
Hardware
25
USE IMPROVE EVANGELIZE
Resource Pools
Resource
OS S ResourceOS
Pool Pool
CPU Memory SWAP
Hardware
26
USE IMPROVE EVANGELIZE
Projects
Project Project
[10] [50] Project
Resource
OS S ResourceOS
Pool Pool
CPU Memory SWAP
Hardware
27
USE IMPROVE EVANGELIZE
Zones and Resource Mgt
Solaris Zones
+
Solaris Resource Manager
Solaris Containers
28
USE IMPROVE EVANGELIZE
Resource Management
ZONE ZONE
Project
Project
Project
Resource
OS S ResourceOS
Pool Pool
CPU Memory SWAP
Hardware
29
USE IMPROVE EVANGELIZE
Can I join?
● Sign contributor agreement
● Start project on www.opensolaris.org, or
● Pick bugs from http://bugs.opensolaris.org/
(start with keyword “oss-bite-size”) (>500)
● Ask for sponsor on
[email protected]
● Work with sponsor to get code integrated
● Large projects require approvals from
community and review by Architecture
Committies
30
USE IMPROVE EVANGELIZE
Current projects on opensolaris.org
Some 200
● ZFS boot
● Network Virtualization (Crossbow)
● Revamped package management (Indiana)
● In-kernel CIFS, iSCSI
● ZFS crypto
31
USE IMPROVE EVANGELIZE
Can I fork()?
OpenSolaris Distributions
● SchilliX
● MartUX
● BeleniX
● Nexenta
● Solaris Express, Developers Edition
● Indiana
Yes, you can fork() !!
32
USE IMPROVE EVANGELIZE
NLOSUG on the Internet
How to join and keep in touch
www.nlosug.org
Everything important will be on this site
33
USE IMPROVE EVANGELIZE
Thank you!
Bart Muijzer
[email protected]
“open” artwork and icons by chandan:
http://blogs.sun.com/chandan
USE IMPROVE EVANGELIZE
35