КатегорииLinksUnix Tutorial
Personal Development Ruslan Valiev UnixPin Solaris Performance Team Damien Farnham Fintan Ryan Nicky Veitch Niall Mullen Sean McGrath DTrace Bryan Cantrill Brendan Gregg ZFS Tim Foster General Ben Rockwood Learning Solaris 10 Privacy policy Архивы |
Tags related to tag solaris zonesMonday, 7 March. 2005
Зоны в Solaris 10: часть ... Добавил Gleb Reys
в категории Zones в
17:53
Комментарии (17) Обратная ссылка (1) Select language: English
Зоны в Solaris 10: часть первая - рабочий пример
Многие уже слышали и читали о зонах в Solaris 10 - это технология виртуализации, позволяющая создавать изолированные и защищённые среды для выполнения приложений. Для конечного пользователя эти среды выглядят как отдельные Solaris-системы установленные на неких абстрактных машинах. Внутри зоны, выполняемые приложения ни видят внешних процессов, не относящихся к этой зоне. Изоляция сделана на таком уровне, что процессы одной зоны не могут ни наблюдать, ни как-то влиять на процессы других зон.
Всё это сделано на уровне программного обеспечения, и по умолчанию на вашей свежеустановленной Solaris 10 существует глобальная зона - только находясь в ней, можно просматривать процессы всех остальных зон. Вы, наверное, и не заметили, что после установки Solaris 10 сразу же оказались в глобальной зоне? Её легко увидеть: CODE: bash-3.00$ zoneadm list -vc ID NAME STATUS PATH 0 global running / Создать не-глобальную зону очень просто. Отведите для неё необходимое пространство на диске, и запускайте команду zonecfg. В качестве параметра нужно указать имя создаваемой или конфигурируемой зоны: zonecfg -z zone3 Если указанной зоны не существует, то об этом будет выдано соответствующее сообщение. После этого вы попадаете в командный интерфейс, где следует последовательно ввести следующие команды (построчно). CODE: bash-3.00# zonecfg -z zone3 zone3: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:zone3> create zonecfg:zone3> set zonepath=/sr/zones/3 zonecfg:zone3> set autoboot=false zonecfg:zone3> add net zonecfg:zone3:net> set address=192.168.0.7 zonecfg:zone3:net> set physical=bge0 zonecfg:zone3:net> end zonecfg:zone3> verify zonecfg:zone3> exit Этот пример создаст нам простейшую зону. Как видно, параметров указывать нужно не так уж много: zonepath - содержит полный путь к каталогу, где будут размещаться файлы нашей зоны autoboot - флаг, устанавливающий, следует ли при перезагрузке основной системы (с глобальной зоной) автоматически загружать указанную зону Далее мы присваиваем нашей зоне один сетевой интерфейс и указываем для него IP-адрес. Указывается имя реального сетевого интерфейса, существующего в нашей глобальной зоне. Для создаваемой зоны будет создан виртуальный интерфейс на основе указанного реального интерфейса. После этого следует проверить (verify), всё ли верно - проверяется, что все необходимые минимальные свойства получили какие-то значения, и можно завершать работу с командой. Теперь, если мы снова взглянем на список зон, существующих в нашей системе, мы увидем и свежесозданную зону: CODE: bash-3.00# zoneadm list -vc ID NAME STATUS PATH 0 global running / - zone3 configured /sr/zones/3 Пока что она находится в сконфигурированном состоянии, но до тех пор, пока мы не установим на неё ОС, она не получит своего идентификатора (поле ID), и тем более не сможет быть загружена. Немного расскажу про состояния, в которых может находиться не-глобальная зона: configured - система сконфигурирована, но элементы окружения, создаваемые при первой загрузке зоны, ещё не существуют. incomplete - во время операций инсталляции и деинсталляции, команда zoneadm устанавливает статус зоны именно в это значение. По завершении операций с зоной, её статус меняется. installed - конфигурация завершена, и даже пакеты ОС были уже установлены в корневой каталог зоны. По сути, это уже готовая к использованию зона, которую осталось лишь загрузить. Виртуальное пространство для этой зоны пока ещё не отведено. ready - система готова к началу работы. Для неё уже отведено виртуальное пространство, ядро вашей системы создало процесс планировщика зон zsched, сетевые интерфейсы активированы, файловые системы монтированы, и устройства зоны сконфигурированы. Никаких процессов в самой зоне запущено ещё не было, но зоне уже присвоен идентификатор. По сути, это состояние мы никогда не видим - после загрузки зоны, она немедленно начинает выполнять какие-то процессы инициализации, и соответственно, переходит в следующее состояние. running - процессы в зоне выполняются. Можно подключиться к зоне и начать работу. Полностью функциональная среда. shutting down и down - это кратковременные состояния зоны, которые отображаются, пока процессы зоны завершают работу после выполнения команды halt. После этого, зона переходит в состояние installed, если это нормальное завершение сеанса работы с зоной. Итак, продолжаем конфигурацию нашей зоны. Теперь, нам нужно её установить. Делается это с помощью команды: zoneadm -z zone3 install Далее можно будет наблюдать за процессом установки пакетов в окружении вашей зоны, и по завершении этого процесса будет сообщено полное имя файла с логом установки. Всё! Зона готова! Можно её загружать: zoneadm -z zone3 boot После этого мы, конечно же, не сможем сразу же войти в нашу зону... Почему? А потому, что, хотя пакеты и были установлены, нужно ещё сконфигурировать систему - так же, как и любой бокс, ны который мы устанавливаем Solaris... Только в отличие от обычной установки, с зонами проще - сначала устанавливаются пакеты, а потом уже происходит конфигурация системы. Как бы там ни было, нужно подключиться к виртуальной консоли нашей зоны, и ответить на все задаваемые стандартным Configuration Assistant'ом вопросы. В числе оных будет и вопрос про пароль для root'а. После всего этого, система в нашей зоне перегрузится ещё раз, и вы сможете войти с консоли под root'ом. Если хочется разрешить подключение через обычный rsh, то следует закомментировать строчку CONSOLE=/dev/console в /etc/default/login. К консоли нашей зоны можно подключиться следующей командой, в которой ключик -C как раз и означает, что мы желаем подключиться именно к консоли. zlogin -C zone3 Отключиться от консоли можно будет позднее при вводе стандартной комбинации: "~." (тильда и точка) Ещё один такой момент. Так как не-глобальные зоны будут совместно с глобальной зоной использовать один и тот же физический интерфейс, это уже ваша забота - позаботиться о том, чтобы ваша система (глобальная зона) могла видеть сеть, чей IP вы установили в не-глобальной зоне. Скажем, фрагмент ifconfig -a на моём лаптопе выглядит таким образом: CODE: bge0:1: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 zone zone2 inet 192.168.0.6 netmask ffffff00 broadcast 192.168.0.255 bge0:2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.0.2 netmask ffffff00 broadcast 192.168.0.255 bge0:3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 zone zone1 inet 192.168.0.5 netmask ffffff00 broadcast 192.168.0.255 Как видно, адреса, принадлежащие зонам, довольно легко определимы по параметру zone. А мне пришлось создать виртуальный интерфейс с адресом из той же подсети, чтобы я из глобальной зоны мог подсоединиться к моим не-глобальным зонам. Ещё один момент, последний в этой заметке: пакеты программного обеспечения, устанавливаемые в зонах. Особо любопытные из вас, конечно же, уже посмотрели на лог-файл, и увидели, что в зоне установлено довольно много всего - практически, полноценная ОС. При этом, каталог с зоной занимает при установке по умолчанию около 70мб... Такое несоответствие объясняется одной из ключевых особенностей виртуализации зон: они умеют совместно использовать пакеты глобальной зоны. Т.е. можно для каждой зоны указать, что некоторые файлы, которые должны будут быть установлены на неё из стандартных пакетов установки Solaris 10, фактически копировать и устанавливать необязательно - их можно позаимствовать с уже установленных этих же файлов, существующих в глобальной зоне. Естественно, в нее-глобальных зонах, заимствующих файлы из пакетов глобальной зоны, все эти файлы будут доступны только для чтения. Таким образом и достигается значительная экономия места в зонах. По умолчанию, таким образом зоны наследуют все файлы, устанавливаемые из пакетов в каталоги /lib, /platform, /usr и /sbin. Хочу ещё раз подчеркнуть - наследуются только файлы из стандартных пакетов. Т.е. если вы в указанные выше каталоги добавите вручную какие-то ещё файлы, они, естественно, не унаследуются. Ну вот и всё, для первой части вполне достаточно - у вас должна была получиться рабочая зона, в которую можно заходить удалённо, запускать или настраивать в ней сервисы, и вообще полноценно работать. Дальше - больше! Как появится свободная минутка, напишу продолжение...
« предыдущая страница
(Страница 1 из 1, всего записей: 1)
следующая страница »
|




