<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Solaris 10: советы и приёмы системного администрирования - Zones</title>
    <link>http://solaris.reys.net/</link>
    <description>Как пользоваться DTrace, ZFS, Solaris Zones и другими технологиями Solaris</description>
    <dc:language>ru</dc:language>
    <generator>Serendipity 1.1-alpha7 - http://www.s9y.org/</generator>
    
    

<item>
    <title>Solaris 8 Migration Assistant (Project Etude)</title>
    <link>http://solaris.reys.net/2007/11/solaris-8-migration-assitant</link>
            <category>Zones</category>
    
    <comments>http://solaris.reys.net/2007/11/solaris-8-migration-assitant#comments</comments>
    <wfw:comment>http://solaris.reys.net/wfwcomment.php?cid=166</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://solaris.reys.net/rss.php?version=2.0&amp;type=comments&amp;cid=166</wfw:commentRss>
    

    <author>nospam@example.com (Gleb Reys)</author>
    <content:encoded>
    Сегодня наконец-то успешно завершил первый эксперимент с &lt;b&gt;Solaris 8 Migration Assistant&lt;/b&gt; (&lt;b&gt;S8MA&lt;/b&gt;) - новым продуктом от Sun, который позволяет запускать зоны с Solaris 8. Решение является полностью поддерживаемым (за поддержку, конечно же, придётся заплатить), но доступен для бесплатного скачивания и тестирования в течение 90 дней, чем я и воспользовался.&lt;br /&gt;
&lt;br /&gt;
Для начала - немного о полезности данного продукта. Во многих компаниях к апгрейдам Solaris относятся довольно консервативно. Большинство основных систем работает под Solaris 8, если не что-нибудь ещё старше. Часто это обусловлено зависимостями от программного обеспечения сторонних разработчиков, которое было в своё время куплено и налажено под Solaris 8, и теперь не может быть достаточно легко портировано в Solaris 10. Получается, что такие системы обречены на медленное, но очень дорогое устаревание. Дорогое - потому что с каждым годом поддержка серверов, способных работать под управлением Solaris 8, становится всё дороже. &lt;br /&gt;
&lt;br /&gt;
Вот как раз для таких случаев и было придумано решение с зонами Solaris 8. Всё очень просто: создаёшь flar-слепок существующей Solaris 8-системы, создаёт зону Solaris 8, импортирует туда flar-образ, и получаешь виртуальную копию твоей Solaris 8, вместе со всеми процессами, программами и скриптами. Для особых случаев даже предусмотрена возможность указания старого hostid для свежесозданной зоны - чтобы ни одна из программ, запущенных внутри зоны, даже не догадалась о своём виртуальном положении.&lt;br /&gt;
&lt;br /&gt;
Возможно, я расскажу об этой технологии более подробно в другой раз. А пока - простейший набор действий и команд для проверки того, как же всё это работает:&lt;br /&gt;
&lt;br /&gt;
1. Найти и подготовить какую-нибудь sparc-систему с Solaris 10u4. Важно, чтобы это был самый распоследний апдейт Solaris 10. Подготовка заключается в установке патча с обновлением ядра. В моём случае оказалось достаточно патча 127111-01. &lt;br /&gt;
&lt;br /&gt;
2. Скачать Solaris 8 Migration Assitant (текущая версия - 1.0) вот по этой ссылке: &lt;a href=http://www.sun.com/download/products.xml?id=470c4a45&gt;Solaris 8 Migration Assistant&lt;/a&gt;. 3 пакета, полученных в архиве, устанавливаются простейшим образом с помощью стандарнтого pkgadd. &lt;br /&gt;
&lt;br /&gt;
Пакеты - следующие:&lt;br /&gt;
&lt;div class=code&gt;&lt;br /&gt;
&lt;b&gt;SUNWs8brandr&lt;/b&gt;     Solaris 8 Migration Assistant: solaris8 brand support (Root)&lt;br /&gt;
&lt;b&gt;SUNWs8brandu&lt;/b&gt;     Solaris 8 Migration Assistant: solaris8 brand support (Usr)&lt;br /&gt;
&lt;b&gt;SUNWs8p2v&lt;/b&gt;       Solaris 8 p2v Tool&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
3. Создать flar-слепок с вашего Solaris 8 бокса.&lt;br /&gt;
&lt;br /&gt;
В этом и следующих разделах, solaris8 - ни что иное, как выбранное мною имя для новой зоны. Оно может быть совершенно любым, просто в моём окружении именно такое название имело смысл.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=code&gt;bash-3.00# &lt;b&gt;flarcreate -S -n solaris8 solaris8.flar&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
4. Создать костяк нашей новой зоны с Solaris 8. &lt;br /&gt;
&lt;br /&gt;
Делается это так:&lt;br /&gt;
&lt;div class=code&gt;bash-3.00# &lt;b&gt;zonecfg -z solaris8&lt;/b&gt;&lt;br /&gt;
solaris8: No such zone configured&lt;br /&gt;
Use &#039;create&#039; to begin configuring a new zone.&lt;br /&gt;
zonecfg:solaris8-system&gt; &lt;b&gt;create -t SUNWsolaris8&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8&gt; &lt;b&gt;set zonepath=/export/solaris8&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8&gt; &lt;b&gt;add net&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8:net&gt; &lt;b&gt;set address=172.21.7.155/24&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8:net&gt; &lt;b&gt;set physical=ce0&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8:net&gt; &lt;b&gt;end&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8&gt; &lt;b&gt;commit&lt;/b&gt;&lt;br /&gt;
zonecfg:solaris8&gt; &lt;b&gt;exit&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Естественно, IP адрес и имя сетевого интерфейса в вашем случае могут быть другими.  Теперь наша зона, в общем-то, уже готова, и находится в состоянии configured (но пока ещё не installed).&lt;br /&gt;
&lt;br /&gt;
5. Установить зону Solaris 8 по мотивам нашего flar-архива&lt;br /&gt;
&lt;br /&gt;
&lt;div class=code&gt;bash-3.00# &lt;b&gt;zoneadm -z solaris8 install -u -a /export/solaris8.flar&lt;/b&gt;&lt;br /&gt;
      Log File: /var/tmp/solaris8.install.13597.log&lt;br /&gt;
        Source: /export/solaris8.flar&lt;br /&gt;
    Installing: This may take several minutes...&lt;br /&gt;
Postprocessing: This may take several minutes...&lt;br /&gt;
WARNING: zone did not finish booting.&lt;br /&gt;
&lt;br /&gt;
        Result: Installation completed successfully.&lt;br /&gt;
      Log File: /export/solaris8/root/var/log/solaris8.install.13597.log&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
В моём случае зона Solaris 8 застряла на элементе sys-unconfig, и поэтому пришлось ей помочь расконфигурироваться, подключившись к виртуальной консоли зоны.&lt;br /&gt;
&lt;br /&gt;
Делается это с помощью команды:&lt;br /&gt;
&lt;/div class=code&gt;bash-3.00# &lt;b&gt;zlogin -C solaris8&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Вот, в общем-то, и всё! Дальше были только несколько минут конфигурирования зоны заново, и уже спустя совсем недолго я смог подключиться к зоне через сетевой интерфейс и запустить uname:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=code&gt;solaris8 #&lt;b&gt;uname -a&lt;/b&gt;&lt;br /&gt;
SunOS solaris8 5.8 Generic_Virtual sun4u sparc SUNW,Sun-Fire-V490&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solaris 8 Migration Assistant&lt;/b&gt; мне очень понравился. Неимоверно быстрый и лёгкий способ собрать целую кучу старых Solaris 8 систем и запустить их на каком-нибудь современном сервере под самой современной ОС - Solaris 10u4. 
    </content:encoded>

    <pubDate>Wed, 21 Nov 2007 14:22:56 +0300</pubDate>
    <guid isPermaLink="false">http:/solaris.reys.net/2007/11/solaris-8-migration-assitant</guid>
    <category>s8ma</category>
<category>solaris 10</category>
<category>solaris 8</category>
<category>solaris 8 migration</category>
<category>solaris 8 migration assistant</category>
<category>solaris zone</category>
<category>zone</category>
<category>s8ma</category>
<category>solaris 10</category>
<category>solaris 8</category>
<category>solaris 8 migration</category>
<category>solaris 8 migration assistant</category>
<category>solaris zone</category>
<category>zone</category>

</item>
<item>
    <title>Зоны в Solaris 10: часть третья - sparse root  и whole root</title>
    <link>http://solaris.reys.net/2005/03/solaris_10_zones_sparse_root_whole_root</link>
            <category>Zones</category>
    
    <comments>http://solaris.reys.net/2005/03/solaris_10_zones_sparse_root_whole_root#comments</comments>
    <wfw:comment>http://solaris.reys.net/wfwcomment.php?cid=58</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://solaris.reys.net/rss.php?version=2.0&amp;type=comments&amp;cid=58</wfw:commentRss>
    

    <author>nospam@example.com (Gleb Reys)</author>
    <content:encoded>
    Сегодня я расскажу о моделях корневых файловых систем для не-глобальных зон Solaris. &lt;br /&gt;
&lt;br /&gt;
Как вы уже, наверное, знаете, таких моделей в Solaris 10 две: &lt;b&gt;sparse root&lt;/b&gt; и &lt;b&gt;whole root&lt;/b&gt;. Как можно догадаться по названиям, первая модель означает, что корневая файловая система в зоне будет только частично состоять из по-настоящему скопированных файлов, и, следовательно, такой вариант создания зоны потребует где-то 100 мб дискового пространства в минимальном варианте, что существенно меньше, чем потребовалось бы для обычной установки Solaris 10, которая практически и происходит в случае с &lt;b&gt;whole root&lt;/b&gt;. Я об этом немного &lt;a href=&quot;http://solaris.reys.net/exit.php?url_id=854&amp;amp;entry_id=58&quot; title=&quot;http://solaris.reys.net/archives/57-Solaris-10.html&quot;  onmouseover=&quot;window.status=&#039;http://solaris.reys.net/archives/57-Solaris-10.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt; уже рассказывал&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
По умолчанию файлы четырёх разделов корневой файловой системы являются доступными каждой зоне в соответствии с моделью &lt;b&gt;sparse root&lt;/b&gt;: /lib, /platform, /sbin и /usr. &lt;br /&gt;
&lt;br /&gt;
Принято также считать, что если при создании зоны был использован хотя бы один ресурс типа &lt;b&gt;inherit-pkg-dir&lt;/b&gt;, то такая зона называется &lt;b&gt;sparse root&lt;/b&gt; зоной.&lt;br /&gt;
&lt;br /&gt;
В описании каждой не-глобальной зоны можно увидеть, как именно организован доступ к этим разделам глобальной зоны:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;zonecfg -z zone1 export&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;...&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/lib&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/platform&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/sbin&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/usr&lt;br /&gt;
end&lt;br /&gt;
...&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Запомните:&lt;/b&gt; ресурсы данного типа можно создавать для зоны только  когда она находится в режиме &lt;b&gt;configured&lt;/b&gt;, т.е. окружение для зоны создано, но собственно инсталляция пакетов ОС Solaris в зону ещё не производилась. Соответственно, если вы решите изменить ресурсы данного типа для вашей уже существующей зоны, придётся сначала сделать ей &lt;b&gt;uninstall&lt;/b&gt; (например, &lt;b&gt;zonecfg -z zone1 uninstall&lt;/b&gt;).&lt;br /&gt;
&lt;br /&gt;
Модель &lt;b&gt;sparse root&lt;/b&gt; зон делает следующее: при установке того или иного пакета в не-глобальную зону, заново копируются только самые необходимые файлы, а именно - те пакеты, в которых параметр SUNW_PKGTYPE имеет значение root. Все остальные пакеты устанавливаться в не-глобальную зону не будут, а позже она получит доступ к остальным файлам нашей глобальной зоны посредством файловых систем loopback, дающих доступ только для чтения. Можете себе представить, сколько места экономится!&lt;br /&gt;
&lt;br /&gt;
Если вы ничего не знаете про lofs, то почитайте &lt;b&gt;man lofs&lt;/b&gt;, всё наверняка прояснится ;) &lt;br /&gt;
&lt;br /&gt;
В качестве примера, выполните следующие команды:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;mkdir&amp;#160;/var/tmp/hey&lt;br /&gt;
mount&amp;#160;-F&amp;#160;lofs&amp;#160;-o&amp;#160;ro&amp;#160;/usr&amp;#160;/var/tmp/hey&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Теперь, если вы зайдёте в каталог /var/tmp/hey, и попробуете там что-нибудь создать или удалить, то у вас ничего не получится, ибо файловая система /var/tmp/hey даёт доступ к файлам /usr только для чнения.&lt;br /&gt;
&lt;br /&gt;
Итак, если в не-глобальной зоне нет ни одного ресурса &lt;b&gt;inherit-pkg-dir&lt;/b&gt;, то такая зона считается &lt;b&gt;whole root&lt;/b&gt;, так как файлы всех пакетов устанавливаются в неё полностью. Места такая модель требует гораздо больше, но зато у вас появляется гибкость - внутри не-глобальной зоны вы легко можете удалять какие угодно пакеты, чего нельзя было бы сделать, установи вы эту зону с помощью ресурсов &lt;b&gt;inherit-pkg-dir&lt;/b&gt;. 
    </content:encoded>

    <pubDate>Thu, 31 Mar 2005 20:43:00 +0400</pubDate>
    <guid isPermaLink="false">http:/solaris.reys.net/2005/03/solaris_10_zones_sparse_root_whole_root</guid>
    
</item>
<item>
    <title>Зоны в Solaris 10: часть вторая - типы ресурсов</title>
    <link>http://solaris.reys.net/2005/03/solaris_10_zones_resources</link>
            <category>Zones</category>
    
    <comments>http://solaris.reys.net/2005/03/solaris_10_zones_resources#comments</comments>
    <wfw:comment>http://solaris.reys.net/wfwcomment.php?cid=59</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://solaris.reys.net/rss.php?version=2.0&amp;type=comments&amp;cid=59</wfw:commentRss>
    

    <author>nospam@example.com (Gleb Reys)</author>
    <content:encoded>
    Итак, мы уже научились создавать не-глобальные зоны в Solaris. Теперь нужно научиться основам конфигурации зон. Делается это с помощью команды &lt;b&gt;zonecfg&lt;/b&gt;, которую я уже затронул в &lt;a href=&quot;http://solaris.reys.net/exit.php?url_id=855&amp;amp;entry_id=59&quot; title=&quot;http://solaris.reys.net/archives/57-Solaris-10.html&quot;  onmouseover=&quot;window.status=&#039;http://solaris.reys.net/archives/57-Solaris-10.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;прошлой записи&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Для начала, рассмотрим полную конфигурацию нашей зоны. Очевидно, что те параметры, что мы указали, были лишь необходимым минимумом. Теперь же можно посмотреть на результат - уже созданную и установленную зону, и рассказать про типы ресурсов, которые можно предоставлять не-глобальным зонам.&lt;br /&gt;
&lt;br /&gt;
Итак, запускаем &lt;b&gt;zonecfg&lt;/b&gt; с командой &lt;b&gt;export&lt;/b&gt; чтобы просмотреть конфигурацию (&lt;b&gt;export&lt;/b&gt; это параметр командной строки в данном примере, но если вам больше нравится, можно ввести &lt;b&gt;zonecfg -z zone1&lt;/b&gt; и потом ввести &lt;b&gt;export&lt;/b&gt; после приглашения):&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;zonecfg -z zone1 export&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;create&amp;#160;-b&lt;br /&gt;
set&amp;#160;zonepath=/sr/zones/1&lt;br /&gt;
set&amp;#160;autoboot=false&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/lib&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/platform&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/sbin&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;inherit-pkg-dir&lt;br /&gt;
set&amp;#160;dir=/usr&lt;br /&gt;
end&lt;br /&gt;
add&amp;#160;net&lt;br /&gt;
set&amp;#160;address=192.168.0.5&lt;br /&gt;
set&amp;#160;physical=bge0&lt;br /&gt;
end&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Как видно из названия команды &lt;b&gt;export&lt;/b&gt;, мы получаем полный список команд &lt;b&gt;zonecfg&lt;/b&gt;, чтобы создать аналогичную зону. Отсюда и название - мы экспортируем конфигурацию. Подробнее об этом я расскажу как-нибудь в другой раз.&lt;br /&gt;
&lt;br /&gt;
Глядя на конфигурацию, вы можете узнать некоторые команды, которые мы действительно вводили, следуя инструкциям в прошлой моей записи, но есть и много новых. В частности, они относятся к файловым системам. Про файловые системы я так же собираюсь сделать отдельную подробную запись спустя какое-то время, а сейчас я расскажу немного о ресурсах для зон.&lt;br /&gt;
&lt;br /&gt;
Любой не-глобальной зоне можно отвести любые ресурсы, какими вы располагаете на вашей реальной системе. И добавляются такие ресурсы с помощью команды &lt;b&gt;add&lt;/b&gt;, которую вы и можете заметить в приведённой конфигурации. Параметр к этой команде - это тип ресурса.&lt;br /&gt;
&lt;br /&gt;
В зонах Solaris 10 могут быть ресурсы следующих типов:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;net&lt;/b&gt; - сетевой интерфейс. Как вы помните, при добавлении такого ресурса к зоне, следует указать имя реального физического устройства на вашей системе, и сетевой интерфейс создаваемой зоны будет виртуальным интерфейсом на указанном сетевом адаптере.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;device&lt;/b&gt; - дополнительное устройство. С помощью маски имён устройств (например, /dev/pts*) можно разрешить не-глобальной зоне доступ к любым устройствам, существующим в вашей системе.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;fs&lt;/b&gt; - файловая система. Можно настроить доступ к физическим дискам или каким-то каталогам вашей системы из не-глобальных зон. Можно указывать тип файловых систем и опции их монтирования, очень удобно.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;inherit-pkg-dir&lt;/b&gt; - наследуемый не-глобальной зоной раздел корневой файловой системы глобальной зоны. Указав имя каталога, вы тем самым указываете на то, что файлы из данного каталога глобальной зоны не должны копироваться в создаваемую зону, а будут заимствованы у неё. Фактически, они будут доступны только  для чтения с помощью loopback-файловой системы (спасибо, &lt;a href=|http://solaris.reys.net/archives/57-Solaris-10.html#c106&quot;&gt;Dan&lt;/a&gt;!)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;attr&lt;/b&gt; - атрибут. С помощью данного типа ресурса можно создавать комментарии для вашей зоны - в дальнейшем эти комментарии могут облегчить вам работу, когда вы вернётесь к конфигурации вашей зоны спустя какое-то время. Можно добавлять в конфигурацию зоны любые текстовые комментарии (на русском, почему-то, не получилось их добавить).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;rctl&lt;/b&gt; - контроль ресурсов. Пока доступны только два свойства этого типа - &lt;b&gt;zone.cpu-shares&lt;/b&gt; и &lt;b&gt;zone.max-lwps&lt;/b&gt;, но в будущем их будет больше. Эта параметры позволяют ограничивать процессорное время, отдаваемое на выполнение процессов создаваемой зоны, или максимальное количество lwp-процессов, которые в этой зоне смогут быть созданы. 
    </content:encoded>

    <pubDate>Wed, 30 Mar 2005 16:05:59 +0400</pubDate>
    <guid isPermaLink="false">http:/solaris.reys.net/2005/03/solaris_10_zones_resources</guid>
    
</item>
<item>
    <title>Зоны в Solaris 10: часть первая - рабочий пример</title>
    <link>http://solaris.reys.net/2005/03/solaris_10_zones_working_example</link>
            <category>Zones</category>
    
    <comments>http://solaris.reys.net/2005/03/solaris_10_zones_working_example#comments</comments>
    <wfw:comment>http://solaris.reys.net/wfwcomment.php?cid=57</wfw:comment>

    <slash:comments>15</slash:comments>
    <wfw:commentRss>http://solaris.reys.net/rss.php?version=2.0&amp;type=comments&amp;cid=57</wfw:commentRss>
    

    <author>nospam@example.com (Gleb Reys)</author>
    <content:encoded>
    Многие уже слышали и читали о зонах в Solaris 10 - это технология виртуализации, позволяющая создавать изолированные и защищённые среды для выполнения приложений. Для конечного пользователя эти среды выглядят как отдельные Solaris-системы установленные на неких абстрактных машинах. Внутри зоны, выполняемые приложения ни видят внешних процессов, не относящихся к этой зоне. Изоляция сделана на таком уровне, что процессы одной зоны не могут ни наблюдать, ни как-то влиять на процессы других зон.&lt;br /&gt;
&lt;br /&gt;
Всё это сделано на уровне программного обеспечения, и по умолчанию на вашей свежеустановленной Solaris 10 существует глобальная зона - только находясь в ней, можно просматривать процессы всех остальных зон. Вы, наверное, и не заметили, что после установки Solaris 10 сразу же оказались в глобальной зоне? Её легко увидеть:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;bash-3.00$&amp;#160;zoneadm&amp;#160;list&amp;#160;-vc&lt;br /&gt;
&amp;#160;&amp;#160;ID&amp;#160;NAME&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;STATUS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;PATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;0&amp;#160;global&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;running&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Создать не-глобальную зону очень просто. Отведите для неё необходимое пространство на диске, и запускайте команду zonecfg. В качестве параметра нужно указать имя создаваемой или конфигурируемой зоны:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;zonecfg -z zone3&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Если указанной зоны не существует, то об этом будет выдано соответствующее сообщение. После этого вы попадаете в командный интерфейс, где следует последовательно ввести следующие команды (построчно). &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;bash-3.00#&amp;#160;zonecfg&amp;#160;-z&amp;#160;zone3&lt;br /&gt;
zone3&amp;#58;&amp;#160;No&amp;#160;such&amp;#160;zone&amp;#160;configured&lt;br /&gt;
Use&amp;#160;&#039;create&#039;&amp;#160;to&amp;#160;begin&amp;#160;configuring&amp;#160;a&amp;#160;new&amp;#160;zone.&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#62;&amp;#160;create&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#62;&amp;#160;set&amp;#160;zonepath=/sr/zones/3&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#62;&amp;#160;set&amp;#160;autoboot=false&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#62;&amp;#160;add&amp;#160;net&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#58;net&amp;#62;&amp;#160;set&amp;#160;address=192.168.0.7&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#58;net&amp;#62;&amp;#160;set&amp;#160;physical=bge0&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#58;net&amp;#62;&amp;#160;end&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#62;&amp;#160;verify&lt;br /&gt;
zonecfg&amp;#58;zone3&amp;#62;&amp;#160;exit&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Этот пример создаст нам простейшую зону. Как видно, параметров указывать нужно не так уж много:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;zonepath&lt;/b&gt; - содержит полный путь к каталогу, где будут размещаться файлы нашей зоны&lt;br /&gt;
&lt;b&gt;autoboot&lt;/b&gt; - флаг, устанавливающий, следует ли при перезагрузке основной системы (с глобальной зоной) автоматически загружать указанную зону&lt;br /&gt;
&lt;br /&gt;
Далее мы присваиваем нашей зоне один сетевой интерфейс и указываем для него IP-адрес. Указывается имя реального сетевого интерфейса, существующего в нашей глобальной зоне. Для создаваемой зоны будет создан виртуальный интерфейс на основе указанного реального интерфейса.&lt;br /&gt;
&lt;br /&gt;
После этого следует проверить (&lt;b&gt;verify&lt;/b&gt;), всё ли верно - проверяется, что все необходимые минимальные свойства получили какие-то значения, и можно завершать работу с командой.&lt;br /&gt;
&lt;br /&gt;
Теперь, если мы снова взглянем на список зон, существующих в нашей системе, мы увидем и свежесозданную зону:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;bash-3.00#&amp;#160;zoneadm&amp;#160;list&amp;#160;-vc&lt;br /&gt;
&amp;#160;&amp;#160;ID&amp;#160;NAME&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;STATUS&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;PATH&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;0&amp;#160;global&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;running&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;-&amp;#160;zone3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;configured&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;/sr/zones/3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Пока что она находится в сконфигурированном состоянии, но до тех пор, пока мы не установим на неё ОС, она не получит своего идентификатора (поле ID), и тем более не сможет быть загружена.&lt;br /&gt;
&lt;br /&gt;
Немного расскажу про состояния, в которых может находиться не-глобальная зона:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;configured&lt;/b&gt; - система сконфигурирована, но элементы окружения, создаваемые при первой загрузке зоны, ещё не существуют.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;incomplete&lt;/b&gt; - во время операций инсталляции и деинсталляции, команда zoneadm устанавливает статус зоны именно в это значение. По завершении операций с зоной, её статус меняется.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;installed&lt;/b&gt; - конфигурация завершена, и даже пакеты ОС были уже установлены в корневой каталог зоны. По сути, это уже готовая к использованию зона, которую осталось лишь загрузить. Виртуальное пространство для этой зоны пока ещё не отведено.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ready&lt;/b&gt; - система готова к началу работы. Для неё уже отведено виртуальное пространство, ядро вашей системы создало процесс планировщика зон &lt;b&gt;zsched&lt;/b&gt;, сетевые интерфейсы активированы, файловые системы монтированы, и устройства зоны сконфигурированы.  Никаких процессов в самой зоне запущено ещё не было, но зоне уже присвоен идентификатор. По сути, это состояние мы никогда не видим - после загрузки зоны, она немедленно начинает выполнять какие-то процессы инициализации, и соответственно, переходит в следующее состояние.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;running&lt;/b&gt; - процессы в зоне выполняются. Можно подключиться к зоне и начать работу. Полностью функциональная среда. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;shutting down&lt;/b&gt; и &lt;b&gt;down&lt;/b&gt; - это кратковременные состояния зоны, которые отображаются, пока процессы зоны завершают работу после выполнения команды &lt;b&gt;halt&lt;/b&gt;. После этого, зона переходит в состояние installed, если это нормальное завершение сеанса работы с зоной.&lt;br /&gt;
&lt;br /&gt;
Итак, продолжаем конфигурацию нашей зоны. Теперь, нам нужно её установить. Делается это с помощью команды:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;zoneadm -z zone3 install&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Далее можно будет наблюдать за процессом установки пакетов в окружении вашей зоны, и по завершении этого процесса  будет сообщено полное имя файла с логом установки. Всё! Зона готова! Можно её загружать:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;zoneadm -z zone3 boot&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
После этого мы, конечно же, не сможем сразу же войти в нашу зону... Почему? А потому, что, хотя пакеты и были установлены, нужно ещё сконфигурировать систему - так же, как и любой бокс, ны который мы устанавливаем Solaris... Только в отличие от обычной установки, с зонами проще - сначала устанавливаются пакеты, а потом уже происходит конфигурация системы. &lt;br /&gt;
&lt;br /&gt;
Как бы там ни было, нужно подключиться к виртуальной консоли нашей зоны, и ответить на все задаваемые стандартным Configuration Assistant&#039;ом вопросы. В числе оных будет и вопрос про пароль для root&#039;а. После всего этого, система в нашей зоне перегрузится ещё раз, и вы сможете войти с консоли под root&#039;ом. Если хочется разрешить подключение через обычный rsh, то следует закомментировать строчку CONSOLE=/dev/console в /etc/default/login.&lt;br /&gt;
&lt;br /&gt;
К консоли нашей зоны можно подключиться следующей командой, в которой ключик -C как раз и означает, что мы желаем подключиться именно к консоли. &lt;br /&gt;
&lt;b&gt;zlogin -C zone3&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Отключиться от консоли можно будет позднее при вводе стандартной комбинации: &quot;~.&quot; (тильда и точка)&lt;br /&gt;
&lt;br /&gt;
Ещё один такой момент. Так как не-глобальные зоны будут совместно с глобальной зоной использовать один и тот же физический интерфейс, это уже ваша забота - позаботиться о том, чтобы ваша система (глобальная зона) могла видеть сеть, чей IP вы установили в не-глобальной зоне.&lt;br /&gt;
&lt;br /&gt;
Скажем, фрагмент &lt;b&gt;ifconfig -a&lt;/b&gt; на моём лаптопе выглядит таким образом:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;bge0&amp;#58;1&amp;#58;&amp;#160;flags=1000843&amp;#60;UP,BROADCAST,RUNNING,MULTICAST,IPv4&amp;#62;&amp;#160;mtu&amp;#160;1500&amp;#160;index&amp;#160;2&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;zone&amp;#160;zone2&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;inet&amp;#160;192.168.0.6&amp;#160;netmask&amp;#160;ffffff00&amp;#160;broadcast&amp;#160;192.168.0.255&lt;br /&gt;
bge0&amp;#58;2&amp;#58;&amp;#160;flags=1000843&amp;#60;UP,BROADCAST,RUNNING,MULTICAST,IPv4&amp;#62;&amp;#160;mtu&amp;#160;1500&amp;#160;index&amp;#160;2&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;inet&amp;#160;192.168.0.2&amp;#160;netmask&amp;#160;ffffff00&amp;#160;broadcast&amp;#160;192.168.0.255&lt;br /&gt;
bge0&amp;#58;3&amp;#58;&amp;#160;flags=1000843&amp;#60;UP,BROADCAST,RUNNING,MULTICAST,IPv4&amp;#62;&amp;#160;mtu&amp;#160;1500&amp;#160;index&amp;#160;2&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;zone&amp;#160;zone1&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;inet&amp;#160;192.168.0.5&amp;#160;netmask&amp;#160;ffffff00&amp;#160;broadcast&amp;#160;192.168.0.255&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Как видно, адреса, принадлежащие зонам, довольно легко определимы по параметру zone. А мне пришлось создать виртуальный интерфейс с адресом из той же подсети, чтобы я из глобальной зоны мог подсоединиться к моим не-глобальным зонам. &lt;br /&gt;
&lt;br /&gt;
Ещё один момент, последний в этой заметке: пакеты программного обеспечения, устанавливаемые в зонах. Особо любопытные из вас, конечно же, уже посмотрели на лог-файл, и увидели, что в зоне установлено довольно много всего - практически, полноценная ОС. При этом, каталог с зоной занимает при установке по умолчанию около 70мб... Такое несоответствие объясняется одной из ключевых особенностей виртуализации зон: они умеют совместно использовать пакеты глобальной зоны. Т.е. можно для каждой зоны указать, что некоторые файлы, которые должны будут быть установлены на неё из стандартных пакетов установки Solaris 10, фактически копировать и устанавливать необязательно - их можно позаимствовать с уже установленных этих же файлов, существующих в глобальной зоне. Естественно, в нее-глобальных зонах, заимствующих файлы из пакетов глобальной зоны, все эти файлы будут доступны только для чтения. Таким образом и достигается значительная экономия места в зонах. По умолчанию, таким образом зоны наследуют все файлы, устанавливаемые из пакетов в каталоги /lib, /platform, /usr и /sbin. Хочу ещё раз подчеркнуть - наследуются только файлы из стандартных пакетов. Т.е. если вы в указанные выше каталоги добавите вручную какие-то ещё файлы, они, естественно, не унаследуются. &lt;br /&gt;
&lt;br /&gt;
Ну вот и всё, для первой части вполне достаточно - у вас должна была получиться рабочая зона, в которую можно заходить удалённо, запускать или настраивать в ней сервисы, и вообще полноценно работать. Дальше - больше! Как появится свободная минутка, напишу продолжение... 
    </content:encoded>

    <pubDate>Mon, 07 Mar 2005 17:53:57 +0300</pubDate>
    <guid isPermaLink="false">http:/solaris.reys.net/2005/03/solaris_10_zones_working_example</guid>
    <category>opensolaris</category>
<category>solaris</category>
<category>solaris zones</category>
<category>opensolaris</category>
<category>solaris</category>
<category>solaris zones</category>

</item>

</channel>
</rss>