https://wiki.smartos.org
A Little History
2005年,Sun Microsystems开源了其著名的Unix操作系统Solaris,最终被发布为一个名为OpenSolaris的发行版。 OpenSolaris最早采用者和最有效的倡导者是本·洛克伍德(Ben Rockwood),他于2005年6月撰写了“Cuddletech指南”,是OpenSolaris新兴社区的第一个重要贡献。同时,Joyent的首席技术官Jason Hoffman对大多数操作系统无法回答似乎简单的问题感到沮丧,如:“为什么服务器关闭?什么时候可以备份?现在它已经备份了,为什么我的数据库还慢?
杰森知道这些问题在基于Solaris的系统上会更容易解决,并将Sun的开源计划认定为一个巨大的机会。他聘请了本,Joyent成为开源Solaris内核(“Solaris 11 Nevada构建”)中最具创新性的用户之一,多年来积累了大量的专业知识来调整Joyent的云计算需求。
在2010年收购Sun Microsystems之后,Oracle Corp.关闭了OpenSolaris。幸运的是,另一种替代方案 - Illumos是Solaris的新叉,已经在工作中,许多Solaris工程师已经离开了Oracle,并且可以自由地为此做出贡献。毫不奇怪,其中一些工程师最终在Joyent,作为一个有才华的团队的一部分,现在对Illumos做出了非常大的贡献,将其扩展到诸如KVM(内核虚拟机)等关键领域,以及专门用于云端使用的Illumos内核。
The Real Cloud OS
为“云计算”设计的操作系统意味着什么? 云计算操作系统基本面临的挑战是向许多客户提供单一的服务器,同时让每个客户都觉得是唯一使用该机器的客户。 从用户的角度来看,云操作系统必须是:
快速:最小化延迟(操作完成所需的时间)
灵活:具有automatic bursting和轻松缩放
安全:我永远不用担心我的邻居在做什么
对于云数据中心操作员,操作系统另外必须提供:
超快速配置和取消配置(即虚拟机的创建和销毁)
有效和公平的资源共享
多线程和多处理器支持
简单/自动化操作
可靠性
可观察性:当某事物的行为不当时,我们需要能够快速找出错误的原因
Inherited Features
从Illumos,SmartOS继承了强大的功能来满足这些需求。 我们在这里简单介绍一下; 其中一些主题将在今后的职位中深入讨论。
Operating System Virtualization(操作系统虚拟化)
“由于Solaris / Illumos的遗产,SmartOS已经拥有 Containers和Zones - 基于 Containers的虚拟化( Container应该是zones+资源控制),允许用户在彼此隔离的一个服务器上运行多个应用程序集,使用KVM在SmartOS上,Joyent现在可以解决那些需要Linux,Windows或其他操作系统的客户运行完整操作系统的工作负载,可以在完全硬件辅助的虚拟化中运行。与任何其他“虚拟机管理程序”不同,Joyent的KVM映像以一个zone内的进程:实际上是一种非常安全的运行Windows的方式,与Linux不同,SmartOS还可以让客户访问许多用户发现令人信服的Solaris技术,如DTrace和ZFS。“ReadWriteEnterprise
Joyent的首席绩效工程师Brendan
Gregg对zones,KVM和Xen的性能进行了广泛的分析。在DTrace博客的一篇文章中,他以四种方式总结了其性能:特性,框图,内部结构和结果。通过查看I
/
O路径(网络,磁盘)及其开销,他提供了一些最低配置结果,比较了操作系统虚拟化(Zones)与Xen和KVM品种的硬件虚拟化之间的性能.Brendan的全文更深入了解了每个这些技术的工作原理,每个性能评估标准以及每个技术执行网络I
/ O的代码路径,请阅读DTrace博客的全面分析。- joyent
ZFS
这个未来的证明文件系统(future proof file system) - 也是一个逻辑卷管理器 - 给我们:
创建快速文件系统:创建和启动其他zones(Joyent术语中的“SmartMachines”) - 换句话说,添加新的付费客户 - 几乎是即时的。
保证数据完整性,特别强调防止静默数据损坏。
存储池:“虚拟存储”使管理任务和扩展变得更加容易。要扩展存储容量,您需要做的就是将新的磁盘(硬盘,闪存,以及将来可能出现的任何内容)添加到zpool。
快照:ZFS的“ copy-on-write”事务模型可以随时捕获整个文件系统的快照,仅在不断更改工作文件系统之间存储差异。这将创建一个管理员可以轻松回滚到的备份点。
克隆:可以克隆卷和文件系统的快照,创建相同的副本。克隆几乎是瞬间的,最初不消耗额外的磁盘空间。这有助于快速创建新的,几乎相同的虚拟机。
* ARC(自适应替换缓存)可提高文件系统和磁盘性能,降低整体系统延迟。
Scalability(可扩展性)
维基百科将可伸缩性定义为“...系统,网络或过程的能力,以优雅的方式处理越来越多的工作,或者将其扩大以适应这种增长的能力”。
Solaris几十年来一直是主要企业计算机的首选操作系统。 “纳夫说!
Resource Controls
SmartOS提供两种方法来控制CPU消耗: 公平共享调度程序允许操作员设置CPU的最小保证份额。 当系统忙于来自多个zone的需求时,它将生效,以确保每个区域获得公平的份额。 当系统不是很忙的情况下,一个zone可以“burst”超出其通常的限制,消耗超过最低要求,直到为其设置的CPU上限。 CPU帽是最大的,例如 用户支付的CPU时间量。 这也可以用于设置用户对系统性能的期望,即使整个系统尚未填充且负载仍然很轻。
Network Virtualization
虚拟化也用于创建实际上不在真实系统上的事物的错觉,如虚拟网络接口(VNIC)。 Joyent是Project Crossbow的第一批用户,它向OpenSolaris添加了网络虚拟化。 使用此技术,每个Joyent SmartMachine都可以获得32个VNIC,每个VNIC都有自己的TCP / IP协议栈。 这有助于通过使用网络池来最大化其他稀缺资源,IPv4地址。
Observability(可观察性)
Illumos,Mac OS X和FreeBSD的用户都知道[DTrace |]可以让您以前所未有的方式了解整个软件堆栈的发生。 在SmartOS中,这允许操作员在整个数据中心的所有zones和nodes之间观察和排除故障。 在SmartDataCenter中,Joyent团队利用云分析功能,以更方便用户的形式利用了DTrace的功能,云计算运营商及其客户可以使用云计算。
Security
由于SmartOS继承了几个功能,Solaris一直是高度安全的数据中心的操作系统。 SmartOS zones虽然共享系统资源,如CPU和磁盘空间,但根本无法看到对方。因此,在多租户环境中的用户彼此保护;你邻居的安全失效不会影响你的zone。数据安全性也得到保证:现在或以后,任何其他客户都不会共享一个客户的数据字节,因为:
zone只能看到自己的网络流量。
只能通过ZFS文件系统访问磁盘存储,而不能使用原始设备。每个SmartMachine都有自己的文件系统,甚至不知道是否存在任何其他的文件系统。
用户无法访问原始内存设备,因此无法扫描系统内存。
删除SmartMachine后,文件系统将被销毁,并且没有设备路径,未来的客户可以访问该文件系统中剩余的任何数据。
SmartMachine通过一些相同的功能来保护DDOS攻击,保证它们获得公平的系统资源:公平共享计划程序,上限,进程限制,rcapd,交换上限,磁盘文件系统限制,配额限制。通过限制每个区域的资源使用,SmartOS确保即使在重度攻击下,一个区域也不会使其邻居遭到破坏。
Reliability(可靠性)
SmartOS更可靠: 故障管理(FMA):“任何可能的组件 - 硬件或软件遇到问题的细粒度故障隔离和重新启动。为此,系统必须包括智能,自动化,主动诊断错误。诊断系统用于触发有针对性的自动应答或指导人为干预,以减轻特定问题,或至少防止其恶化。 服务管理工具(SMF)是“Solaris操作系统的一项功能,可在每个Solaris系统上为服务和服务管理创建支持的统一模型”。
Joyent-Added Features in SmartOS
Joyent除了Solaris之外,还扩展了SmartOS,具有云操作员特别感兴趣的功能,包括磁盘I / O调节。 经典Solaris中多租户的一个缺点是,在存储共享的情况下,系统上的单个应用程序可以通过同步I / O请求流垄断对本地存储的访问,从而有效阻止系统对I / O请求的服务 其他zone和应用程序,并导致其他租户的性能下滑。 这种新的可操作员可配置的设置会阻止来自不正常行驶区域的I / O(通过在每次读取或写入时增加一个小延迟),从而确保其他区域在读取/写入磁盘时也会转弯。 与CPU帽一样,当系统处于来自多个租户的负载时,磁盘I / O限制只会生效。 当系统相对安静时,单个租户可以享受更快的I / O,而不用打扰邻居。
以下是Joyent向SmartOS添加的主要功能的列表
支持运行 a live image Joyent branded zone
使用类似于Solaris 10的“sparse root”模型
KVM
还添加了kvmstat命令
vmx / svm增强的isainfo
KVM运行在branded zone以获得更高的安全性
可扩展zone内存cap
不使用rcapd - 每个zone都是独立管理的
除非有必要,否则不使用昂贵的RSS计算
使用新的zonememstat命令而不是rcapstat
内存cap是现在的一个rctl,可以用prctl命令进行管理
per-zone ZFS I/O throttle
还添加了新的vfsstat命令
还添加了新的ziostat命令
也增加了zone优先级
ZFS转储到RAID-Z池
作为zone引导/停止创建/销毁的动态VNIC
增强的友好名称(换句话说,每个zone可以具有由全局zone创建的VNIC,名为“net0”)
增强的dladm,dlstat和flowadm命令带有区域支持
zone svcs命令增强功能
-z来看一个zone
-Z查看所有zones
-L查看日志文件
还添加了-z到svcadm和svcprop
CPU bursting
可以定义CPU使用率和上限的基本级别
可以限制一个zone可以burst多少时间
zone可靠性 - 许多内核修复,用于处理防止zone关闭的错误情况
更好的可观察性 - zone的许多新的kstats,CPU bursting,ZFS I / O等。
wall(1) zone support
FSS修复以防止过程不足
coreadm
支持限制核心转储的数量
为zonepath添加%Z corefile名称模式
支持SMF重启速率
DTrace增强
llquantize
vmregs []
enablings on defunct providers prevent providers from unregistering
tracemem()操作需要一个动态大小参数
toupper()和tolower()子例程
lltostr()D子例程应该有一个可选的基础
sdt探测zvol_read和zvol_write
bump dtrace_helper_actions_max为1024
改进的反汇编器支持
新的持久区域改进跨区域重启的DTracing
全系统的crontab支持
每区负荷平均值
驱动程序和模块更新
ixgbe已更新
igb更新了
纳入英特尔的最新acpica代码
从FreeBSD开启IPMI驱动程序
改进了mdb支持
用于迭代对象符号的mdb api函数
:: ugrep和:: kgrep不适用于小于4的大小
:: scalhrtime dcmd
:: printf
:: findjsobjects
mdb_v8
:: walk jsframe和jstack
标签完成
libumem支持分配器
关键的IP DCE修复系统在重的IP负载
显着降低SMF RSS - 重要的许多区域
扰动的VNIC用于测试现实世界的网络
vmadm命令和元数据支持区域启动时自定义
很多杂项。 bug修复
Orchestrating the Cloud(协调云端)
SmartOS允许云托管提供商将更多的客户放在物理服务器上(每个都在自己的SmartMachine中),同时仍然给予它们所有惊人的性能。 Joyent的服务器通常以70%的CPU容量运行,符合15%的行业标准。 Joyent SmartMachines也运行得更快。 SmartOS提供了基本功能; SmartDataCenter添加了将这些概念和操作抽象到GUI和/或API层的编排层。
Beyond the Cloud(超越云端)
我们应该补充说,SmartOS可能具有远远超出云和大数据中心的应用。 这是Gigaom的Stacy Higginbotham的一个想法:SmartOS需要相对较小的内存占用,并启动到仅限于ram的环境以实现性能。 这意味着它可以用于各种较小的计算平台,如数字标牌,机顶盒甚至高端传感器。 展望未来,拥有可在数据中心级别和现场传感器上工作的操作系统能够实现传感器丰富的网络。