Open Solaris

Posted: 30th September 2010 by satriyo lugas pambudi in Uncategorized
Comments Off on Open Solaris

Open solaris merupakan suatu Operating System (OS). open solaris ini merupakan Open Source software yang berlicense CDDL. open solaris ini diciptakan oleh komunitas open solaris dan didukung oleh perusahaan ternama SUN Microsystem, inc.

Open Solaris merupakan suatu bentuk kemajuan besar dalam pengembangan dan penyebaran Sistem Operasi. Open Solaris mengkombinasikan dasar teknologi dan perlengkapan Solaris yang kuat dengan fitur dan aplikasi desktop moderen yang dikembangkan oleh komunitas open source seperti GNOME, Mozilla dan Free Software Foundation,” kata Stephen Lau, anggota Open Solaris Governing Board.

Sistem Operasi OpenSolaris didesign sebagai platform bagi inovasi yang memungkinkan para pengembang untuk dapat dengan cepat mengembangkan, menguji, memecahkan masalah dan mengimplementasikan layanan web mereka yang baru, HPC dan aplikasi-aplikasi jaringan.

instalasi Live CD dan Open Solaris Image Packaging System (IPS) berbasis-jaringan yang baru menyederhanakan dan mempercepat instalasi dan integrasi dengan aplikasi pihak-ketiga. Open Solaris IPS meningkatkan kecepatan instalasi dan keakuratan dengan menyediakan kontrol aplikasi serta ketergantungan yang lebih baik dan menawarkan pengelolaan sistem yang mudah digunakan.

Sistem Operasi Open Solaris adalah Sistem Operasi Pertama yang memiliki ZFS sebagai sistem file default-nya, melindungi kerja dengan roll-back yang cepat dan kapabilitas check-summing yang terus-menerus untuk memungkinkan pengguna untuk menguji ide-ide. Fitur Dynamic Tracing (DTrace)-nya menyediakan kemampuan meneliti sistem produksi yang aman dan luas untuk mempercepat pengembangan aplikasi dan pengoptimalan tumpukan AMP/MARS.

Disamping itu Solaris Container memungkinkan pengguna untuk membangun aplikasi -virtualisasi yang dapat disebarkan pada lebih dari 1.000 sistem, dari sistem mesin tunggal sampai multi-CPU dan multi-core. tar

Proyek OpenSolaris diluncurkan pada tanggal 14 Juni 2005 untuk menghasilkan sebuah upaya membangun komunitas dengan menggunakan kode pemograman Solaris sebagai langkah awalnya. Proyek ini merupakan sebuah tempat dimana upaya pengembangan
komunitas saling terkait, tempat dimana para kontributor dari Sun dan siapa pun dapat
berkolaborasi demi perkembangan dan kemajuan teknologi Sistem Operasi.

Ketersediaan kode pemograman OpenSolaris dapat dimanfaatkan untuk banyak hal antara lain sebagai dasar untuk versi mendatang produk Sistem Operasi
Solaris, proyek-proyek Sistem Operasi lainnya, produk pabrikan pihak-ketiga dan distribusidistribusi aplikasi yang diminati oleh komunitas.
Hingga saat ini, Sun Microsystems, Inc. Yang mensponsori proyek ini.

Hingga 2 tahun pertama, lebih dari 60.000 peserta telah terdaftar sebagai anggota. Komunitas para rekayasawan ini terus bertumbuh dan berubah untuk memenuhi kebutuhan para pengembang perangkat lunak, sistem administrator dan pengguna Sistem Operasi Solaris.

Apa itu Proyek OpenSolaris?

-Pemanfaatan perangkat lunak tak terbatas secara gratis.
-Kode pemograman yang menantang, inovatif,lengkap, konsisten, tangguh dan bisa
diperoleh secara bebas.
-Adanya CommonDevelopment and Distribution License(CDDL), sebuah aturan lisensi yang disetujui oleh OSI, yang membolehkan pemanfaatan yang bebas royaliti, modifikasi dan kegiatan ikutan lainnya

Proyek OpenSolaris memenuhi tantangan masa depan teknologi jaringan dengan secara radikal memperbaiki performa jaringan tanpa memerlukan perubahan-perubahan terhadap aplikasi yang sudah ada.
-Kenaikan kinerja aplikasi hingga 50% dengan melakukan perbaikan lapisan TCP/IP
-Dukungan terhadap banyak teknologi jaringan mutakhir, seperti 10 Gigabit Ethernet,jaringan nir-kabel dan hardware offloading
-Mengakomodasi fitur jaringan seperti highavailability, streaming, and Voice over IP (VoIP) melalui dukungan extended routing dan protocol.
-Dukungan terhadap spesifikasi IPv6 terbaru.

Komponen-komponen fungsional utama kernel di Solaris atau OpenSolaris adalah:
1. Aplikasi dan Librari (Applications dan Libraries)
Terdiri dari semua kode tingkat pengguna, data dan librari. Di Solaris, seperti sistem lain berbasis-Unix, bagian ini terdiri dari shells, daemons, compilers, dan semua yang bisa dijalankan dari perintah baris atau di dalam skrip.

2. Panggilan Sistem (System Call)/Trap Handling
Bagian ini adalah tergantung mesin. Terdiri dari kode untuk bertransisi antara pengguna dan kernel, kode yang menangani panggilan sistem dan kode yang menangani perangkap (traps), pengecualian (exceptions), dan kegagalan (faults).

3. Manajemen Sumber Daya (Resource Management)
Kode ini menangani pembatasan-pembatasan penggunaan memori, CPU dan lebar-pita I/O.

4. Layanan-layanan Kernel (Kernel Services)
Kernel menyediakan berbagai layanan bagi aplikasi dan bagian-bagian lain dari Kernel sendiri. Terdapat beberapa layanan yang terkait pewaktuan (timers), yaitu pewaktuan resolusi tinggi (llihat clock_settime(3rt)), dan pewaktuan yang dapat-digunakan oleh program penggerak/driver usable timers (lihat timeout(9f)). Taskqs (lihat taskq(9f)) disediakan untuk memungkinkan program penggerak melakukan penjadwalan tugas asinkron.

5. Proses (Processes)
Program yang sedang berjalan. Setiap proses memiliki ruang alamat (address space) terproteksi dan satu atau lebih yang mengeksekusi kode.

6. Threads
Entitas dasar penjadwalan di Solaris. Setiap proses setidaknya memiliki satu thread. Proses dengan hanya satu thread disebut “single-threaded”, dengan lebih dari satu thread, “multi-threaded”.

7. Penjadwal (Schedulers)
Hanya ada satu penjadwal di sistem, tapi setiap thread dimiliki oleh sebuah “kelas penjadwalan” yang akan menentukan jatah-waktu (time slice) dan prioritas thread tersebut. Saat ini, terdapat 6 kelas penjadwalan.

8. Manajemen Memori (memori Management)
Kode dan struktur data yang digunakan Solaris untuk manajemen ruang alamat virtual proses dan Kernel sendiri.
9. Modul Spesifik Platform (Platform Specific Module, PSM)
Terdiri dari kode yang menangani interupsi (interrupt) tingkat bawah dan beberapa bagian saat sistem boot dan inisialisasi. Sesuai dengan namanya, kode-kodenya tergantung mesin.
10. Translasi Alamat Perangkat Keras (Hardware Address Translation, HAT)
Bagian dari kode manajemen memori yang tergantung mesin. Bertugas menangani tabel halaman (page tables) dan struktur data spesifik perangkat keras dari segi manajemen memori.

11. Antarmuka Vnode (Vnode Interface)
Juga disebut sebagai “virtual file system” atau VFS. Berupa lapisan abstraksi data yang memungkinkan aplikasi berusan dengan gagasan Unix yang disebut “files” tanpa mempedulikan spesifik-spesifik sistem file yang mendasarinya untuk sebuah file yang diberikan. Semua Sistem Operasi mirip-Unix memiliki ini atau abstraksi lain yang sangat mirip.

12. Spesifik-spesifik Sistem File (File System Specifics)
Terdapat lebih dari 10 tipe sistem file di Solaris, dan lebih dapat ditambahkan. Selain disisi administrasi, aplikasi tidak perlu mengetahui tentang tipe-tipe sistem file yang berbeda. Beberapa sistem file didokumentasikan di bagian 7fs halaman manual (coba ls -l /usr/man/man7fs) atau bagian 4 (lihat proc(4) untuk deskripsi procfs). Kita akan membahas secara singkat UFS dan ZFS, nanti di sesi ini.

13. Jaringan (Networking)
Terdiri dari berbagai kerangka kerja (himpunan rutin-rutin dan struktur-struktur data) untuk mengimplementasikan layanan jaringan di Solaris, berupa protokol-protokol TCP/IP dan protokol lain. Jaringan tidak akan dibahas secara rinci di sini.

14. Program Penggerak Perangkat (Device Drivers)
Perangkat lunak yang bertanggung jawab menangani perangkat. Perangkat sendiri berupa perangkat keras atau perangkat “pseudo”. Perangkat pseudo adalah perangkat yang secara keseluruhan diimplementasikan oleh program penggerak.

Modul-modul Kernel
Di OpenSolaris, semua modul kernel yang diperlukan oleh sistem secara dinamis dimuatkan (dynamically loaded). Sebagian besar modul kernel juga secara dinamis dibongkar-muatkan. Secara umum, kernel yang sedang berjalan hanya terdiri dari modul-modul yang diperlukan untuk sumber daya yang sedang digunakan saja. Contohnya: program penggerak perangkat bge hanya dimuatkan jika terdapat perangkat Broadcom BCM57xx di sistem. Bisa juga perangkat/sumber daya terpasang di sistem tetapi modulnya tidak dimuatkan karena perangkat/sumber daya tersebut tidak sedang digunakan. Contohnya: program penggerak pengontrol audio tidak karena perangkat audio tidak sedang digunakan.

Modul Kernel stdanarnya eksis di direktori /kernel, /usr/kernel, dan /platform/i86pc/kernel atau /platform/sun4u/kernel. Modul bisa juga eksis di direktori lain selama dispesifikasikan oleh file /etc/system atau dispesifikan langsung saat boot.

Tedapat dua keuntungan utama dari skema ini:
• Modul-modul yang tidak diperlukan tidak mengkonsumsi sumber daya (memori, dan waktu-cpu untuk thread sistem ketika menjalankan beberapa modul tertentu)
• Selama pengembangan dan pengetesan, modul dapat dibongkar-muatkan dan diganti dengan versi modifikasinya tanpa perlu mereboot sistem untuk melakukannya.
1. Modul unix dan genunix
Modul unix dan genunix dimuatkan oleh kode boot sistem. Ini adalah dua modul yang pertama kali dimuatkan. Kedua modul ini tidak dapat dibongkar-muatkan karena semua subsistem kernel tergantung pada kode dan data dari kedua modul ini. Meskipun, benar bahwa OpenSolaris berbasiskan kernel-mikro, kedua modul ini yang sebenarnya menjadi inti kernel. Semua modul-modul kernel yang lain dimuatkan secara dinamis setelah kedua modul ini dimuatkan.

Modul genunix terdiri dari kode “generic” dan struktur data yang sama yang diperlukan oleh semua platform perangkat keras yang menjalankan OpenSolaris. (Tentunya, modul-modul harus disusun “built” melalui pengkompilasi (compiler) untuk platform yang berbeda). Modul genunix ada di /kernel/genunix untuk 32-bit x86, /kernel/amd64/genunix untuk 64-bit x86, dan /kernel/sparcv9/genunix untuk SPARC.

Perintah nm(1) dapat digunakan untuk mengamati tabel simbol sebuah modul (juga aplikasi dapat-dieksekusi (executable application), librari berbagi ( shared library) dan kernel sendiri).
Modul unix module terdiri dari rutin-rutin tingkat paling bawah, harus dimuatkan sebelum modul-modul kernel lain termasuk genunix. Rutin-rutin di modul ini adalah spesifik platform. Ini karena keterbatasan kinerja (contoh, rutin bcopy(9f) melakukan penyalinan memori ke memori) atau karena kebutuhan untuk mengeksekusi instruksi-instruksi tergantung mesin tertentu (contoh, fungsi() yang men-switch konteks antara therad. Rutin-rutin di modul ini secara mutlak digunakan oleh komponen-komponen lain di dalam kernel.

Contohnya, fungsi mutex_enter(9f) yang digunakan untuk pengunci mutual exclusion (mutexes) didefinisikan di dalam modul ini. Hampir semua di dalam sistem di beberapa titik memerlukan ini. Kodenya ditulis dalam assembler sebagai bahasa pemograman tercepat untuk perangkat keras dimana sistem berjalan (mutexes perlu penggunaan instruksin“test dan set” yang hanya bisa dilakukan di assembler (atau bahasa mesin).

Catatan, tidak semua rutin-rutin assembler ada di sini. Masih terdapat kode dan data tergantung mesin lain yang tidak diperlukan sistem untuk berjalan, tetapi keberdaannya diperlukan untuk kinerja atau keterbatasan-keterbatasan perangkat keras di dalam modul-modul lain di sistem.

2. Module Penggerak Perangkat (Device Drivers)
Penggerak Perangkat adalah modul kernel yang dapat dimuatkan secara dinamis, digunakan untuk mengontrol interaksi dengan perangkat. Sebuah perangkat bisa berupa perangkat keras eksternal (artinya eksternal terhadap CPU dan memori), atau sebuah perangkat-pseudo (keseluruhannya diimplementasikan di perangkat lunak). Agar perangkat eksternal dapat digunakan, harus tersedia program penggerak (driver) untuknya. Perangkat-pseudo memungkinkan berbagai kemampuan hadir di sistem. Contohnya, penggerak memori yang menggerakan /dev/mem, /dev/kmem, /dev/null, dan /dev/zero. Dimana masing-masing adalah memori fisik, memori kernel, keranjang bit keluaran, dan sumber masukan NULLs (Lihat kmem(7d), null(7d), dan zero(7d) untuk informasi lebih lanjut). Banyak penggerak di sistem memiliki halaman manualnya di /usr/man/man7d.

Penggerak perangkat biasanya mendukung panggilan-panggilan sistem terkait I/O “stdanard” seperti read(2), write(2), open(2), close(2), ioctl(2), mmap(2), dll. Tidak semua penggerak mendukung semua panggilan sistem.

Informasi lebih lanjut bagaimana menuliskan program penggerak perangkat dapat ditemukan di:
• Device Driver Tutorial di http://docs.sun.com/app/docs/doc/817-5789
• Writing Device Drivers di http://docs.sun.com/app/docs/doc/816-4854
• Introduction to Solaris Drivers di http://www.opensolaris.org/os/article/2005-03-31_inside_opensolaris__introduction_to_solaris_drivers/
• Solaris Driver Programming di http://www.opensolaris.org/os/article/2005-03-31_inside_opensolaris__solaris_driver_programming/

3. Modul Sistem File
Modul-modul Sistem File digunakan untuk mendukung tipe-tipe sistem file yang berbeda di Solaris. Lihat http://en.wikipedia.org/wiki/File_system untuk deskripsi umum sistem file. Sebuah sistem file terdiri dari himpunan rutin-rutin untuk mengimplementasikan antarmuka vnode (atau VFS – Virtual File System). Ini termasuk rutin-rutin yang dispesifikasikan oleh vnodeops_t dan vfsops_t, masing-masing didefinisikan di /usr/include/sys/vnode.h dan /usr/include/sys/vfsops.h. Catatan, sebuah sistem file tidak perlu mendukung semua rutin. Contohnya, sistem file /proc tidak mendukung titik masuk (entry point) vop_remove(). Ini artinya kita tidak dapat menggunakan rm(1) untuk menghapus file-file di /proc. Secara umum, vnodeops_t adalah untuk ruti-rutin yang bertindak terhadap file-file individual di dalam sistem file, dan vfsops_t adalah untuk rutin-rutin yang bertindak terhadap sistem file sebagai kesatuan. Jadi open(2) ditangani didalam vnodeops_t, sementara mount(2) ditangani didalam vfsops_t.

Modul sistem file juga memiliki beberapa data privat terhadap masing-masing sistem file. Data ini biasanya terdiri dari informasi tentang lokasi data dari sebuah file di dalam sistem file, kepemilikan, catatan-waktu, dll. Struktur dan penggunaan data ini secara total tergantung sistem file. Sistem file yang berbeda memiliki secara keseluruhan memiliki data privat yang berbeda.

Untuk mengimplementasikan sebuah sistem file baru di Solaris juga melibatkan penulisan perintah-perintah administratif untuk mendukung sistem file tersebut. Perintah-perintah ini akan meliputi perintah mount dan unmount, juga perintah untuk menyusun/membuat sistem file baru sesuai tipe sistem filenya. Hingga sekarang, belum ada dokumentasi bagaimana mengimplementasikan sebuah tipe sistem file baru, maka kita harus langsung menggunakan kode pemograman sumbernya dan menyusunnya dari sana.

Sistem File mungkin perlu juga berinteraksi dengan sistem manajemen memori. Khususnya, jika halaman-halaman dibaca/ditulis ke sistem file maka sistem file tersebut harus mendukung rutin-rutin vop_getpage() dan vop_putpage() vnodeops_t.

Selain sistem file yang terdiri dari data di disk (lokal atau jarak-jauh), Solaris memiliki beberapa sistem file dengan kegunaan khusus (disebut sistem file pseudo). Iini menyediakan sebuah model file Unix untuk mengakses berbagai sumber daya sistem.

Dokumentasi tingkat-atas untuk beberapa sistem file yang didukung tersedia di halaman manual /usr/man/man7fs. Catatan, disini tidak terdapat halaman manual semua sistem file Solaris (beberapa sistem file memiliki halaman manual di /usr/man/man4 yang menjelaskan struktur sistem file bersangkutan.
Berikut adalah beberapa sistem file yang tersedia di OpenSolaris dan penjelasan singkatnya. Beberapa sistem file lain tidak tercantum disini.
• UFS – Turunan dari “Fast File System” implementasi awalnya di Unix 4.2bsd, berbasiskan sistem file yang dikembangkan untuk Unix di Bell Labs. Lihat Fast File System for Unix, tersedia di http://www.cs.berkeley.edu/~brewer/cs262/FFS.pdf oleh McKusick, Joy, Leffler, dan Fabry untuk informasi detail implentasi orisinal UFS. Lihat juga http://en.wikipedia.org/wiki/Unix_File_System untuk informasi umum UFS.
• ZFS – Dikutip dari http://www.opensolaris.org/os/community/zfs/whatis/, “ZFS is a new kind of file system that provides simple administration, transactional semantics, end-to-end data integrity, dan immense scalability.” Ini bisa menjadi sesuatu yang dapat diperdebatkan bahwa di masa mendatang, sistem file lain di-disk akan hanya diajarkan di kelas sejarah OS.
• NFS – Network File System awalnya dikembangkan oleh Sun Microsystems. Lihat http://en.wikipedia.org/wiki/Network_File_System untuk deskripsi NFS. Lihat http://en.wikipedia.org/wiki/Network_File_System_(protocol) untuk deskripsi protokol NFS . Lihat http://www.eventhelix.com/RealtimeMantra/Networking/NFS_Protocol_Sequence_Diagram.pdf untuk urutan operasi antara klien dan server.
• Procfs – Memungkinkan proses diakses sebagai file. Berbagai perintah, yaitu ps(1) dan truss(1), menggunakan sistem file ini. Untuk tinjauan lihat proc(4).
• Specfs – Sistem file pseudo untuk mengakses perangkat. Akses file spesial blok dan karakter tersedia di sini
• Swapfs – Sistem file pseudo untuk merawat ruang memori anonim. Ruang memori anonim adalah ruang yang tidak memiliki sebuah nama di dalam sistem file. Terdiri dari, heap, stack, modified private data, dan shared memori. Lihat http://www.opensolaris.org/os/project/muskoka/doc_attic/swapfs.pdf untuk karya ilmiah orisinal tentang sistem file ini.
• Tmpfs – Sistem file yang menggunakan swapfs untuk file-file temporer. Lihat http://www.solarisinternals.com/si/reading/tmpfs.pdf untuk deskripsinya
• Hsfs – Sistem file High Sierra digunakan denganmCD-ROM.

Modul Kelas Penjadwalan
Di Solaris, tidak ada thread terpisah yang melakukan penjadwalan. Tetapi, terdapat rutin-rutin yang dipanggil oleh setiap thread ketika keputusan penjadwalan perlu diambil. Banyak pihak menyatakan bahwa rutin clock() adalah “penjadwalnya”. Rutin clock() dieksekusi setiap 10 milliseconds dan menyesuaikan besarnya jatah-waktu untuk setiap thread yang berjalan.

Di banyak posisi dari siklus-hidup sebuah thread, keputusan penjadwalan perlu diambil. Contohnya, ketika thread perlu mem-block menunggu beberapa sumber daya atau sebuah kejadian, ketika thread di-preempted oleh thread lain, ketika thread tak-terblok, dan ketika thread keluar. Dari semua kasus ini, sebuah rutin tergantung kelas penjadwalan dipanggil. Setiap thread di sistem dimiliki oleh sebuah kelas penjadwalan setiap saat.

Terdapat enam kelas penjadwalan di Solaris hingga saat ini. Penambahan masih mungkin dilakukan. Keenam kelas penjadwalan ini adalah:
• Time-Shared (TS)
• Interactive (IA)
• Real-Time (RT)
• System (SYS)
• Fixed (FS)
• Fair Share Scheduler (FSS)

Time-Shared (TS)
Merupakan kelas default untuk thread/proses pengguna. Penjadwalan “Mean-time-to-wait” artinya bahwa thread di kelas ini semuanya menunggu jumlah waktu rata-rata yang sama untuk mendapatkan kesempatan berjalan. Kelas ini cocok untuk thread terikat I/O (I/O bound) dengan memberi mereka prioritas lebih tinggi (tapi jatah-waktu lebih pendek) daripada thread terikat CPU (CPU/compute bound).

Interactive (IA)
Kelas ini menggunakan sebagian besar rutin-rutin dan struktur data kelas TS. Thread IA dikontrol oleh server X. Thread yang berjalan di dalam jendela aktif diberikan peningkatan prioritas. Prioritas untuk thread yang berjalan di latar-belakang diturunkan. Efeknya adalah proses-proses yang terlihat di layar tampilan akan tampak berjalan lebih cepat.

Real-Time (RT)
Digunakan oleh thread waktu-nyata. Thread ini berjalan pada prioritas yang lebih tinggi daripada thread di kelas yang lainya kecuali interupsi. Thrad ini bisa mem-preempt thread yang sedang berjalan di lingkungan kernel. Informasi lebih lanjut tentang kelas waktu-nyata akan didiskusikan nanti di sesi ini.

System (SYS)
Digunakan untuk thread yang tidak berasal dari tingkat pengguna. Thread seperti meliputi, idle thread, thread interupsi, berbagai daemon kernel dan thread taskq. Kelas SYS merupakan kelas yang paling sederhana, tidak ada penjatahan waktu dan penyesuaian prioritas untuk thread di kelas ini.

Fixed (FS)
Threads di kelas ini memiliki prioritas yang sama seperti TS, IA, dan FSS, tetapi prioritasnya tidak disesuaikan secara dinamis. Kelas FX digunakan oleh nfsd(4).

Fair Share Scheduler (FSS)
Memungkinkan pengguna/administrator memiliki kontrol lebih baik terhadap prioritas penjadwalan dan jatah-waktu. Lihat FSS(7) untuk informasi lengkapnya.

fitur-fitur Utama Open Solaris
Tinjauan Fitur ZFS

ZFS menyajikan model penyimpan ter-pool yang secara lengkap menghilangkan konsep volume dan masalah-masalah terkaitnya seperti partisi, provisioning, lebar-pita yang terbuang dan penyimpan yang dan strdaned storage. Ribuan sistem file dapat dibuat dari pool penyimpan bersama, masing-masing sistem file mengkonsumsi hanya ruang yang dibutuhkannya saja. Lebar-pita gabungan semua perangkat di dalam pool tersedia untuk semua sistem file setiap saat. Semua metadata di disk secara dinamis dialokasikan.

ZFS menggunakan mekanisme “copy-on-write” untuk semua operasi I/O. Ini artinya, ketika dilakukan perubahan data, semua perubahan data (dan meta-data) disalin. Setelah penyalinan lengkap, perubahan yang dilakukan telah konsisten. Jika sistem mengalami kegagalan atau masalah, data orisinal masih dapat ditemukan. Ini meniadakan kebutuhan terhadap journalling/logging, dan menjalankan fsck. Lihat http://www.sun.com/bigadmin/features/articles/zfs_part1.scalable.jsp#transaction untuk deskripsi yang jelas tentang bagaimana mekanisme ini bekerja.

Untuk menjamin proteksi terhadap korupsi data, ZFS melakukan end-to-end in-memori checksumming. Checksum tidak disimpan bersama di dalam blok data, tetapi di dalam metadata yang menyimpan alamat-alamat blok data. Tentunya, metadata sendiri juga di- checksummed. Penjelasan ini dapat ditemui di http://www.sun.com/bigadmin/features/articles/zfs_part1.scalable.jsp#checksumming.

Pool ZFS dapat dibilas “scrubbed” (checksum semua data dan metadata diperiksa), ketika sedang digunakan untuk memeriksa kesalahan tersembunyi (silent errors) akibat cacat perangkat keras atau kegagalan disk. Untuk mereplikasi data, ZFS secara otomatis memperbaikai kesalahan. Lihat zpool(1M).

“Snapshot” adalah versi hanya-dibaca dari sebuah sistem file atau volume. Volume adalah sebuah pool penyimpan-data yang terlihat sebagai perangkat block/karakter. Ketika snapshot diciptakan, tidak ada penyimpan-data yang digunakan. Selama perubahan dilakukan terhadap sistem file/volume orisinal, copy-on-write memungkinkan terjadinya perubahan tersebut, tetapi menyalin data orisinal ke snapshot. Ini menjadikan penciptaan snapshot terjadi sangat cepat. “Klon” adalah salinan dapat-ditulis sistem file atau volume. Klon tidak menggunakan penyimpan-data ketika diciptakan. Lagi, copy-on-write digunakan ketika perubahan-perubahan dilakukan terhadap orginal sistem file atau klon-nya.

ZFS backups dan restore menggunakan snapshots. Tidak ada pembatasan praktis banyaknya snapshot, file, sistem file, atribut file, direktori, perangkat, atau penyimpan data. (Terdapat limit, tetapi secara umum adalah 2**48 atau lebih). ZFS menggunakan teknik pipelining (mirip dengan CPU pipelining), caching, dan pre-fetching untuk meningkatkan parallelisme dan kinerja. Lihat http://www.sun.com/bigadmin/features/articles/zfs_part1.scalable.jsp#scalability untuk rincian informasi skalabilitas.

Terdapat beberapa mekanisme kompresi di ZFS. Selain data, hampir semua metadata dikompresi.

Hanya diperlukan 2 perintah, zfs(1M) dan zpool(1M) untuk administrasi ZFS.
Fitur DTrace
DTrace adalah piranti yang secara dinamis merunut aplikasi dan kernel. DTrace dapat merunut semua hal yang dilakukan oleh aplikasi, dari tingkat pengguna ke dalam kernel dan kembali ke tingkat pengguna.

DTrace dirancang sehingga dapat digunakan di lingkungan produksi. Ketika DTrace secara aktif digunakan, tidak ada beban-kerja tambahan di sistem. Tidak diperlukan juga penambahan instrumentasi (kode pemograman) tertentu di perangkat lunak aplikasi atau kernel agar dapat menggunakan Dtrace.

DTrace dapat digunakan untuk:
Debugging – Dengan DTrace, dapat diketahui rutin-rutin apa yang sedang dipanggil, argumen dan nilai balik dari setiap fungsi-fungsinya.
Analisa Kinerja– Dengan DTrace, dapat diamati dimana aplikasi banyak menggunakan waktunya dan berapa lama. Digunakan untuk menggali lebih dalam dan menemukan penyebab utama masalah kinerja.
Observabilitas – DTrace membantu pemahaman terhadap sistem. Dapat diketahui siapa yang memanggil sebuah fungsi dan fungsi-fungsi lain apa yang dipanggil oleh satu fungsi tertentu yang sedang dipanggil.
Jangkauan Kode (Code Coverage) – Sebagai piranti pengetes, DTrace digunakan untuk mengetahui apakah sebuah fungsi dipanggil dan dimana.

Beberapa dokumentasi DTrace dapat ditemukan di: Solaris Dynamic Tracing Guide di http://docs.sun.com/app/docs/doc/817-6223. Informasi pengantar dapat ditemukan di: http://www.solarisinternals.com/wiki/index.php/DTrace_Topics_Intro.

Pengenalan DTrace langkah-demi-langkah terdapat di Adam Leventhal’s DTrace Bootcamp: http://learningsolaris.com/docs/dtrace_course.2005.8.18.pdf.

Manajemen Kegagalan
The Fault Management framework (FMA) adalah fitur baru Solaris yang memungkinkan sistem secara aktif mencegah, mendiagnosa, dan memulihkan dari kegagalan. Administrator disajikan interaksi terbimbing ketika campur-tangan diperlukan untuk menangani kegagalan. FMA juga mencoba mengisolasi masalah sehingga kegagalan tidak mempengaruhi keseluruhan sistem. Tersedia berbagai API program penggerak perangkat untuk penanganan kegagalan.

Zona (Zones)

Zona mengimplementasikan sebuah abstraksi sistem operasi yang memungkinkan beberapa aplikasi berjalan secara terisolasi satu dengan lainya di perangkat keras fisik yang sama. Misalnya, sebuah sistem dapat memiliki sebuah zona pengembangan, sebuah zona pengetesan dan sebuah zona produksi. Semua zona berjalan di satu kernel. Tidak ada kernel yang terpisah untuk setiap zona. Masalah di kernel dapat mempengaruhi semua zona.

Satu zona disebut zona “global”. Semuanya terlihat di dalam zona global. Aplikasi yang berjalan di dalam zona tidak akan terlihat oleh aplikasi lain di zona yang lain. Misalnya, perintah ps(1) di dalam sebuah zona hanya menampilkan proses-proses di dalam zona tersebut.

Zona yang digunakan bersama fasilitas manajemen sumber daya disebut ”Containers”. Biasanya, istilah zona dan container dapat dipertukarkan. Manajemen sumber daya memungkinkan administrator mengontrol berbagai sumber daya terdiri dari utilisasi CPU, lebarpita jaringan, batasan proses dan thread, utilisasi memori dan utilisasi HBA.

Beban-kerja untuk menjalankan aplikasi di dalam zona biasanya kurang dari 1% CPU.

Zona Branded memungkinkan aplikasi yang berjalan di dalam zona memiliki lingkungan sistem operasi yang berbeda. Zona brdaned “lx” mengimplementasikan aplikasi-aplikasi linux berjalan di dalam zona.