SmartOS เป็นระบบปฏิบัติการที่พัฒนาต่อมากจาก illumos ซี่งก็คือ openSolaris ในอดีตนั้นเอง smartos นั้นเป็น os ที่ถูกพัฒนามาเพื่อ virtualization โดยเฉพาะ โดยมีจุดเด่นอยู่ตรงที่ สามารถใช้งานได้ทั้ง Zone และ KVM ทำให้เราสามารถรันได้แทบทุก OS ไม่ว่าจะเป็น linux solaris bsd หรือ windows ก็ตาม โดยมีประสิทธิภาพใกล้เคียงกับ bare metal นอกจากความสามารถในการรัน os ใดๆก็ได้แล้วนั้น smartos ยังเลือกใช้ ZFS ซึ่งเป็น filesystem ชั้นยอดที่ Sun ได้ทิ้งเอาไว้ให้กับโลกของ opensource

smartos ไม่จำเป็นต้อง install ลง hdd เหมือนกับ xen หรือ vmware แต่สามารถบูทผ่าน PXE หรือ flashdrive ได้ทันที โดย smartos จะแตกตัวเองออกมาาสร้าง ram  filesystem สำหรับตัวเอง โดยคอนฟิกทั้งหมดจะถูกบันทึกไว้ใน zfs pool แล้วจะถูกค้นหาเองโดยอัตโนมัติทุกครั้งที่ smartos รัน นั่นแปลว่าเราสามารถอัพเดทตัว smartos ได้โดยเพียงแค่การเปลี่ยน image เท่านั้นเอง เทียบกับการสร้าง Cloud ด้วยเทคโนโลยีอื่นๆ ไม่ว่าจะเป็น KVM Xen หรือ VMware ต่างก็ต้องเสียเวลาลง hypervisor ด้วยตนเองทุกครั้งไป

แต่สิ่งที่ smartos ในเวอร์ชั่นฟรียังขาดไปก็คือตัว Cloud Management (จริงๆก็มีอยู่ชื่อว่า FIFO) หลายๆคนอาจจะเคยได้ยินชื่อ openstack cloudstack หรือ eucalyptus ซึ่งก็คือ orchestration system สำหรับ cloud นั่นเอง หรือง่ายกว่านั้นก็คือหน้าเว็บ ให้เราเข้าไปกดปรับแต่งค่า สร้าง vm ใส่ลงไปใน compute node ที่เรามีนั่นเอง ซึ่งตรงนี้อาจจะต้องใช้เวลา จนกว่าจะเริ่มมีคน port ระบบพวกนั้นให้ใช้งานกับ smartos ได้

เริ่มต้นกับ SmartOS

เริ่มต้นง่ายๆด้วยการเข้าไปโหลด virtual image ของ vmware/virtualbox มาทดลองเล่นดูเองก่อน ใครที่ใช้ Solaris มาก่อนอยู่แล้วก็สามารถเล่นต่อไปได้ไม่ยากโดยให้ทดลองเรียกคำสั่งเหล่านี้ vmadm/imgadm ซึ่งเป็นโปรแกรมที่เขียนอยู่บน Node.js (Joyent ชอบ Node.js มาก) แปลว่า smartos ไม่สามารถรันบน SPARC ได้เพราะ node.js (V8) ไม่ support SPARC เนื่องจากเป็น Big-endian

หลักการง่ายๆของ SmartOS ก็คือทุกอย่างทำงานอยู่บน os/zpool เดียวกัน โดยบน os ก็จะมี zone (tenant) อาศัยอยู่หลายๆ zone รวมถึง KVM ที่รันอยู่บน zone ด้วยเช่นกัน

การ install vm ลงไปใน smartos นั้นก็เหมือนกับการ copy hdd ที่มี os ลงไว้อยู่แล้ว ลงไปใน compute node นั่นเอง ซึ่งตัว image ที่จะต้อง copy มาลงนั้นก็มี repository ที่ทาง joyent ทำไว้อยู่แล้ว เราก็สามารถเรียกดูได้จาก imgadm avail หากต้องการ install image ไหนก็ให้ใช้คำสั่ง imgadm import UID (ใน smartOS หลายๆอย่างจะถูก reference ด้วย UID ไม่ว่าจะเป็น disk หรือ image ก็ตาม)