Віртуальні контейнери
Система віртуалізації дозволяє завантажувати на
одному комп'ютері паралельно декілька копій
операційної системи. Використання даної технології
дозволяє підвищити безпеку та керованість системою,
так як уразливості будь-якого сервісу, що виконується
у віртуальному контейнері, не можуть вплинути на інші
віртуальні контейнери. Окрім цього полегшується
міграція сервісів та оптимізація завантаження серверів.
Віртуальним сервером ми будемо називати
сервіс, що виконується у віртуальному контейнері. Ви
можете переглянути список доступних віртуальних
серверів, завантажити, зупинити або перезавантажити
вибрані. Для завантажених віртуальних серверів можна
змінити налаштування віртуального контейнеру
(посилання «Налаштувати контейнер») або
налаштувати сервіси, що виконуються всередині
контейнера (посилання «Налаштувати
сервіси»). Також можна створити новий
віртуальний контейнер на основі
існуючого шаблону.
Налаштування обмежень системних ресурсів віртуального
сервера
Тут можуть бути змінені обмеження системних ресурсів:
- «kmemsize» — об'єм пам'яті, що використовується
ядром. Цей параметр пов'язаний зі значенням параметру
«numproc». Кожен процес споживає деякий об'єм
пам'яті ядра: 30-50 кілобайт, мінімум — 16. Важливо мати
достатньо великий проміжок між граничним і максимальним значеннями,
щоб не заставляти ядро завершувати процеси, що виконуються у
віртуальному оточенні.
- «lockedpages» — кількість сторінок пам'яті,
заблокованих за допомогою mlock.
- «privvmpages» — об'єм пам'яті, що розташовується
процесами. Пам'ять, що розділяється між різними процесами не входить
до даного об'єму.
- «shmsize» — об'єм пам'яті, що доступна для
міжпроцесорної взаємодії через поділювальну пам'ять. Встановлення
граничного значення, яке відрізняється від максимального, не має
смислу.
- «numproc» — кількість процесів та потоків, що
забезпечуються ядром. Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «physpages» — об'єм фізичної пам'яті, що
використовується віртуальним сервером. Використовується лише для
обліку. Граничне значення повинно бути виставлене в 0.
- «vmguarpages» — гарантований об'єм доступної пам'яті
в сторінках (4 Кб). Має смисл зміна лише граничного значення.
- «oomguarpages» — доки використання пам'яті по
сторінкам (4 Кб) не перевищує заданого граничного значення, процеси
не будуть примусово завершені через недолік пам'яті навіть при її
реальній недостачі.
- «numtcpsock» — максимальна кількість сокетів
протоколу TCP. Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «numflock» — максимальна кількість файлових
блокувань. Рекомендується виставляти зазор між граничним та
максимальним значеннями.
- «numpty» — кількість псевдотерміналів. Не може
перевищувати 255. Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «numsiginfo» — кількість
структур siginfo. Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «tcpsndbuf» — максимальний розмір буферів для даних,
що відправляються через протокол TCP. Граничне значення не повинне
бути меншим 64 Кб, а різниця між ним та максимальним значенням не
повинна бути меншою ніж значення «numtcpsock»,
помноженого на 2,5.
- «tcprcvbuf» — максимальний розмір буферів для даних,
що отримуються через протокол TCP. Граничне значення не повинне
бути меншим 64 Кб, а різниця між ним та максимальним значенням не
повинна бути меншою ніж значення «numtcpsock»,
помноженого на 2,5.
- «othersockbuf» — максимальний розмір інших (не TCP)
буферів відправлення. Збільшення ліміту прискорює зв'язок через
локальні сокети.
- «dgramrcvbuf» — максимальний розмір інших (не TCP)
буферів отримання. Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «numothersock» — максимальна кількість не-TCP
сокетів (локальних, UDP та інших). Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «dcachesize» — максимальний розмір кешів файлової
системи (в байтах). Максимальне значення повинно бути більшим за
граничне.
- «numfile» — максимальна кількість відкритих
файлів. Встановлення граничного значення, яке
відрізняється від максимального, не має смислу.
- «numiptent» — максимальна кількість записів у
таблицях фільтрування мережевих пакетів (iptables).
Привілеї контейнеру OpenVZ
Стандартна реалізація перевірки прав доступу в Unix
розділяє процеси на 2 категорії: привілейовані
процеси (у яких діючий ідентифікатор користувача
рівний 0, як правило, це суперкористувач або root),
і не привілейовані (діючі ідентифікатори не рівні
0). На привілейовані процеси не діють перевірки
безпеки ядра системи на відміну від не
привілейованих, для яких виконуються стандартні
перевірки прав доступу (зазвичай це перевірки
діючого ідентифікатору користувача/групи і списку
додаткових груп).
Розпочинаючи з версії 2.2, ядро Linux надає систему
привілеїв (але все ще не повну), яка дозволяє
відобразити стандартні привілеї суперкористувача у
вигляді набору індивідуальних частин, кожна з яких
може бути ввімкнена або вимкнена незалежно один від
одного.
Кожен віртуальний контейнер по змовчуванню володіє
набором привілеїв (див. capabilites(7)) достатніх
для роботи більшості сервісів. Цей набір дозволяє
глобально (на рівні контейнера) обмежити список
доступних привілеїв для процесів всередині
контейнера. Якщо вам необхідно розширити цей список,
то ви можете скористатися інтерфейсом управління
привілеями контейнера OpenVZ.