Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1076 / 303 | Оценка: 4.30 / 3.78 | Длительность: 18:28:00
Лекция 6:

Управление пулами ресурсов. Проекты. Зоны и контейнеры

< Лекция 5 || Лекция 6: 12345 || Лекция 7 >

Зоны и контейнеры

Концепция управления ресурсами и распределения ресурсов между различными наборами приложений развивалась от проектов к зонам. Зоны – это логическое продолжение проектов. По сути дела, если проект – это совокупность процессов, которым могут выделяться некие ресурсы (в том числе и в монопольное распоряжение), то зона – это виртуальная копия системы, в которой запущен определенный набор служб. В отличие от проектов, зоны предоставляют высокий уровень изоляции приложений друг от друга: приложения из одной зоны никак не могут взаимодействовать с приложениями из другой зоны, за исключением обмена данными через сеть.

Зона имеет свое файловое пространство, свой каталог /etc со своими настройками и, следовательно, свой список пользователей, своего администратора root, свой набор служб и так далее. Фактически, зона – это почти виртуальная машина, но значительное отличие зоны от VM – то, что все зоны используют одно и то же ядро.

Зоны бывают двух типов: глобальная зона (она всегда одна – это тот экземпляр системы, который загружается при старте) и неглобальные зоны (это все остальные зоны).

Смысл зон в том, что:

  1. зона гарантирует идеальную изоляцию приложений – процессы одной зоны не влияют на процессы в других зонах;
  2. зона обеспечивает изолированную среду не только для приложений, но и для системных служб внутри себя – в каждой зоне есть свои файлы настроек
  3. Solaris позволяет настроить изолированную среду внутри зоны так, чтобы запускать в ней "неродные" приложения – исполняемые файлы Linux или приложения, ранее установленные в Solaris 8 (даже если это приложения были написаны третьими фирмами и содержат специфические несвязанные с Solaris компоненты).

Зону можно создать и настроить ее свойства командой zonecfg, управлять ею следует с помощью zoneadm.

К зоне с настроенным сетевым интерфейсом можно подсоединиться с помощью ssh, а можно воспользоваться программой zlogin, если вы работаете в глобальной зоне и хотите подключиться к неглобальной зоне.

Файловая система неглобальной зоны может быть совершенно независимой от глобальной зоны (такие зоны называются зонами без унаследованных каталогов – whole root zone), а может содержать "унаследованные" каталоги, т.е. смонтированные из глобальной зоны в режиме "только для чтения". По умолчанию, каталоги /usr, /lib, /platform и /sbin являются унаследованными. Чем больше каталогов унаследует новая неглобальная зона, тем меньше места занимает ее собственная файловая система и тем меньше файлов в нее будет копироваться из глобальной зоны при создании.

Клонирование зон на ZFS

Быстрое клонирование зон может быть необходимо при создании большого количества зон одинаковой конфигурации. Для этой операции удобнее помещать клонируемую зону и все ее клоны в каталогах, расположенных в файловой системе ZFS, так как это значительно сэкономит время при копировании файлов. Клонирование зоны на UFS может занимать от 15 до 45 минут и более (в зависимости от количества установленных пакетов и производительности оборудования), а клонирование зоны на ZFS занимает около 8 секунд.

Для успешного клонирования надо вначале настроить зону, которую вы будете клонировать:

# zonecfg -z master
master: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:master> create
zonecfg:master> set zonepath=/test/opt
zonecfg:master> verify
zonecfg:master> commit

Теперь посмотрим на список зон в системе:

# zoneadm list -vc
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- master configured /test/opt native shared

Теперь выполним установку системы в зоне (фактически, копирование установленных пакетов из глобальной зоны в неглобальную):

# zoneadm -z master install
/test/opt must not be group readable.
/test/opt must not be group executable.
/test/opt must not be world readable.
/test/opt must not be world executable.
could not verify zonepath /test/opt because of the above errors.
zoneadm: zone master failed to verify

Ага! Ошибка в правах доступа к каталогу зоны. Исправляем:

# ls -ld /test/opt
drwxr-xr-x 2 root root 2 февр. 10 10:33 /test/opt
# chmod go-rx /test/opt
# ls -ld /test/opt
drwx------ 2 root root 2 февр. 10 10:33 /test/opt

Порядок. Устанавливаем зону:

# zoneadm -z master install
A ZFS file system has been created for this zone.
Preparing to install zone <master>.
Creating list of files to copy from the global zone.
Copying <11008> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1256> packages on the zone.
Initialized <1256> packages on zone.
Zone <master> is initialized.
Inst allation of these packages generated errors: <openofficeorgdesktop-
integratn>
Installation of <1> packages was skipped.
Installation of these packages generated warnings: <WebStackTooling>
The file </test/opt/master/root/var/sadm/system/logs/install_log>
contains a log of the zone installation.

Теперь выполняем клонирование, для чего вначале создаем зону и настраиваем ее параметры:

zonecfg -z clone create -t master

Обратите внимание на то, что при клонировании мы указывам название зоны-образца (после ключа t ). Это делается потому, что без указания образца нам бы потребовалось сразу настроить обязательный параметр "место расположения зоны" ( zonepath ), а в командной строке при создании зоны этого не сделать. Теперь укажем этот параметр в следующей команде:

zonecfg -z clone set zonepath=/test/opt/clone

И клонируем зону:

zoneadm -z clone clone master

Обратите внимание: в командах zoneadm и zonecfg после ключа z всегда указывается та зона, которую мы в данный момент настраиваем или которой управляем.

Настройка производительности системы

Какая аппаратура быстрее?

Естественно, для разных задач подходят разные компьютеры. Например, компьютеры с процессором Alpha обычно быстрее своих Intel-собратьев выполняют расчеты с числами с плавающей запятой. Это значит, что вычисления, связанные с расчетами координат, решением уравнений или моделированием молекул быстрее выполнит компьютер с процессором Alpha.

В настоящее время процессоры Alpha широко используются в высокопроизводительных серверах от Hewlett-Packard и других, еще более специализированных системах, таких, как суперкомпьютеры Cray и Fujitsu.

Если же речь идет о целочисленных вычислениях, пусть и достаточно громоздких, например, рендеринге, преобразовании графических объектов, 3D-визуализации, где координаты могут быть заданы только целыми числами, процессоры Intel отлично справятся с ними.

Сейчас мы говорили о процессорах Alpha и Intel, но на деле разговор касается двух разных архитектур – RISC и CISC. Процессоры Intel традиционно тяготеют к последней, в то время как процессоры SPARC – к первой. ОС Solaris выпускается в версиях для обеих архитектур, хотя изначально компания Sun не выпускала версию Solaris для Intel, а многочисленные пользователи этой системы во всем мире до сих пор утверждают, что версия для SPARC более производительна и надежна. Это, в частности, связано с тем, что механизмы обеспечения многозадачности тесно связаны с используемой аппаратурой, и версия Solaris под Intel "подогнана" под архитектуру процессоров Intel и архитектуру аппаратных средств, разработанных для них.

Впрочем, оставим эти утверждения на совести пользователей: если для версии Solaris 8 и более старых они еще были справедливы, то Solaris 10 на серверах с процессорами AMD и Intel решает задачи ничуть не хуже, чем на SPARC от Sun Microsystems.

В заключение разговора о предпочтительности той или иной аппаратуры следует сказать, что:

  1. для работы Solaris под серьезной нагрузкой, такой, как СУБД Oracle с тысячами клиентов и важностью высокой скорости реагирования, система на базе процессоров RISC, скорее всего, окажется более результативной;
  2. независимо от используемой аппаратной платформы конфигурация компьютера должна быть хорошо согласована: быстрый процессор должен работать с быстрой оперативной памятью, а дисковая подсистема (контроллеры и диски) обязаны успевать без задержек отрабатывать команды чтения и записи. Недостаточный объем кэша любого уровня, как кэша процессора на кристалле, так и кэша дискового контроллера может привести к значительному снижению производительности.
Таблица 6.1. Сравнение производительности систем разных платформ
Процессор, частота SPECint2000 (base) SPECfp2000 (base) Система
Alpha 21264C, 1.01 GHz 561 585 Compaq AlphaServer GS160
Alpha 21264C, 1 GHz 621 776 Compaq AlphaServer ES45
Alpha 21264B, 833 MHz 518 621 Compaq AlphaServer ES40
Itanium, 800 MHz 379 701 HP rx4610
Itanium, 800 MHz 358 655 HP i2000
UltraSPARC III, 1.05 GHz 537 701 Sun Blade 2050
UltraSPARC III, 900 MHz 470 629 Sun Blade 1000
UltraSPARC III, 750 MHz 363 312 Sun Blade 1000
Power4, 1.3 GHz 790 1098 IBM eServer 690
Alpha 21364 EV-78+, 1.3 GHz 904 1279
AMD Opteron 256, 3 GHz 1942 2260
IBM Power5, 1,9 GHz 1398 2585
Intel Pentium 965, 3,73 GHz 1870 2232
Sun UnlraSPARC IV+, 1,8 GHz 1300 1800
Оценка ситуации: программы надзора за системой

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

Прежде всего, следует выяснить, есть ли в системе узкие места. Например, постоянная загрузка процессора на 100% может говорить о том, что в системе запущено слишком много конкурирующих процессов, или о работе вычислительного процесса, который постоянно требует процессорное время (что вполне нормально, если только ваш сервер не используют хакеры для подбора или расшифровки паролей), или же о том, что мощность процессора недостаточна и обычные задачи, возложенные на этот компьютер, требуют его модернизации (начальство против? – попробуйте распределить нагрузку в сети или поменять работу – что сейчас легче сделать?)

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

Для оценки загрузки процессора и состояния памяти (достаточно ли оперативной памяти, не перегружена ли дисковая подсистема свопингом и т.п.) следует использовать программы top и sar. Конкретные примеры применения этих программ даны ниже, в разделе "эффективное использование памяти и свопинга". Программа top (в Solaris удобнее использовать prstat – местный аналог top ) выводит информацию о наиболее активных процессах, которые сильнее всего занимают процессор:

top
last pid: 501; load averages: 0.08, 0.34, 0.40 19:12:00
59 processes: 58 sleeping, 1 on cpu
CPU states: 96.2% idle, 0.8% user, 1.0% kernel, 2.0% iowait, 0.0% swap
Memory: 128M real, 3596K free, 132M swap in use, 466M swap free
PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND
345 root 1 59 0 24M 9972K sleep 0:11 1.14% Xsun
470 root 4 49 0 128M 71M sleep 0:52 1.01% soffice.bin
501 root 1 59 0 2228K 1336K cpu 0:00 0.55% top
461 root 1 59 0 15M 3184K sleep 0:00 0.37% dtterm
467 root 1 49 0 4708K 832K sleep 0:00 0.03% bash
435 root 1 49 0 16M 1760K sleep 0:00 0.01% dtfile
434 root 5 59 0 22M 6304K sleep 0:01 0.00% dtwm
427 root 1 49 0 18M 0K sleep 0:00 0.00% dtsession
436 root 1 59 0 14M 3292K sleep 0:00 0.00% sdtperfmeter
265 root 26 59 0 5480K 1456K sleep 0:00 0.00% htt_server
460 root 1 59 0 3064K 1372K sleep 0:00 0.00% dtexec
315 root 1 59 0 6900K 1324K sleep 0:00 0.00% dtlogin
411 root 1 59 0 3784K 1300K sleep 0:00 0.00% sdt_shell
183 root 3 59 0 5832K 1188K sleep 0:00 0.00% automountd
95 root 13 59 0 5660K 1100K sleep 0:00 0.00% syslogd

Программа sar подобна vmstat и выдает статистику по работе системы, ее можно запустить для выдачи определенных параметров одномоментно или для периодического вывода сведений, например, для десятикратных измерений значений стандартного набора параметров с периодом 5 секунд:

sar 5 10
SunOS sunny 5.9 Generic_112234-03 i86pc 07/03/2004
19:12:34 %usr %sys %wio %idle
19:12:39 0 1 0 99
19:12:44 0 0 0 100
19:12:49 0 1 0 99
19:12:54 4 1 0 95
19:12:59 0 0 0 100
19:13:04 0 1 0 99
19:13:09 5 1 0 94
19:13:14 1 24 66 8
19:13:19 2 35 38 25
19:13:24 3 20 17 60
< Лекция 5 || Лекция 6: 12345 || Лекция 7 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.