Эффекты виртуализации
Экспертиза современных продуктов и недавние исследования раскрывают некоторые интересные возможности развития МВМ и требования, которые они предъявят к технологиям виртуализации.
Администраторы центра данных могут с единой консоли быстро вводить в действие ВМ и управлять тысячами виртуальных машин, выполняющихся на сотнях физических серверов. Вместо того чтобы конфигурировать отдельные компьютеры, администраторы будут создавать по имеющимся шаблонам новые экземпляры виртуальных серверов и отображать их на физические ресурсы в соответствии с политиками администрирования. Уйдет в прошлое взгляд на компьютер как на средство предоставления конкретных услуг. Администраторы будут рассматривать компьютеры просто как часть пула универсальных аппаратных ресурсов (примером тому может служить виртуальный центр VMware VirtualCenter).
Отображение виртуальных машин на аппаратные ресурсы очень динамично. Возможности миграции работающих ВМ (подобные тем, которые обеспечивает технология VMotion компании Vmware) позволяют ВМ быстро перемещаться между физическими машинами в соответствии с потребностями центра данных. МВМ сможет справляться с такими традиционными проблемами, как отказ оборудования, за счет простого перемещения ВМ с отказавшего компьютера на исправный. Возможность перемещения работающих ВМ облегчит решение аппаратных проблем, таких как планирование профилактического обслуживания, окончание срока действия лизингового договора и модернизация оборудования: администраторы станут устранять эти проблемы без перерывов в работе.
Еще недавно нормой являлась ручная миграция, но сейчас уже распространены инфраструктуры виртуальных машин, которые автоматически выполняют балансировку нагрузки, прогнозируют отказы аппаратных средств и соответствующим образом перемещают ВМ, создают их и уничтожают в соответствии со спросом на конкретные услуги.
Решение проблем на уровне МВМ положительно сказывается на всех программах, выполняющихся на ВМ, независимо от их возраста (унаследованная или новейшая) и поставщиков. Независимость от ОС избавляет от необходимости покупать и обслуживать избыточную инфраструктуру. Например, из нескольких версий ПО службы поддержки или резервного копирования останется лишь одна – та, которая работает на уровне МВМ.
Виртуальные машины сильно изменили отношение к компьютерам. Уже сейчас простые пользователи умеют легко создавать, копировать и совместно использовать ВМ. Модели их применения значительно отличаются от привычных, сложившихся в условиях вычислительной среды с ограниченной доступностью аппаратных средств. А разработчики ПО могут применять такие продукты, как VMware Workstation, чтобы легко установить компьютерную сеть для тестирования или создать собственный набор испытательных машин для каждой цели.
Повышенная мобильность ВМ значительно изменила способы их применения. Такие проекты, как Collective и Internet Suspend/Resume, демонстрируют возможность перемещения всей вычислительной среды пользователя по локальной и территориально-распределенной сети. Доступность высокоемких недорогих сменных носителей, например, жестких дисков USB, означает, что потребитель может захватить свою вычислительную среду с собой, куда бы он ни направлялся.
Динамический характер компьютерной среды на базе ВМ требует и более динамичной топологии сети. Виртуальные коммутаторы, виртуальные брандмауэры и оверлейные сети становятся неотъемлемой частью будущего, в котором логическая вычислительная среда отделится от своего физического местоположения.
Виртуализация обеспечивает высокий уровень работоспособности и безопасности благодаря нескольким ключевым возможностям.
Локализация неисправностей. Большинство отказов приложений происходят из-за ошибок ПО. Виртуализация обеспечивает логическое разделение виртуальных разделов, поэтому программный сбой в одном разделе никак не влияет на работу приложения в другом разделе. Логическое разделение также позволяет защищаться от внешних атак, что повышает безопасность консолидированных сред.
Гибкая обработка отказов. Виртуальные разделы можно настроить так, чтобы обеспечить автоматическую обработку отказов для одного или нескольких приложений. Благодаря средствам обеспечения высокой степени работоспособности, заложенным сейчас в платформы на базе процессоров Intel® Itanium® 2 и Intel® Xeon™ MP, требуемый уровень услуг часто можно обеспечить, предусмотрев аварийный раздел на той же платформе, где работает основное приложение. Если требуется еще более высокий уровень работоспособности, аварийный раздел можно разместить на отдельной платформе.
Разные уровни безопасности. Для каждой виртуальной машины можно установить разные настройки безопасности. Это позволит IT-организациям обеспечить высокий уровень контроля за конечными пользователями, а также гибкое распределение административных привилегий.
МВМ имеют мощный потенциал для реструктуризации существующих программных систем в целях повышения уровня защиты, а также облегчают развитие новых подходов к построению безопасных систем. Сегодняшние ОС не обеспечивают надежной изоляции, оставляя машину почти беззащитной. Перемещение механизмов защиты за пределы ВМ (чтобы они выполнялись параллельно с ОС, но были изолированы от нее) позволяет сохранить их функциональные возможности и повысить устойчивость к нападениям.
Размещение средств безопасности за пределами ВМ – привлекательный способ изоляции сети. Доступ к сети предоставляется ВМ после проверки, гарантирующей, что она, с одной стороны, не представляет угрозы, а с другой – неуязвима для нападения. Управление доступом к сети на уровне ВМ превращает виртуальную машину в мощный инструмент борьбы с распространением злонамеренного кода.
Мониторы МВМ особенно интересны в плане управления многочисленными группами программ с различными уровнями безопасности. Благодаря отделению ПО от оборудования ВМ обеспечивают максимальную гибкость при поиске компромисса между производительностью, обратной совместимостью и степенью защиты. Изоляция программного комплекса в целом упрощает его защиту. В сегодняшних ОС почти невозможно судить о безопасности отдельного приложения, поскольку процессы плохо изолированы от друг друга. Таким образом, безопасность приложения зависит от безопасности всех остальных приложений на машине.
Гибкость управления ресурсами, которую обеспечивают МВМ, может сделать системы более стойкими к нападениям. Возможность быстро тиражировать ВМ и динамически адаптироваться к большим рабочим нагрузкам станет основой мощного инструмента, позволяющего справиться с нарастающими перегрузками из-за внезапного наплыва посетителей на Web-сайте или атаки типа "отказ в обслуживании".
Модель распространения программных продуктов на основе ВМ потребует от поставщиков ПО корректировки лицензионных соглашений. Лицензии на эксплуатацию на конкретном процессоре или физической машине не приживутся в новых условиях, в отличие от лицензий на число пользователей или неограниченных корпоративных лицензий. Пользователи и системные администраторы будут отдавать предпочтение операционным средам, которые легко и без особых затрат распространяются в виде виртуальных машин.
Возрождение МВМ существенно изменило представления разработчиков программных и аппаратных средств о структурировании сложных компьютерных систем и управлении ими. Кроме того, МВМ обеспечивают обратную совместимость при развертывании инновационных решений в области операционных систем, которые позволяют решать современные задачи, сохраняя предыдущие достижения. Эта их способность станет ключевой при решении грядущих компьютерных проблем.
Виртуализация предоставляет также преимущества для сред разработки и тестирования ПО. Различные этапы цикла создания ПО, включая получение рабочей версии, можно выполнять в разных виртуальных разделах одной и той же платформы. Это поможет повысить степень полезного использования аппаратного обеспечения и упростить управление жизненным циклом. Во многих случаях IT-организации получат возможность тестировать новые и модернизированные решения на имеющихся рабочих платформах, не прерывая производственный процесс. Это не только упрощает миграцию, но также позволяет сократить расходы, устранив необходимость дублирования вычислительной среды.
Освобождая разработчиков и пользователей от ресурсных ограничений и недостатков интерфейса, виртуальные машины снижают уязвимость системы, повышают мобильность программного обеспечения и эксплуатационную гибкость аппаратной платформы.
Компьютерные системы существуют и продолжают развиваться благодаря тому, что разработаны по законам иерархии и имеют хорошо определенные интерфейсы, отделяющие друг от друга уровни абстракции. Использование таких интерфейсов облегчает независимую разработку аппаратных и программных подсистем силами разных групп специалистов. Абстракции скрывают детали реализации нижнего уровня, уменьшая сложность процесса проектирования.
Подсистемы и компоненты, разработанные по спецификациям разных интерфейсов, не способны взаимодействовать друг с другом. Например, приложения, распространяемые в двоичных кодах, привязаны к определенной ISA и зависят от конкретного интерфейса к операционной системе. Несовместимость интерфейсов может стать сдерживающим фактором, особенно в мире компьютерных сетей, в котором свободное перемещение программ столь же необходимо, как и перемещение данных.
Виртуализация позволяет обойти эту несовместимость. Виртуализация системы или компонента (например, процессора, памяти или устройства ввода/вывода) на конкретном уровне абстракции отображает его интерфейс и видимые ресурсы на интерфейс и ресурсы реальной системы. Следовательно, реальная система выступает в роли другой, виртуальной системы или даже нескольких виртуальных систем.
В отличие от абстракции, виртуализация не всегда нацелена на упрощение или сокрытие деталей. Например, при отображении виртуальных дисков на реальные программные средства виртуализации используют абстракцию файла как промежуточный шаг. Операция записи на виртуальный диск преобразуется в операцию записи в файл (и следовательно, в операцию записи на реальный диск). Отметим, что в данном случае никакого абстрагирования не происходит – уровень детализации интерфейса виртуального диска (адресация секторов и дорожек) ничем не отличается от уровня детализации реального диска.
2.1. История семейства операционных систем UNIX/Linux
Изучение истории развития результатов творчества всегда интересно. Показательным в этом отношении является пример такого сложного и динамичного технологического объекта, как операционные системы. Подобные программные комплексы создаются годами и включают миллионы строк исходного кода. Они постоянно изменяются, а для успешной конкуренции их разработчикам приходится пополнять свои продукты новыми возможностями. Еще один важный момент из жизни операционных систем заключается в том, что аппаратура, для которой создаются эти программы, постоянно модернизируется и "обрастает" новыми функциями.
Предшественниками современных операционных систем можно назвать системы пакетной обработки, когда выполняемые задания вводились для выполнения поочередно. Сначала это исполнялось вручную, а затем появились средства автоматизации операций. Так возникли предпосылки разработки программных средств управления набором (пакетом) заданий. Важной вехой в этом развитии стал 1964 год, когда IBM анонсировала, а затем и выпустила OS/360. Естественным развитием идей более эффективного использования возможностей вычислительных машин стало появление систем разделения времени. На странице Википедии "Список операционных систем" приводится более чем 200 наименований, и они классифицируются по 9-ти типам. Среди них есть и такие, которые уже не существуют (вернее, уже не поддерживаются разработчиками). Там приводится даже более десятка вымышленных систем, упоминаемых в книгах, фильмах, шутках и т.д. На этом же интернет-ресурсе страница "Хронология операционных систем" начинается с BESYS (Bell System, 1967 год). Но в связи с этим следует упомянуть еще и операционную систему для ЭВМ типа "мэйнфрейм", разработанную для модели IBM 704 в 1954 году. Ее создатель Жене Амдаль стал основателем компании Amdahl – мощного конкурента IBM на рынке мэйнфреймов [20].
Многие из представленных на странице "Хронология операционных систем" программных продуктов относятся к двум классам: проприетарные и свободные. Первые получили название от английского proprietary – "собственнические", т.е. относятся к программному обеспечению, которое имеет собственника. Такое программное обеспечение находится не в "общественном использовании", а в монопольном.
В этой части монографии анализируются пути развития двух представителей операционных систем: семейства UNIX/Linux и продуктов фирмы Microsoft. Первое из них имеет как проприетарные, так и свободно распространяемые версии. Вторые же являются антагонистом свободных программ.
Семейство операционных систем UNIX уникально по нескольким причинам [2, 14]:
- оно является долгожителем и, претерпев многочисленные изменения, "завоевало" разнообразную аппаратуру;
- при переходе UNIX на другие аппаратные платформы возникали интересные задачи, решение которых принесло много нового в компьютерные технологии;
- на одной из версий UNIX были реализованы протоколы обмена данными в компьютерных сетях с разной аппаратной платформой, что позволяет считать UNIX предвестницей сегодняшнего Интернета, а также основой для широкого развития локальных сетей;
- авторы ее первых версий создали язык программирования высокого уровня С, который можно назвать (с учетом его последующего совершенствования) самым распространенным среди разработчиков;
- использование этого языка дало возможность принять участие в разработке операционной системы тысячам специалистов;
- появившиеся в семействе UNIX свободно распространяемые операционные системы внесли много нового в представление о том, как разрабатывать и распространять программы для компьютеров.
Очень большое влияние на все стороны информационных технологий оказала и продолжает оказывать операционная система Linux, первоначально являвшаяся лишь вариантом UNIX. Она завоевала широкую популярность и сегодня перенесена на разные аппаратные платформы, как и ее предшественница. В дальнейшем будем использовать термин "операционные системы семейства UNIX/Linux". Отметим, что часто Linux отделяют от UNIX, сравнивая достижения этой операционной системы со всеми остальными конкретными версиями этого семейства.
Рассмотрение истории и генеалогии UNIX/Linux интересно само по себе, но ее знание необходимо специалистам в области компьютерных технологий. Вот, например, что пишет по этому поводу автор книги, в которую вошли две программы подготовки системных администраторов операционной системы Solaris [7]: "Как системный администратор Вы должны понимать историю операционной системы UNIX – откуда она произошла, как создавалась и чего достигла на сегодняшний день". Но в материале данной книги поднимаются и другие вопросы, что делает ее полезной и другим специалистам. В первую очередь, это – разработчики программного обеспечения.
Имя UNIX возникло позже и имеет интересную историю. А началось с МULTICS (МULTiplexed Information аnd Computing Service), проекта, ориентированного на распространенные в 60-е и 70-е годы прошлого века компьютеры класса "мейнфрейм" (mainframe). Его авторы первоначально обратились к IBM, но фирма не согласилась на затраты. Разработки МULTICS велись для вычислительной машины GE-645 (Gеnегаl Еlесtric). Для создания операционной системы в середине 60-х годов прошлого века объединились три фирмы: Gеnегаl Еlесtric Соmраnу, Massachusetts Institute of Technology (МIТ, Массачусетский технологический институт) и American Telephone and Telegraph (АТ&Т). Последняя была представлена в проекте несколькими сотрудниками подразделения Веll Laboratories. Среди них были Кен Томпсон (Kеn Tompson) и Дэннис Ритчи (Dennis M. Ritchie). По завершении проекта должна была появиться многозадачная, многопользовательская операционная система [13, 14].
Работа над программным комплексом МULTICS затянулась, и сотрудники Веll Labs вышли из проекта. Но в отличие от других Томсон продолжил работу по написанию операционной системы в своей компании. Позже к нему присоединился сначала Ритчи, а затем и другие сотрудники отдела. Можно сказать, что UNIX начиналась группой программистов, но основную роль среди разработчиков первых версий играл Кен Томпсон. Сначала, правда, в ближайшем окружении Кена родилось другое название системы – UNICS (Uniplexed Information and Computing System). Оно напоминало об участии в проекте МULTICS, но не ориентировалось на многопользовательскую систему (МULTICS – МULTiplexed, но UNICS – Uniplexed). В скором времени UNICS превратилось в UNIX.
На интернет-ресурсах и в книгах [21, 22] приводится характеристика Кена Томпсона как одного из выдающихся программистов США. По адресу [23] можно найти перевод интересной статьи, в которой Кен Томпсон дает интервью журналу Computer, напечатанное в журнале "Открытые Системы". Персональная страничка Кена Томпсона находится по адресу [24]. На интернет-ресурсе [25] дана характеристика Деннису Ритчи. Персональная страничка Денниса Ритчи находится по адресу [26]. Интересным, на наш взгляд, является оценка вклада двух выдающихся деятелей компьютерного мира по адресу [27].
Вернемся к непосредственному рассмотрению истории создания операционной системы UNIX. Первые ее версии были написаны на языке программирования ассемблер для компьютеров PDP [2, 14]. Она содержала подсистемы управления процессами и файлами, а также небольшой набор утилит.
В эти годы Томпсон работал над транслятором для FORTRAN’а. Но у него получился новый язык программирования B. Последний был интерпретатором, и, как следствие этого, не очень эффективным. Переработав его, Деннис Ритчи создал язык C, транслирующий исходный текст в машинный код, что повысило эффективность разрабатываемых программ [14]. Этот язык программирования занимает промежуточное положение между языком, близким к машинным командам и позволяющим разрабатывать "быстрые" программы, и языком программирования высокого уровня (более удобным в использовании).
Приведем информацию из книги [28], описывающую, как появился язык программирования С. "Что это значит на самом деле, что скрывается за этими немного трафаретными словами: язык С разработан американским ученым Деннисом Ритчи? В действительности это означает, что в 1970 г. Денном Ритчи был изобретен и реализован новый язык С. Ему суждено было большое будущее. Как это произошло? Язык C использует многие важные концепции и конструкции двух предшествовавших ему языков BCPL и B, а также добавляет типы данных и другие свойства".
Язык BCPL разработан в 1967 году Мартином Ричардом как язык написания компиляторов программного обеспечения операционных систем. Автором языка B был Кен Томпсон – выдающийся программист. Он предусмотрел много возможностей в языке B и использовал его в 1970 году для создания одной из ранних версий операционной системы UNIX в Bell Laboratories на компьютере фирмы DEC PDP-7. Оба упомянутых языка – BCPL и B – были "нетипичными" языками программирования. Так, например, при обработке элемента данных целого или действительного типа значительная часть работы все еще падала на плечи программиста. Язык C приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня фактически все новые операционные системы написаны на С или на С++.
Возможно, UNIX так и не развилась бы, если бы ей не нашлось реального применения. Но в 1971 году в патентном отделе Bell была установлена именно она. Система стала решать реальные задачи для пользователей, а не ее разработчиков. Она была переписана на более мощный компьютер PDP 11. Со временем UNIX стала распространяться и в другие отделы Bell Labs [14]. Появление первых версий системы сопровождалось выпуском документации с соответствующим номером. Они получили название "редакции" (Edition).
Начиная с 1971 года таких редакций было выпущено 10, а последняя датируется 1989 годом. Семь первых из них были разработаны в Веll Labs. В книге [9] отмечены некоторые важные черты таких версий. В таблице после названия утилит в круглых скобках приводится номер, позволяющий точнее и быстрее найти информацию о ней (номер раздела стандартной для UNIX системы помощи man).
Таблица 2.1. Характеристика редакций UNIX AT&T | ||
№ редакции | Год выпуска | Краткая характеристика |
Первая версия UNIX, написанная на ассемблере для РDР-11. Включала компилятор В и много известных команд и утилит, в том числе cat(1), chdir(1), chmod(1), cp(1), ed(1), find(1), mail(1), mkdir(1), mkfs(1М), mount(1М), mv(1), rm(1), rmdir(1), w(1), who(1). В основном использовалась как инструментальное средство обработки текстов для патентного отдела | ||
В системе появилась команда сс(1), запускавшая компилятор С. Число установленных систем достигло 16 | ||
Первая система, в которой ядро написано на языке высокого уровня С | ||
Первая версия системы, доступная за пределами Веll Labs. Система полностью переписана на языке С. С этого времени начинается появление новых версий, разработанных за пределами Веll Labs, и рост популярности UNIX. В частности, эта версия системы была установлена Томпсоном в Калифорнийском университете в Беркли, и на ее основе вскоре была выпущена первая версия BSD (Berkеleу Software Distribution) UNIX | ||
Эта версия включала командный интерпретатор Воurne Shell и компилятор С от Кернигана и Ритчи. Ядро было переписано для упрощения переносимости системы на другие платформы. Лицензия на эту версию была куплена фирмой Мicrosoft, которая разработала на ее базе операционную систему Xenix |
Обратим внимание на то, что операционная система с самой первой версии содержит команды обслуживания файловой системы с каталогами (mkdir, rmdir, chdir), многих пользователей (w, who), а также средства обмена информацией между последними (mail). Утилита mount позволяет включать в систему (монтировать) внешние носители информации. Эти команды "живут" и в современных версиях UNIX. Также обратите внимание, что с 1971 года в системе присутствуют средства работы с текстом. В частности, кроме редактора ed была разработана утилита форматирования текстов roff. Ее аналоги также используются и поныне.
В соответствии с законами США фирма AT&T, подразделением которой была Bell Labs, не имела права продавать программное обеспечение. Но с 1974 года система в виде исходных текстов стала передаваться разным организациям, в том числе университетам. Во время своего академического отпуска 1976 года Томпсон принял участие в проводимых в университете г. Беркли исследованиях по разработке UNIX. В этом ему активно помогали Билл Джой (Bill Joy) и Чак Халей (Chack Haley) [14].
Джой сформировал собственный дистрибутив UNIX, названный BSD (Berkeley Software Distribution – дистрибутив программного обеспечения Беркли). С его именем связано появление текстового редактора vi, командного интерпретатора c (она выполняла функции оболочки операционной системы, а не компилятора языка программирования), использование виртуальной памяти (позволяющей загружать программы большего размера, чем свободная физическая память). Позже он стал одним из основателей Sun Microsystems, ныне одной из крупнейших компьютерных фирм [7, 15].
Распространяемая в виде исходных текстов UNIX стала быстро завоевывать популярность. Многие компьютерные фирмы начали разрабатывать свои версии этой операционной системы. Например, в 1977 году было уже более 500 работающих экземпляров UNIX [14].
Важным в истории UNIX является 1980 год, когда фирма BBN (Bolt, Berenek и Newman) подписала контракт с DARPA (Department of Advanced Resparch Projects Agency – Управление перспективных исследований и разработок, являющееся подразделением Министерства обороны США) на разработку и реализацию протоколов TCP/IP в BSD UNIX. Это можно считать началом разработок, явившихся предвестником технологий, которые приняты в Интернете и сегодня. Версия системы, поддерживающая TCP/IP, также способствовала широкому распространению локальных сетей [14].
Популярность UNIX, поддержка передовых технологий, простота переноса на разные аппаратные платформы привели к тому, что создатели разных вариантов операционной системы начали вести настоящую конкурентную борьбу. В 1988 году фирмы AT&T и Sun объединились для разработки новой системы. В противовес этому несколько крупных фирм (IBM, DEC, HP и другие) основали альтернативный проект, назвав его OSF (Open Software Foundation). В результате появилась ОС с названием OSF/1 [16].
В 1991 году финский студент Линус Торвальдс (Linus Tordvalds) написал первую версию операционной системы, названной Linux и распространяемой бесплатно. Тогда она представляла собой вариант UNIX для компьютеров IBM PC, но сегодня перенесена на многие аппаратные платформы. Свою разработку он начал будучи студентом, изучая учебные курсы по программированию на С и UNIX. Он занимался, используя операционную систему MINIX, созданную Эндрю С. Танэнбаумом [17]. Такая система была описана в книге "Проектирование и реализация операционных систем". Она представляла собой миниатюрную UNIX-систему для IBM PC. Студента просто захватила концепция UNIX, ее простота и мощь. Свои разработки он обсуждал в Интернете со многими программистами. Можно сказать, что Linux является продуктом программистов всего мира, но руководящую роль в этом играет один человек – Линус Торвальдс.
Приведем по книге [15] абзац, относящийся к Linux. "Операционная система Linux – работа не одного человека. Линус Торвальдс – первоначальный архитектор – ее отец, если хотите. Возможно, самое большое проявление гения Линуса Торвальдса лежит в умении организовать совместную работу. Без оплаты труда, только ради удовольствия, он смог привлечь людей во всем мире к работе над не вполне обычным программным продуктом".
Линус Тровальдс – нетрадиционный человек. Достигнувшая успеха операционная система, как кажется, должна была принести ему хорошие условия жизни. Но он отказался от сотрудничества и с представителями крупного бизнеса, и, что удивительно, со своими коллегами по разработке свободно распространяемых программ. Он имеет свой взгляд на развитие операционных систем и не часто идет на компромиссы.
Будучи не первой системой подобного класса, Linux быстро завоевала популярность, потеснив коммерческие операционные системы. Сам Торвальдс до сих пор занимается только основой системы – ядром. Доводят ее до пользователей фирмы, выпускающие инсталляторы. Первый имел имя SLS. Но успешно распространяемый и называемый старейшим был создан фирмой Slackware в 1993 году [8]. Версия Linux, поддерживающая графический интерфейс, была разработана в 1992 году. Такой режим стал возможным благодаря усилиям, прежде всего, Ореста Зборовски (Orest Zborowski)[17].
Дата добавления: 2015-10-13; просмотров: 1294;