Компания Sun Microsystems известна старожилам индустрии ИТ как лидер на рынке малых и средних серверных систем. С 1982 года инженеры Sun работали над проблемами многозадачности, отказоустойчивости, надежности и производительности серверных систем, создав технологии, которым, как оказалось, была уготована долгая жизнь, чего нельзя сказать про саму компанию. Одним из детищ, выросших из стека технологий легендарной операционной системы Solaris, стала SmartOS.

В конце 2012 года для ведения одного проекта, требовавшего привлечения команды JavaScript-программистов, возникла необходимость в освоении Node.js — популярного фреймворка для разработки серверных приложений на языке JavaScript. Среди компаний, поддерживающих проект Node.js, оказалась Joyent, развивающая в том числе и проект облачной операционной системы SmartOS. Сначала показалось, что SmartOS — это лишь специальная ОС, модификация Linux, под которой хорошо «живет» Node.js, однако все оказалось куда серьезнее.

SmartOS — это потомок ОС OpenSolaris, которая была похоронена после поглощения Sun Microsystems в 2010 году. Стоит напомнить, что за этой компанией еще до появления Linux закрепилась репутация поставщика надежных продуктов для корпоративного рынка — системы на SPARCStation на платформе Solaris8 были в свое время несомненными лидерами среди коммерческих решений, например, для телекоммуникационной индустрии. Действительно, SunOS была весьма надежной, и когда в 2005 году был открыт код Solaris, казалось, что на рынке может появиться мощная и надежная альтернатива Linux, способная в условиях конкуренции благотворно повлиять на обе операционные системы. Кроме того, аналогов таких технологий, как Dtrace (динамическая отладка ядра и приложений), ZFS (файловая система) [1], Crossbow (сетевая виртуализация), Zones (технология зон, внутри которых приложения могут работать на одной и той же машине независимо) [2], в экосистеме Linux на тот момент либо не было вовсе, либо были реализованы их слабые прототипы.

В силу организационных причин и невозможности преодолеть коммерческие лицензионные ограничения, OpenSolaris развивалась плохо, и в конце концов проект в 2010 году был закрыт. Тем не менее код этой ОС продолжал жить, и ряд таких компаний, как Joyent, Nexenta и DelphiX, приютивших у себя разработчиков из Sun Microsystems, объединили свои усилия, чтобы возродить этот код под новым брендом Illumos. Получили дальнейшее развитие и такие технологии, как ZFS, DTrace и Zones, — в августе 2010 года проект с открытым кодом Illumos возглавил Гарретт Д'Аморе.

Illumos — это открытый код ядра на базе последней версии OpenSolaris, аналог ядра Linux, разрабатываемого Линусом Торвальдсом, а конкретные дистрибутивы на базе ядра Illumos — это SmartOS, Nexenta OS, OmniOS, BeleNix, OpenIndiana и ряд других, развиваемых отдельными компаниями, в которых, как правило, работают бывшие сотрудники Sun или участники экосистемы Solaris. Система SmartOS специально создана для управления облачными сервисами и поддерживается компанией Joyent, входящей в десятку поставщиков решений класса IaaS. В чем основные отличия SmartOS от «обычных» операционных систем?

Первое — это отсутствие системных файлов ОС на локальном диске. SmartOS загружается с флешки или по сети, а затем располагается в памяти сервера — на диске находятся только данные виртуальных машин. Такое свойство позволяет системе работать очень быстро, правда, за это надо платить увеличением времени загрузки и усложнением механизма «запоминания» пользовательских данных сервера: адресов, конфигураций и других установок, «взводимых» при загрузке ОС. При инсталляции с флешки все эти данные читаются скриптом из специальных мест, и простое изменение конфигурации в папке /etc не переживет перезагрузки.

Второе — встроенный механизм виртуализации, основанный на «контейнерной» технологии. В других ОС для виртуализации требуется дополнительное ПО гипервизора, а «контейнерная» виртуализация позволяет избежать дополнительного слоя гипервизора. Строго говоря, контейнерная виртуализация имеется и в ОС Linux — это разработки компании Parallels (OpenVZ и Virtuozzo Containers), а также jails в FreeBSD. Однако по возможностям разделения ресурсов и безопасности решение Solaris Zones опережает все эти разработки. Широкая система разделения прав, присутствовавшая в Solaris10 и OpenSolaris, позволила создать технологию Zones, благодаря которой виртуальная машина управляется той же ОС, что стоит на всем сервере. Это похоже на OpenVZ и Virtuozzo Containers от компании Parallels, а также на технологию jails во FreeBSD, но имеет более разветвленную систему разделения ресурсов и безопасности, уходящую корнями в коммерческие разработки Sun.

Третье — файловая система ZFS, используемая как основная и позволяющая легко обращаться с образами виртуальных машин, гибко копируя и резервируя их. Кроме того, ZFS построена на принципе copy-on-write, что позволяет эффективно хранить резервные копии данных, занимая минимум физического дискового пространства, а мгновенные снимки папок файловой системы можно делать очень быстро. Файловая система имеет в своем составе менеджер томов, мощную систему кэширования, средства сжатия данных и дедупликации, автоматически поддерживаемую целостность данных и другие менее важные, но удобные функции. В Linux, если не считать проекта ZFS-on-Linux, который пока не очень надежен, аналогом можно назвать только BitRFS, да и та еще не имеет стабильной версии.

Мощный уровень сетевой виртуализации в SmartOS позволяет создавать практически неограниченное количество виртуальных портов, организовывать виртуальные сети между виртуальными машинами, осуществлять маршрутизацию и фильтрацию пакетов, а также решать на одном физическом интерфейсе еще множество задач, типичных именно при работе в облаках. Эта ОС позволяет создавать сложные сетевые архитектуры с разными ролями и правами виртуальных серверов внутри одного физического сервера.

Последнее, что необходимо упомянуть, — это технология Dtrace, позволяющая профилировать приложения, трассируя их вплоть до вызовов функций ядра. Аналоги инструмента Dtrace в Linux и FreeBSD, конечно, есть, но имеют свои особенности [3]. На рисунке приведены области настройки производительности Linux и Solaris.

Особенности настроек SmartOS и Solaris
Особенности настроек SmartOS и Solaris

 

Вместе с тем у SmartOS имеется и ряд недостатков: например, база сертифицированного оборудования у этой ОС намного меньше, чем у Linux, поэтому нужно внимательно относиться к выбору аппаратных платформ. Кроме того, несмотря на целенаправленную работу компании Joyent по сборке дистрибутива и наличие в репозитории более 10 тыс. пакетов и приложений, некоторых пакетов в версии для SmartOS может не оказаться и их придется компилировать. Тем не менее для 80% случаев имеющихся пакетов на SmartOS должно хватить.

Сообщество SmartOS очень компактное — фактически общение идет в рамках листа рассылки, и если почти по любой проблеме Linux или более или менее популярного пакета можно найти обсуждение на serverfault.com или stackoverflow.com, то по SmartOS готового ответа, скорее всего, не найдется и придется задавать вопрос разработчикам, на что, конечно, может уйти время.

***

Применение SmartOS в качестве платформы для размещения коммерческих проектов позволяет существенно увеличить производительность и устойчивость веб-сервисов по сравнению со стандартными Linux-системами. Удобство и скорость ZFS, произвольные конфигурации виртуальных сетевых интерфейсных контроллеров на базе технологии Crossbow, прекрасная и безопасная технология виртуализации, а также развитые средства отладки Dtrace — все это выгодно отличает SmartOS, суля ей неплохое будущее.

Литература

  1. Леонид Черняк. Файловые системы для Больших Данных // Открытые системы.СУБД. — 2011. — № 5. — С. 14–18. URL: http://www.osp.ru/os/2011/05/13009415 (дата обращения 12.11.2014).
  2. Леонид Черняк. Ренессанс виртуализации — вдогонку за паровозом // Открытые системы.СУБД. — 2007. — № 2. — С. 26–35. URL: http://www.osp.ru/os/2007/02/4107980 (дата обращения 12.11.2014).
  3. Brendan Gregg. What Linux Can Learn from Solaris Performance, and Vice-Versa. URL: www.joyent.com/blog/what-linux-can-learn-from-solaris-performance-and-vice-versa (дата обращения 12.11.2014).

Сергей Житинский (sergey@gitinsky.com) — генеральный директор, компания Git in Sky (Санкт-Петербург).