SmartOS

SmartOS – операционная система, основанная на ядре illumos (Solaris), оптимизированная для виртуализации датацентра. Для запуска виртуальных машин Linux или Windows используется гипервизор KVM. SmartOS грузится только с LiveUSB, LiveCD или по сети — на диске сохраняются только настройки и образы виртуальных машин.

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

Для управления пакетами в виртуальных машинах предусмотрен простой менеджер пакетов из NetBSD — pkgsrc (команды для поиска нужных пакетов – pkgin updatepkgin availpkgin search).

Те, у кого есть конкретные задачи, хорошо решаемые на SmartOS (допустим, установка и поддержка высокопроизводительного сервера веб-приложений Node.js), могут воспользоваться готовыми образами виртуальных машин под SmartOS.

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

К несомненным преимуществам SmartOS относится простота обновления системы: достаточно просто заменить образ LiveUSB на новый, и загружаться с него, а все данные сохранятся на диске прежними. При использовании SmartOS в ЦОДах удобно использовать не LiveUSB, а загрузку по сети, тогда для централизованного обновления систем на всех компьютерах в ЦОДе будет достаточно заменить образ, с которого они все загружаются, на новый.

SmartOS, как и другие системы, основанные на illumos, поддерживает ZFS, KVM, DTrace и зоны

Содержание

ZFS

ZFS дает всем системам, основанным на illumos, непревзойденную легкость в настройке большого спектра функций и самые передовые технологии:

  • поддержка файлов и файловых систем размером до 16 экзабайт (264 байт) — такого больше никто не умеет;
  • сквозное контрольное суммирование, исключающее скрытые ошибки в хранимых данных по вине контроллера HDD;
  • экспорт файловой системы во всех распространенных форматах, настраивается одной командой — NFS, CIFS, iSCSI;
  • практически неограниченное количество снимков — можно делать снимки файловой системы хоть раз в секунду;
  • поиск по снимкам — можно отыскать файл, который ошибочно стерли месяц назад;
  • элементарное управление файловыми системами, простое квотирование и резервирование места;
  • мгновенное клонирование файловых систем, бесценное для облачных сред, хранящих образы виртуальных рабочих столов (VDI);
  • де-дублирование и прозрачное сжатие файловых систем, дающее в ряде случаев огромный прирост в скорости работы и впечатляющую экономию места в 100 раз;
  • ускорение работы минимум втрое при использовании журналирования и кэша второго уровня на SSD.

Фактически, уже только ZFS делает построенную на illumos систему идеальной для облачных сред, так как драматически упрощает администрирование. Но это — еще не все!

KVM

KVM — это поддержка виртуальных машин на уровне эмуляции аппаратуры, встроенная в ядро. О технологии KVM, основанной на Qemu, хорошо рассказано в Википедии. Для нужд облака KVM полезна тем, что позволяет установить любую ОС в виртуальную машину, работающую в хост-системе SmartOS. Для удобства, как мы уже упоминали ранее, виртуальными машинами в SmartOS можно управлять с помощью команды vmadm — она и создаст, и модифицирует VM. Виртуальные машины удобно запускать каждую в своей зоне, что собственно и сделано в SmartDataCenter. Это упрощает администрирование и перенос виртуальной машины между физическими серверами.

Зоны

В SmartOS поддерживаются зоны. Это означает, что можно запустить несколько (точнее — до 8192) экземпляров SmartOS, которые будут разделять одно общее ядро. Это — так называемая «легковесная» или «легкая» виртуализация, так как процессы в одной зоне полностью изолированы от процессов в другой зоне и могут общаться между собой только через сеть.

Аналоги зон есть и в других ОС — например, во FreeBSD похожий механизм называется «клетки» (jaila), а в Linux он поддерживается в OpenVZ. Существенным отличием зон в SmartOS является виртуализация всех компонент, включая сеть (в зоне поддерживаются виртуальные сетевые интерфейсы, которые могут быть привязаны к физическим интерфейсам сервера, а могут — к виртуальным интерфейсам хост-системы, причем внутри хост-системы можно реализовать полностью виртуальную сеть, в которую можно объединить часть или все гостевые системы. Кроме этого, в ядре illumos предусмотрено управление всеми доступными для виртуальной машины ресурсами: процессорным временем, объемом доступной памяти, пространством для пейджинга и свопинга, полосой пропускания сети, максимальным количеством процессов и т.п. Помимо ограничения ресурсов illumos предполагает возможность их резервирования.

Такой широкий набор ограничений в других вариантах легкой виртуализации не предоставляется*, этим SmartOS и другие системы на ядре illumos уникальны (по крайней мере, по состоянию на октябрь 2012 года).

Ядру illumos не было бы равных, если бы оно поддерживало live migration зон (перенос зоны с одного физического сервера на другой без остановки ее работы), однако пока эта функциональность еще не реализована. Для переноса зоны с одного сервера на другой ее следует остановить, выполнить копирование всех ее файлов и файла настроек на другой сервер, и там ее импортировать и запустить. Эта процедура достаточно проста, но требует прекращения работы зоны на некоторое время.

DTrace

DTrace — это технология, которая позволяет выполнить профилировку и отладку процесса без его перекомпиляции во время его работы в обычном режиме под рабочей нагрузкой. Это возможно благодаря тому, что все приложения для систем с ядром illumos собираются с библиотеками, поддерживающими DTrace.

DTrace позволяет точно измерить время, затраченное процессором на выполнение различных функций во время работы приложения, построить график распределения функций по нагрузке на процессор или по частоте вызовов, отследить стек вызовов любой функции и проверить, какие именно параметры передаются от одних функций другим. Возможности DTrace этим не ограничиваются, так как для многих специализированных приложений (базы данных, серверы приложений типа Node.js, приложения на Java и многих других) существуют расширенные средства DTrace, позволяющие следить за специфичными параметрами приложений (например, для баз данных можно отслеживать какие именно операторы SQL запускаются, сколько времени тратится на их исполнение и т.п.)

Более подробно — с примерами использования — о DTrace можно прочесть, например, в статьеФилиппа Торчинского на OpenQuality.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *