CGroup Namespace
Основна інформація
Простір імен CGroup - це функція ядра Linux, яка забезпечує ізоляцію ієрархій cgroup для процесів, що працюють у межах простору імен. Cgroups, що скорочено від control groups, - це функція ядра, яка дозволяє організовувати процеси в ієрархічні групи для управління та забезпечення обмежень на системні ресурси, такі як ЦП, пам'ять та введення/виведення.
Хоча простори імен cgroup не є окремим типом простору імен, як інші, про які ми говорили раніше (PID, mount, network і т. д.), вони пов'язані з концепцією ізоляції просторів імен. Простори імен cgroup віртуалізують вид ієрархії cgroup, так що процеси, що працюють у просторі імен cgroup, мають інший вид ієрархії порівняно з процесами, що працюють на хості або в інших просторах імен.
Як це працює:
При створенні нового простору імен cgroup він починається з виду ієрархії cgroup на основі cgroup створюючого процесу. Це означає, що процеси, що працюють у новому просторі імен cgroup, побачать лише підмножину всієї ієрархії cgroup, обмежену піддеревом cgroup, що має корінь у cgroup створюючого процесу.
Процеси у просторі імен cgroup будуть бачити свій власний cgroup як корінь ієрархії. Це означає, що з точки зору процесів у просторі імен, їх власний cgroup виглядає як корінь, і вони не можуть бачити або отримати доступ до cgroup поза власним піддеревом.
Простори імен cgroup не надають прямої ізоляції ресурсів; вони надають лише ізоляцію виду ієрархії cgroup. Контроль та ізоляція ресурсів все ще забезпечуються підсистемами cgroup (наприклад, центральний процесор, пам'ять і т. д.).
Для отримання додаткової інформації про CGroups перегляньте:
pageCGroupsЛабораторія:
Створення різних просторів імен
CLI
Монтувавши новий екземпляр файлової системи /proc
, якщо використовується параметр --mount-proc
, ви забезпечуєте, що новий простір імен має точний та ізольований вид інформації про процес, специфічний для цього простору імен.
Docker
Перевірте, в якому просторі імені знаходиться ваш процес
Знайдіть всі простори імен CGroup
```bash sudo find /proc -maxdepth 3 -type l -name cgroup -exec readlink {} \; 2>/dev/null | sort -u # Find the processes with an specific namespace sudo find /proc -maxdepth 3 -type l -name cgroup -exec ls -l {} \; 2>/dev/null | grep ``` ### Увійдіть всередину простору імен CGroup ```bash nsenter -C TARGET_PID --pid /bin/bash ``` Також, ви можете **увійти в інший простір процесу лише як root**. І ви **не можете** **увійти** в інший простір без дескриптора, що вказує на нього (наприклад, `/proc/self/ns/cgroup`).
Посилання
Last updated