среда, 24 ноября 2010 г.

Зоны Solaris II: Sparse root VS whole root

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

Поэтому постараюсь объяснить на пальцах принципиальную разницу между sparse root и whole root моделями зон.

1. Sparse root - режим установки native-зон по умолчанию. Иначе говоря, если не сказано обратное, зоны Solaris устанавливаются именно в этом режиме. При этом копируется минимальное количество файлов, необходимых для запуска, большинство необходимых системных директорий монтируется через lofs в режиме read only. Директорий с возможностью записи в этом случае минимальное количество - обычно это /export, /tmp, /var, /etc. Ни в одну из системных директорий записывать нельзя - /lib, /usr, /platform итп. Что означает, например, что вы не можете в установленной неглобальной зоне создавать собственные SMF-сервисы без необходимости помещения в /lib/svc/method глобальной зоны управляющего скрипта. Однако вы можете запускать в установленной неглобальной зоне сервисы посредством старого механизма rcX.d, так как директория /etc в зоне собственная, что позволяет вам создавать в /etc/init.d скрипты и линки в директориях rcX.d. Это не слишком удобно, если нет доступа в глобальную зону, однако такова цена реализации данной модели.

Данный режим установки обладает двумя важными особенностями:

- Установленная неглобальная зона занимает минимум пространства на диске - 300-350 Мб, в зависимости от состава установленных в глобальной зоне пакетов.

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

2. Whole root - режим установки, при котором в зону копируется почти весь operating environment родительской системы. В этом случае /lib полностью копируется в неглобальную зону, независим от глобальной и в нее можно писать. Что означает, что в подобной конфигурации вы можете создавать SMF-сервисы в неглобальной зоне. Что касается /usr, то ситуация в этом случае несколько иная. Все, что создается в /usr неглобальной зоны, копируется в глобальную, однако при удалении созданных файлов из глобальной зоны, они остаются в /usr неглобальной зоны. Это поведение очень легко проверяется, именно так все и происходит. Кроме того, в таком режиме установки не происходит разделения исполняемого кода и библиотек, что увеличивает потребность в оперативной памяти глобальной зоны и несколько снижает быстродействие неглобальных зон.

Основное отличие whole root от sparse root в том, что установленная зона имеет гораздо больший размер (почти на порядок) - 3-6 Гб (в зависимости от установленных пакетов).