Виртуализация серверов.md
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d5e6b54a58
commit
ae64bba4a5
@ -20,7 +20,7 @@ parents:
|
||||
|
||||
Процесс содержит в себе [потоки](Поток%20процесса%20ОС.md).
|
||||
|
||||
Под любой процесс создаются свои [Namespace](Namespace.md), которые позволяют изолировать процессы, запущенные на одном ядре друг от друга.
|
||||
Под любой процесс создаются свои [Namespace](../linux/Namespace.md), которые позволяют изолировать процессы, запущенные на одном ядре друг от друга.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Архитектура ЭВМ|00 Архитектура ЭВМ]]]
|
||||
|
43
dev/linux/Control group.md
Normal file
43
dev/linux/Control group.md
Normal file
@ -0,0 +1,43 @@
|
||||
---
|
||||
aliases:
|
||||
- cgroup
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date:
|
||||
- - 2024-03-19
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Linux|00 Linux]]"
|
||||
parents:
|
||||
- "[[Контейнерная виртуализация]]"
|
||||
linked:
|
||||
---
|
||||
Control group — это механизм в ядре Linux, предоставляющий функциональность управления и ограничения ресурсами, используемыми [процессами](../fundamental/Процесс%20ОС.md), запущенными в системе. Это позволяет системному администратору распределять ресурсы, такие как CPU, память, [пропускная способность](../architecture/Throughput.md) сети и доступ к устройствам, между наборами процессов.
|
||||
|
||||
С помощью cgroup можно:
|
||||
- Управлять лимитом cpu. Как процент времени, который выделяется, так и CPU-sets, то есть какие ядра мы можем задействовать. Есть как общее ограничение, так и индивидуальные для подпроцессов
|
||||
- Управлять ограничением по памяти. Имеется возможность настроить как максимальный так и минимальный порог.
|
||||
- Доступ к устройствам
|
||||
- Ограничения сети
|
||||
- Ограничения дисковых операций
|
||||
|
||||
С помощью cgroup можно:
|
||||
- Ограничивать количество ресурсов, которые могут использовать процессы в группе. Например, можно задать максимальное количество CPU или объем оперативной памяти, которые доступны определенной группе процессов.
|
||||
- Отслеживать использование ресурсов процессами или группами процессов. Это позволяет вести мониторинг загрузки системы и определять, какие процессы или группы процессов используют больше всего ресурсов.
|
||||
- Управлять приоритетами доступа к ресурсам для различных групп процессов. Это может быть полезно для обеспечения того, чтобы критически важные задачи имели доступ к необходимым ресурсам в первую очередь.
|
||||
|
||||
Утилита `cgroup` позволяет организовывать процессы в иерархические группы, что упрощает управление и делает систему более гибкой и масштабируемой. `cgroup` широко используется в технологиях виртуализации и контейнеризации, таких как [[../../meta/zero/00 Docker|Docker]] и Kubernetes, поскольку они предоставляют эффективные средства для изоляции и управления ресурсами виртуальных и контейнеризированных сред.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||
**Родитель**:: [[Контейнерная виртуализация]]
|
||||
**Источник**::
|
||||
**Автор**::
|
||||
**Создана**:: [[2024-03-19]]
|
||||
### Дополнительные материалы
|
||||
-
|
||||
### Дочерние заметки
|
||||
```dataview
|
||||
LIST
|
||||
FROM [[]]
|
||||
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
||||
```
|
40
dev/linux/Namespace.md
Normal file
40
dev/linux/Namespace.md
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date:
|
||||
- - 2024-03-20
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Linux|00 Linux]]"
|
||||
parents:
|
||||
- "[[Контейнерная виртуализация]]"
|
||||
linked:
|
||||
---
|
||||
Namespaces в Linux – это функция ядра, которая ограничивает видимость и доступность ресурсов процессам. Каждый namespace инкапсулирует определенный аспект системы, позволяя процессам работать в изолированной среде, как если бы они были единственными процессами в системе.
|
||||
|
||||
Это ключевая технология для реализации контейнеров, таких как [[../../meta/zero/00 Docker|Docker]] и LXC, поскольку она позволяет каждому контейнеру иметь собственные сетевые интерфейсы, файловые системы, идентификаторы пользователей и процессов, не влияя на остальную часть системы.
|
||||
|
||||
Linux поддерживает несколько типов namespaces:
|
||||
1. **PID (Process ID) namespaces**: Изолируют пространство идентификаторов процессов. Это означает, что процессы в разных PID namespaces могут иметь одинаковые PID, но будут рассматриваться как разные процессы внутри их namespaces.
|
||||
2. **Network namespaces**: Изолируют сетевые интерфейсы, таблицы маршрутизации, firewall правила, и прочие сетевые ресурсы. Это позволяет каждому namespace иметь собственный набор виртуальных сетевых интерфейсов и свою собственную сетевую конфигурацию.
|
||||
3. **Mount namespaces**: Изолируют точки монтирования файловых систем. Это позволяет процессам в разных mount namespaces видеть разные файловые системы, что обеспечивает дополнительный уровень изоляции файлов и директорий.
|
||||
4. **IPC (Inter-Process Communication) namespaces**: Изолируют IPC ресурсы, такие как очереди сообщений, разделяемые память и семафоры, позволяя процессам в разных IPC namespaces иметь раздельные IPC ресурсы.
|
||||
5. **UTS (UNIX Time-sharing System) namespaces**: Позволяют иметь изолированные имена узлов и доменные имена. Это означает, что каждый UTS namespace может иметь свое собственное имя хоста и NIS доменное имя.
|
||||
6. **User namespaces**: Изолируют идентификаторы пользователей и групп. В таком namespace, процесс может иметь привилегии root внутри namespace, не имея их за его пределами.
|
||||
|
||||
Чтобы увидеть namespaces нужно в папке `/proc/*/ns` вызвать команду `sudo ls -la`
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||
**Родитель**:: [[Контейнерная виртуализация]]
|
||||
**Источник**::
|
||||
**Автор**::
|
||||
**Создана**:: [[2024-03-20]]
|
||||
### Дополнительные материалы
|
||||
- [Разделяй и властвуй. Изоляция процессов в Linux / Хабр](https://habr.com/ru/companies/otus/articles/673960/)
|
||||
### Дочерние заметки
|
||||
```dataview
|
||||
LIST
|
||||
FROM [[]]
|
||||
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
||||
```
|
36
dev/linux/Виртуализация серверов.md
Normal file
36
dev/linux/Виртуализация серверов.md
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
aliases:
|
||||
- виртуализации серверов
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date:
|
||||
- - 2024-03-20
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Linux|00 Linux]]"
|
||||
parents:
|
||||
linked:
|
||||
---
|
||||
Виртуализация — это технология создания виртуальных (а не физических) версий серверов. Она позволяет разделять физические ресурсы компьютера на несколько виртуальных сред, каждая из которых может использовать и управлять ресурсами как независимый компьютер.
|
||||
|
||||
Типы виртуализаций:
|
||||
- [Контейнерная виртуализация](Контейнерная%20виртуализация.md)
|
||||
- [Гипервизор](../../../../_inbox/Гипервизор.md)
|
||||
|
||||
Виртуализация помогает увеличить эффективность использования ресурсов, упрощает управление ИТ-инфраструктурой, повышает гибкость и масштабируемость систем, а также улучшает безопасность и изоляцию приложений.
|
||||
|
||||
![](../../meta/files/images/Pasted%20image%2020240320133203.png)
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Автор**::
|
||||
**Создана**:: [[2024-03-20]]
|
||||
### Дополнительные материалы
|
||||
-
|
||||
### Дочерние заметки
|
||||
```dataview
|
||||
LIST
|
||||
FROM [[]]
|
||||
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
||||
```
|
39
dev/linux/Контейнерная виртуализация.md
Normal file
39
dev/linux/Контейнерная виртуализация.md
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date:
|
||||
- - 2024-03-20
|
||||
zero-link:
|
||||
- "[[../../meta/zero/00 Linux|00 Linux]]"
|
||||
parents:
|
||||
- "[[Виртуализация серверов]]"
|
||||
linked:
|
||||
- "[[../../../../_inbox/Гипервизор|Гипервизор]]"
|
||||
---
|
||||
Контейнеризация — это метод [виртуализации серверов](Виртуализация%20серверов.md) на уровне операционной системы, позволяющий запускать и управлять множеством изолированных приложений (контейнеров) на одном хосте без необходимости виртуализировать каждую операционную систему.
|
||||
|
||||
В отличие от традиционной виртуализации ([Гипервизор](../../../../_inbox/Гипервизор.md)), где каждая виртуальная машина работает со своей собственной операционной системой, контейнеры делят одну и ту же операционную систему хоста, но остаются изолированными друг от друга. Это достигается благодаря использованию [Namespace](Namespace.md) и [Control group](Control%20group.md) в Linux, которые обеспечивают изоляцию и управление ресурсами на уровне процессов.
|
||||
|
||||
**Плюсы:**
|
||||
- **Легковесность**: Контейнеры требуют меньше ресурсов, чем традиционные виртуальные машины, поскольку они делят ядро хост-системы и не нуждаются в своей собственной операционной системе. Это делает их идеальными для [микросервисной архитектуры](Микросервисная%20архитектура.md) и облачных приложений.
|
||||
- **Портативность**: Приложения в контейнерах инкапсулируют все свои зависимости, что обеспечивает их безопасное и последовательное выполнение в любой среде, будь то локальный компьютер разработчика, тестовая среда или облачная инфраструктура.
|
||||
- **Быстрое развертывание и масштабирование**: Контейнеры можно создавать, запускать и останавливать за секунды, что делает процесс развертывания и масштабирования приложений быстрым и эффективным.
|
||||
- **Эффективность использования ресурсов**: Контейнеры позволяют более эффективно использовать системные ресурсы, повышая общую утилизацию инфраструктуры.
|
||||
|
||||
[Docker](../../meta/zero/00%20Docker.md) является одной из самых популярных платформ для контейнеризации, предоставляя простые в использовании инструменты для создания, развертывания и управления контейнерами. Однако существует и другие технологии контейнеризации, такие как Kubernetes, который представляет собой систему оркестрации контейнеров, позволяющую автоматизировать развертывание, масштабирование и управление контейнеризированными приложениями.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||
**Родитель**:: [[Виртуализация серверов]]
|
||||
**Источник**::
|
||||
**Автор**::
|
||||
**Создана**:: [[2024-03-20]]
|
||||
### Дополнительные материалы
|
||||
-
|
||||
### Дочерние заметки
|
||||
```dataview
|
||||
LIST
|
||||
FROM [[]]
|
||||
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
||||
```
|
BIN
meta/files/images/Pasted image 20240320133203.png
Normal file
BIN
meta/files/images/Pasted image 20240320133203.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 538 KiB |
@ -3,8 +3,11 @@ tags:
|
||||
- type/zero-link
|
||||
zero-link:
|
||||
- "[[00 DevOps|00 DevOps]]"
|
||||
aliases:
|
||||
- Docker
|
||||
title: Docker
|
||||
---
|
||||
Для изоляции и управления ресурсами контейнеров активно используется [cgroup](Control%20group.md). Так же для изоляции активно используется [Namespace](Namespace.md). Все это функционал ядра Linux, поэтому не оказывает сильного влияния на производительность. Однако, нужно быть осторожным при работе с диском и сетью. С сутью больше всего проблем, например при запуске nginx можно получить просадку в 5%.
|
||||
Для изоляции и управления ресурсами контейнеров активно используется [cgroup](../../dev/linux/Control%20group.md). Так же для изоляции активно используется [Namespace](../../dev/linux/Namespace.md). Все это функционал ядра Linux, поэтому не оказывает сильного влияния на производительность. Однако, нужно быть осторожным при работе с диском и сетью. С сутью больше всего проблем, например при запуске nginx можно получить просадку в 5%.
|
||||
|
||||
Обычно docker запускается от root пользователя.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user