DevOps | Вопросы собесов
5.28K subscribers
27 photos
896 links
Download Telegram
📌 В чем заключается роль DevOps \SRE\IE?

💬 Спрашивают в 13% собеседований

Роль DevOps, SRE (Site Reliability Engineering) и IE (Infrastructure Engineering) имеет много общего, но также включает специфические задачи и фокус в каждой области. Давайте рассмотрим каждую из них:

🤔 DevOps

🤔 Задачи и обязанности:

1️⃣ Автоматизация и интеграция: Разработка и внедрение CI/CD (Continuous Integration/Continuous Deployment) процессов для автоматизации развертывания приложений.

2️⃣ Мониторинг и логирование: Настройка систем мониторинга и логирования для отслеживания состояния систем и приложений.

3️⃣ Сотрудничество: Работа в тесной связке с командами разработчиков и операционных инженеров для обеспечения гладкой и быстрой доставки приложений.

4️⃣ Инфраструктура как код: Использование инструментов, таких как Terraform или Ansible, для автоматизации развертывания и управления инфраструктурой.

🤔 Почему это важно:

DevOps помогает ускорить выпуск программного обеспечения, повысить его качество и снизить риски за счет автоматизации и тесной интеграции процессов разработки и операций.

🤔 SRE (Site Reliability Engineering)

Задачи и обязанности:

1️⃣ Надежность и производительность: Обеспечение высокой доступности и производительности систем и приложений.

2️⃣ Инцидент-менеджмент: Обнаружение, расследование и устранение инцидентов, связанных с доступностью или производительностью.

3️⃣ SLA и SLO: Установление и соблюдение соглашений об уровне обслуживания (SLA) и целевых уровней обслуживания (SLO).

4️⃣ Автоматизация и инструментирование: Разработка инструментов для автоматизации процессов и улучшения надежности систем.

🤔 Почему это важно:

SRE фокусируется на обеспечении стабильной и предсказуемой работы систем, что критично для поддержания доверия пользователей и минимизации времени простоя.

🤔 IE (Infrastructure Engineering)

🤔 Задачи и обязанности:

1️⃣ Проектирование и развертывание: Проектирование, развертывание и поддержка физической и виртуальной инфраструктуры.

2️⃣ Сетевая архитектура: Настройка и управление сетями, включая маршрутизацию, балансировку нагрузки и безопасность.

3️⃣ Облачные решения: Работа с облачными провайдерами (AWS, Azure, GCP) для создания и поддержки облачной инфраструктуры.

4️⃣ Оптимизация: Постоянное улучшение и оптимизация существующей инфраструктуры для повышения производительности и эффективности.

🤔 Почему это важно:

IE отвечает за создание надежной и масштабируемой инфраструктуры, что является основой для работы всех приложений и сервисов компании.

🤔 Примеры кода и инструментов

🤔 Пример CI/CD пайплайна с использованием Jenkins:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'make build'
}
}
stage('Test') {
steps {
echo 'Testing...'
sh 'make test'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
sh 'make deploy'
}
}
}
}


🤔 Пример Terraform кода для создания виртуальной машины в AWS:
provider "aws" {
region = "us-west-2"
}

resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"

tags = {
Name = "example-instance"
}
}


🤔 Резюме

1️⃣ DevOps: Автоматизирует и интегрирует процессы разработки и развертывания.

2️⃣ SRE: Обеспечивает надежность и производительность систем.

3️⃣ IE: Проектирует и поддерживает инфраструктуру.

Для ребенка: DevOps помогает программам быстро работать, SRE следит, чтобы они не ломались, а IE строит и поддерживает компьютеры и сети для этих программ.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
📌 Чем gitlab ci артефакты отличаются от кэша как атрибуты джобы?

💬 Спрашивают в 13% собеседований

GitLab CI/CD предлагает два механизма для управления временными файлами, которые создаются и используются во время выполнения пайплайна: артефакты (artifacts) и кэш (cache). Они служат разным целям и имеют различные характеристики.

🤔 Артефакты (Artifacts)

Задачи и характеристики:

1️⃣ Временные файлы: Артефакты представляют собой временные файлы, созданные в процессе выполнения job (задания), которые сохраняются и могут быть использованы на следующих этапах пайплайна.

2️⃣ Срок хранения: Артефакты могут храниться на протяжении определенного времени, указанного в конфигурации (по умолчанию 30 дней).

3️⃣ Примеры использования: Компиляционные артефакты, такие как бинарные файлы, отчеты о тестировании, логи и артефакты для развертывания.

4️⃣ Доступ: Артефакты доступны только для последующих заданий в том же пайплайне или через веб-интерфейс GitLab.

5️⃣ Конфигурация: Определяются с помощью ключа artifacts в .gitlab-ci.yml файле.

Пример конфигурации артефактов:
job1:
script:
- make build
artifacts:
paths:
- build/
expire_in: 1 week


🤔 Кэш (Cache)

Задачи и характеристики:

1️⃣ Ускорение сборки: Кэш используется для ускорения сборок, сохраняя промежуточные файлы или зависимости между различными запусками пайплайнов.

2️⃣ Долгосрочное хранение: Кэш сохраняется в течение длительного времени, часто используется для кеширования зависимостей, таких как библиотеки или модули.

3️⃣ Примеры использования: Директории с зависимостями (например, node_modules для Node.js или vendor для PHP), промежуточные результаты сборок.

4️⃣ Доступ: Кэш доступен для всех пайплайнов и заданий в проекте, а не только для текущего пайплайна.

5️⃣ Конфигурация: Определяется с помощью ключа cache в .gitlab-ci.yml файле.

Пример конфигурации кэша:
job1:
script:
- npm install
cache:
paths:
- node_modules/

job2:
script:
- npm test
cache:
paths:
- node_modules/


🤔 Ключевые различия

1️⃣ Назначение: Артефакты предназначены для передачи файлов между заданиями в одном пайплайне, тогда как кэш используется для хранения файлов и данных, которые могут быть использованы в различных пайплайнах и заданиях для ускорения сборок.

2️⃣ Срок хранения: Артефакты имеют ограниченный срок хранения (обычно указывается), тогда как кэш может существовать дольше, и его срок хранения часто определяется политиками очистки.

3️⃣ Доступ: Артефакты доступны только в рамках текущего пайплайна, в то время как кэш доступен между разными пайплайнами и заданиями.

🤔 Резюме

1️⃣ Артефакты используются для передачи файлов между заданиями в одном пайплайне.

2️⃣ Кэш используется для ускорения сборок, сохраняя файлы и данные между разными пайплайнами.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
📌 В чём основное преимущество systemd?

💬 Спрашивают в 13% собеседований

Основное преимущество systemd по сравнению с традиционными системами инициализации, такими как SysV init и Upstart, заключается в его расширенных функциональных возможностях и улучшенной производительности. Вот несколько ключевых аспектов, которые делают systemd более предпочтительным:

1️⃣ Параллельный запуск сервисов

Что это:
systemd позволяет запускать службы параллельно, в то время как SysV init запускает их последовательно.

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

2️⃣ Упрощённое управление зависимостями

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

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

3️⃣ Мониторинг и управление сервисами

Что это:
systemd предоставляет встроенные механизмы для мониторинга состояния служб, их перезапуска при сбоях и сбора логов.

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

4️⃣ Удобные конфигурационные файлы

Что это:
systemd использует простые и читаемые файлы конфигурации в формате INI для определения служб и их параметров.

Почему это важно:
Эти файлы легко редактировать и понимать, что упрощает настройку и управление службами для администраторов.

5️⃣ Поддержка современных функций

Что это:
systemd поддерживает множество современных функций, таких как cgroups для управления ресурсами, таймеры для замены cron-джобов и сокет-активацию для запуска служб по запросу.

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

🤔 Примеры использования

🤔 Пример файла сервиса systemd:
[Unit]
Description=My Example Service
After=network.target

[Service]
ExecStart=/usr/bin/myservice
Restart=always

[Install]
WantedBy=multi-user.target


Этот файл конфигурации определяет сервис, который будет запускаться после сети и автоматически перезапускаться в случае сбоя.

🤔 Резюме

1️⃣ systemd запускает службы параллельно, что ускоряет загрузку системы.

2️⃣ systemd управляет зависимостями между службами, упрощая их настройку и управление.

3️⃣ systemd предоставляет встроенные механизмы для мониторинга и управления службами.

4️⃣ systemd использует удобные конфигурационные файлы.

5️⃣ systemd поддерживает современные функции для улучшения производительности и гибкости системы.

Для ребенка: systemd — это как умный помощник, который помогает компьютеру быстро включаться, следит за его программами и автоматически чинит их, если они сломаются.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
5
📌 Что хранится в etc fstab?

💬 Спрашивают в 13% собеседований

Файл /etc/fstab (файловая таблица файловых систем) содержит информацию о файловых системах и устройствах, которые должны быть автоматически подключены (монтированы) при загрузке системы или вручную. Этот файл является важным компонентом конфигурации системы, поскольку он определяет, какие разделы и устройства будут доступны при запуске операционной системы.

🤔 Основные поля в `/etc/fstab`

Каждая строка в /etc/fstab описывает одну файловую систему и содержит следующие поля:

1️⃣ Устройство (Device): Указывает, какое устройство или раздел должно быть подключено. Это может быть обозначение устройства (например, /dev/sda1), UUID или метка (label) файловой системы.

2️⃣ Точка монтирования (Mount Point): Директория, в которую будет монтироваться файловая система (например, /, /home, /mnt/data).

3️⃣ Файловая система (File System Type): Тип файловой системы (например, ext4, xfs, swap).

4️⃣ Параметры монтирования (Mount Options): Дополнительные параметры монтирования, которые определяют, как файловая система будет использоваться (например, defaults, ro для только чтения, noatime для отключения обновления времени доступа).

5️⃣ Dump: Поле, указывающее, будет ли файловая система использоваться для создания резервных копий утилитой dump. Значение 0 означает, что резервное копирование отключено, 1 — включено.

6️⃣ Порядок проверки (Pass): Определяет порядок проверки файловых систем при загрузке. Значение 0 отключает проверку, 1 означает, что файловая система будет проверена первой (обычно корневая файловая система), 2 — проверка будет выполняться после первой.

🤔 Пример содержимого `/etc/fstab`
# <файл-система> <точка монтирования> <тип> <параметры> <dump> <pass>
UUID=123e4567-e89b-12d3-a456-426614174000 / ext4 defaults 1 1
/dev/sda1 /boot ext4 defaults 1 2
/dev/sda2 none swap sw 0 0
UUID=987f6543-c21b-34a5-6789-0b1234567890 /home ext4 defaults 0 2


🤔 Расшифровка примера:

1️⃣ UUID=123e4567-e89b-12d3-a456-426614174000 / ext4 defaults 1 1:
- Файловая система с указанным UUID будет смонтирована в корень (/).
- Используется файловая система ext4.
- Параметры монтирования defaults.
- Будет участвовать в резервном копировании (dump = 1).
- Будет проверена первой при загрузке (pass = 1).

2️⃣ /dev/sda1 /boot ext4 defaults 1 2:
- Раздел /dev/sda1 будет смонтирован в /boot.
- Используется файловая система ext4.
- Параметры монтирования defaults.
- Будет участвовать в резервном копировании (dump = 1).
- Будет проверена после корневой файловой системы (pass = 2).

3️⃣ /dev/sda2 none swap sw 0 0:
- Раздел /dev/sda2 используется как swap (файл подкачки).
- Не имеет точки монтирования.
- Параметры монтирования sw.
- Не участвует в резервном копировании (dump = 0).
- Не будет проверяться при загрузке (pass = 0).

4️⃣ UUID=987f6543-c21b-34a5-6789-0b1234567890 /home ext4 defaults 0 2:
- Файловая система с указанным UUID будет смонтирована в /home.
- Используется файловая система ext4.
- Параметры монтирования defaults.
- Не участвует в резервном копировании (dump = 0).
- Будет проверена после корневой файловой системы (pass = 2).

🤔 Резюме

Файл /etc/fstab содержит информацию о том, какие файловые системы и устройства нужно подключать при загрузке системы и как это делать.

Для ребенка: в файле /etc/fstab записано, какие "шкафчики" на компьютере нужно открыть при включении и куда их поставить, чтобы они были удобны для использования.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
📌 Как убить зомби процесс?

💬 Спрашивают в 13% собеседований

Зомби-процессы (zombie processes) — это процессы, которые завершили свое выполнение, но их записи в таблице процессов остаются, потому что их родительский процесс еще не вызвал системный вызов wait() для получения информации о завершении дочернего процесса. Зомби-процессы сами по себе не потребляют ресурсов CPU или памяти, но они занимают записи в таблице процессов, что может быть проблемой, если их накапливается слишком много.

🤔 Как обнаружить зомби-процессы

Вы можете использовать команду ps для обнаружения зомби-процессов. Например:
ps aux | grep Z


В выводе ps зомби-процессы будут помечены как Z в колонке состояния (STAT).

🤔 Удаление зомби-процессов

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

1️⃣ Найти родительский процесс зомби-процесса

Сначала нужно найти PID родительского процесса. Используйте команду ps или pstree для этого:
ps -l


Вывод будет примерно следующим:
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
5 Z user 1234 5678 0 80 0 - 0 - ? 00:00:00 process_name


Здесь 5678 — это PID родительского процесса.

2️⃣ Перезапустить родительский процесс

Если родительский процесс важен и его нельзя завершить, попробуйте перезапустить его. Это может быть сделано командой kill -HUP:
sudo kill -HUP 5678


Сигнал HUP (hang up) обычно заставляет процесс перечитать свои конфигурационные файлы и может завершить зомби-процессы. Если это не сработает, можно попытаться перезапустить процесс вручную.

3️⃣ Завершить родительский процесс

Если перезапуск не помог, возможно, придется завершить родительский процесс. Сделайте это командой kill:
sudo kill 5678


Если родительский процесс отказывается завершаться, можно использовать kill -9, чтобы принудительно его завершить:
sudo kill -9 5678


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

4️⃣ Перезагрузка системы

В крайних случаях, если родительский процесс нельзя завершить, а зомби-процессы продолжают накапливаться, может потребоваться перезагрузка системы. Это гарантированно очистит все зомби-процессы:
sudo reboot


🤔 Резюме

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

Для ребенка: зомби-процессы — это как призраки, которые остались после завершения работы программы. Чтобы избавиться от них, нужно "разбудить" или "убрать" их главного.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍31
📌 Как сирота отличается от зомби процесса?

💬 Спрашивают в 13% собеседований

Сиротские процессы (orphan processes) и зомби-процессы (zombie processes) — это два разных состояния процессов в операционной системе, которые связаны с завершением или отсутствием родительских процессов. Вот основные различия между ними:

🤔 Зомби-процесс

Определение:
Зомби-процесс — это процесс, который завершил свое выполнение, но его запись в таблице процессов все еще существует, потому что родительский процесс не вызвал системный вызов wait() для получения информации о завершении дочернего процесса.

Состояние:
- Процесс завершен, но его запись в таблице процессов остается, чтобы передать статус завершения родительскому процессу.
- В таблице процессов такой процесс отмечается буквой Z (zombie).

Влияние:
- Не использует ресурсы CPU или памяти, но занимает запись в таблице процессов.
- Может стать проблемой, если накапливается много зомби-процессов, так как количество записей в таблице процессов ограничено.

Устранение:
- Родительский процесс должен вызвать wait() или waitpid(), чтобы убрать запись зомби-процесса.
- Если родительский процесс не справляется с этой задачей, его можно перезапустить или завершить.

🤔 Сиротский процесс

Определение:
Сиротский процесс — это процесс, у которого родительский процесс завершился до его завершения. В этом случае сиротский процесс "усыновляется" процессом init (обычно PID 1).

Состояние:
- Процесс продолжает выполняться, но его родительский процесс завершен.
- В таблице процессов он получает нового родителя — процесс init.

Влияние:
- Сиротские процессы продолжают выполняться и использовать ресурсы системы (CPU, память и т.д.).
- Не представляют особой проблемы для системы, так как процесс init корректно завершает их при их завершении.

Устранение:
- Процесс продолжается до своего нормального завершения, после чего его "усыновляет" процесс init и корректно завершает.
- Специальные меры для устранения сиротских процессов обычно не требуются.

🤔 Примеры и сравнение

🤔 Зомби-процесс:

1️⃣ Процесс child завершился.

2️⃣ Родительский процесс parent не вызвал wait().

3️⃣ Процесс child становится зомби и остается в таблице процессов, ожидая, пока parent получит статус завершения.
ps aux | grep Z


🤔 Сиротский процесс:

1️⃣ Процесс parent завершился.

2️⃣ Процесс child продолжает выполняться.

3️⃣ Процесс child усыновляется процессом init.
ps -ef | grep child


🤔 Резюме

1️⃣ Зомби-процесс — это процесс, который завершился, но еще не был убран из таблицы процессов, потому что его родительский процесс не вызвал wait().

2️⃣ Сиротский процесс — это процесс, который продолжает выполняться после завершения его родительского процесса и усыновляется процессом init.

Для ребенка: зомби-процесс — это как призрак программы, которая закончила работать, но еще не исчезла полностью. Сиротский процесс — это как ребенок, чьи родители ушли, и теперь за ним присматривает другой взрослый (процесс init).

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
3👾2🤯1
📌 Как работает https?

💬 Спрашивают в 13% собеседований

HTTPS (Hypertext Transfer Protocol Secure) — это расширение HTTP (Hypertext Transfer Protocol), которое добавляет уровень безопасности с использованием протоколов SSL (Secure Sockets Layer) или более современного TLS (Transport Layer Security). HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию между веб-клиентом (обычно браузером) и веб-сервером. Вот как работает HTTPS:

🤔 Основные шаги работы HTTPS

1️⃣ Инициация соединения

2️⃣ SSL/TLS рукопожатие

3️⃣ Установление защищенного соединения

4️⃣ Обмен данными

🤔 Инициация соединения

Когда пользователь вводит URL, начинающийся с https://, браузер инициирует соединение с веб-сервером через порт 443 (по умолчанию для HTTPS).

🤔 SSL/TLS рукопожатие

Рукопожатие SSL/TLS — это процесс установления защищенного соединения. Оно включает несколько шагов:

a. Клиентское приветствие (Client Hello)

Браузер отправляет сообщение Client Hello, содержащее:
- Версию SSL/TLS, которую поддерживает браузер.
- Набор поддерживаемых шифров (cipher suites).
- Случайное число (random number), которое используется для создания ключей шифрования.

b. Серверное приветствие (Server Hello)

Сервер отвечает сообщением Server Hello, содержащим:
- Версию SSL/TLS, выбранную сервером.
- Выбранный шифр.
- Случайное число сервера.

c. Сертификат сервера (Server Certificate)

Сервер отправляет свой цифровой сертификат, который содержит:
- Публичный ключ сервера.
- Информацию о сервере.
- Подпись удостоверяющего центра (CA), который выдал сертификат.

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

d. Ключевое сообщение (Key Exchange)

Браузер создает премастер-секрет (pre-master secret), шифрует его с использованием публичного ключа сервера и отправляет его серверу. Сервер расшифровывает премастер-секрет с использованием своего приватного ключа.

e. Генерация мастер-ключа (Master Secret)

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

f. Завершение рукопожатия (Finish Handshake)

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

3️⃣ Установление защищенного соединения

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

4️⃣ Обмен данными

Теперь все данные, передаваемые между браузером и сервером, шифруются с использованием симметричного ключа. Это обеспечивает:
- Конфиденциальность: Данные зашифрованы, что предотвращает их чтение третьими лицами.
- Целостность данных: Любые изменения данных в процессе передачи будут обнаружены.
- Аутентификация: Удостоверяет, что данные передаются между подлинным клиентом и сервером.

🤔 Резюме

1️⃣ HTTPS — это безопасная версия HTTP, использующая SSL/TLS для защиты данных.

2️⃣ Рукопожатие SSL/TLS включает обмен сертификатами и создание симметричного ключа для шифрования данных.

3️⃣ Обмен данными после установления соединения зашифрован и защищен.

Для ребенка: HTTPS — это как секретный код, который ты и твой друг используете для обмена сообщениями, чтобы никто другой не мог их прочитать или изменить.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
📌 Зачем нужен inode?

💬 Спрашивают в 3% собеседований

Inode (индексный узел) — это структура данных в файловой системе UNIX и UNIX-подобных систем, которая хранит информацию о файле или директории. Каждому файлу и директории в файловой системе соответствует уникальный inode. Inode не содержит имени файла, но хранит метаданные и информацию, необходимую для управления файлами.

🤔 Основные функции и структура inode

Метаданные в inode:

1️⃣ Тип файла (например, обычный файл, директория, символическая ссылка).

2️⃣ Размер файла.

3️⃣ Владелец файла (пользователь и группа).

4️⃣ Права доступа (чтение, запись, выполнение для владельца, группы и других).

5️⃣ Временные метки (время создания, последнего доступа, последнего изменения и изменения метаданных).

6️⃣ Ссылки на данные файла (указатели на блоки данных, где хранится содержимое файла).

7️⃣ Количество жестких ссылок (число имен, ссылающихся на inode).

🤔 Как работает inode

1️⃣ Создание файла: Когда создается новый файл или директория, файловая система выделяет новый inode и блоки данных. Имена файлов хранятся в директориях, которые являются специальными типами файлов, связывающими имена файлов с их номерами inode.

2️⃣ Доступ к файлу: Когда система обращается к файлу по его имени, сначала проверяется директория для поиска соответствующего номера inode. Затем файловая система использует этот inode для доступа к метаданным и содержимому файла.

3️⃣ Изменение файла: При изменении содержимого файла или его метаданных inode обновляется соответствующим образом. Например, при добавлении данных к файлу inode обновляется, чтобы указать новые блоки данных.

4️⃣ Удаление файла: Когда файл удаляется, файловая система уменьшает количество ссылок на inode. Если это количество достигает нуля, inode и связанные с ним блоки данных освобождаются для повторного использования.

🤔 Пример использования inode

🤔 Получение информации о файле с использованием команды `ls -i`:
ls -i filename


Вывод покажет номер inode, связанный с filename.

🤔 Пример вывода:
123456 filename


Здесь 123456 — номер inode, связанный с файлом filename.

🤔 Зачем нужен inode

1️⃣ Эффективное управление файлами: Inode позволяет файловой системе хранить метаданные отдельно от имен файлов, что обеспечивает гибкость и эффективность управления файлами.

2️⃣ Поддержка жестких ссылок: Несколько имен файлов могут ссылаться на один и тот же inode, что позволяет создавать жесткие ссылки. Это экономит место на диске и предоставляет дополнительные возможности для управления файлами.

3️⃣ Безопасность и права доступа: Inode хранит информацию о правах доступа и владельцах файлов, что обеспечивает безопасность файловой системы.

4️⃣ Производительность: Разделение метаданных и содержимого файла позволяет оптимизировать операции ввода-вывода, улучшая общую производительность файловой системы.

🤔 Резюме

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

Для ребенка: inode — это как карточка в библиотеке, которая содержит информацию о книге, например, где она находится на полке, кто ее автор и сколько страниц в книге.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
📌 Без какой инструкции не может существовать докер файл ?

💬 Спрашивают в 80% собеседований


Dockerfile – это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа Docker. Эта инструкция обязательна, так как она определяет базовый (родительский) образ, от которого будет строиться ваш собственный образ.

🤔 Инструкция

Указывает на базовый образ, который используется для сборки нового образа Docker. Без этой инструкции Docker не сможет определить, с какого состояния начать сборку, и, соответственно, сборка образа будет невозможна.

Пример:
# Использование официального образа Python 3.8 как базового
FROM python:3.8


🤔 Зачем нужна инструкция

FROM выполняет несколько ключевых функций:
Определяет начальный слой для образа, на котором будут размещаться все последующие слои.
Задаёт окружение, в котором будут выполняться все команды сборки (например, ОС, предустановленные библиотеки).
Позволяет избежать необходимости с нуля создавать окружение, воспользуясь уже существующими образами с нужными настройками.

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

FROM – это первая и обязательная инструкция в любом Dockerfile, которая определяет базовый образ для вашего Docker-образа. Это как фундамент дома: без него нельзя построить стены и крышу.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👀1
🤔 Какой инструмент используется для автоматизации тестирования безопасности в DevOps?
Anonymous Quiz
35%
Selenium
16%
JUnit
35%
OWASP ZAP
14%
Nagios
📌 Чем отличается CMD от ENTRYPOINT в DockerFile ?

💬 Спрашивают в 66% собеседований

В Dockerfile две важные инструкции, которые определяют, какой исполняемый файл будет запущен при старте контейнера, это CMD и ENTRYPOINT. Хотя обе инструкции выглядят похожими, между ними есть ключевые отличия в поведении и назначении.

🤔 Инструкция CMD

Задает команду и её аргументы по умолчанию, которые будут выполнены при запуске контейнера. Однако, если при запуске контейнера указаны любые другие команды, они заменят команду, заданную через него. Это делает его идеальным выбором для задания параметров по умолчанию, которые могут быть переопределены пользователем при запуске контейнера.

Пример:
FROM ubuntu
CMD ["echo", "Hello, world!"]
При запуске этого контейнера без дополнительных параметров, будет выведено "Hello, world!". Но если при запуске указать другую команду, например

docker run <image> echo "Hello, Docker!", то будет выведено "Hello, Docker!".

🤔 Инструкция ENTRYPOINT

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

Пример:
FROM ubuntu
ENTRYPOINT ["echo", "Hello,"]
CMD ["world!"]

Здесь, если контейнер запущен без дополнительных аргументов, вывод будет "Hello, world!". Если же запустить контейнер с дополнительными аргументами, например docker run <image> Docker, то вывод будет "Hello, Docker".

🤔 Основные отличия

1️⃣ Переопределение команды: CMD может быть полностью переопределена при запуске контейнера, в то время как ENTRYPOINT предопределяет базовую команду, и любые аргументы, указанные при запуске, добавляются к этой команде.

2️⃣Использование в комбинации: Часто ENTRYPOINT используется в комбинации с CMD, где ENTRYPOINT задает исполняемый файл, а CMD задает аргументы по умолчанию, которые могут быть переопределены при запуске.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍2
📌 Что такое и нужен ли swap ?

💬 Спрашивают в 26% собеседований

Swap (подкачка) — это область на жёстком диске или другом носителе данных, используемая операционной системой как виртуальная память. Swap предназначен для того, чтобы компенсировать нехватку оперативной памяти (RAM) путём перемещения частей данных из RAM на диск, что позволяет освободить RAM для новых задач. Это особенно актуально в ситуациях, когда приложения требуют больше памяти, чем физически доступно в системе.

🤔 Как он работает

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

🤔 Нужен ли он?

Зависит от конкретных условий использования и конфигурации системы:

1️⃣ Количество RAM: В системах с большим объёмом оперативной памяти (например, 16 ГБ или больше) может потребоваться меньше или вообще не потребоваться swap, особенно если приложения не потребляют всю доступную память.

2️⃣ Тип используемых приложений: Некоторые приложения, особенно серверные, такие как базы данных, могут требовать swap даже при наличии достаточного объёма RAM, поскольку это может улучшить стабильность и производительность.

3️⃣ Необходимость гибернации: Для гибернации системы (сохранения состояния RAM на диск и полного выключения питания) обычно требуется swap-пространство, размером равным или большим объёму RAM.

4️⃣ Ресурсы сервера: На серверах, управляющих критически важными приложениями, swap может помочь предотвратить сбои приложений из-за исчерпания памяти, особенно при внезапных пиковых нагрузках.

🤔 Рекомендации по настройке

Размер: Традиционная рекомендация — установить размер swap в два раза больше объёма RAM для систем с малым объёмом памяти (например, 2 ГБ RAM). Для систем с большим объёмом памяти (например, 32 ГБ RAM) размер swap обычно устанавливается равным размеру RAM.
Тип носителя: Желательно использовать быстрые носители, такие как SSD, для уменьшения влияния на производительность при использовании swap.

Swap — важный элемент системы, который может улучшить её стабильность и надёжность, особенно в условиях ограниченного объёма оперативной памяти. Однако его использование должно быть сбалансировано с учётом потребностей приложений и характеристик системы, чтобы минимизировать возможное снижение производительности.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3