Inode (index node) — это структура данных в файловых системах Unix и Unix-подобных системах (например, Linux), которая хранит информацию о файлах и каталогах, за исключением их имен и содержимого. Каждому файлу или каталогу в файловой системе соответствует свой уникальный inode.
Предоставляет ключевую информацию о файле, которая необходима для его управления и доступа. Это помогает файловой системе эффективно управлять файлами и каталогами.
Основные функции и информация:
Временные метки:
Когда создается файл, файловая система выделяет inode и один или несколько блоков для хранения данных файла. Inode хранит всю информацию о файле, кроме его имени и содержимого. Имя файла хранится в каталоге, который содержит сопоставление имен файлов с их inodes.
Команда
ls -i
показывает номер inode для каждого файла в каталоге:ls -i
Пример вывода:
1234567 file1.txt
1234568 file2.txt
1234569 directory1
Здесь
1234567
, 1234568
и 1234569
— номера inodes для file1.txt
, file2.txt
и directory1
соответственно.Inode хранит метаданные файла и указатели на его содержимое, что позволяет эффективно управлять файлами и каталогами в файловой системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Anonymous Quiz
97%
Автоматизация создания и управления инфраструктурой с помощью кода
1%
Ручное управление серверными настройками
1%
Использование виртуальных машин для разработки
0%
Архивирование данных
Inode могут закончиться на файловых системах с фиксированным числом inodes. Это может произойти на различных типах файловых систем, особенно если система выделяет inodes при создании файловой системы и не может динамически изменять их количество. Как это происходит и на каких файловых системах это может случиться:
- mkfs.ext4 -N 100000 /dev/sdX1
Здесь
-N 100000
указывает на создание 100,000 inodes.- newfs -i 8192 /dev/sdX1
Здесь
-i 8192
задает размер inodes.- mkfs.xfs -i maxpct=25 /dev/sdX1
Здесь
-i maxpct=25
задает максимальный процент inodes от общего объема файловой системы.Для проверки текущего использования inodes можно использовать команду
df
с опцией -i
:df -i
Пример вывода:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1000000 50000 950000 5% /
Здесь видно, сколько inodes всего, сколько из них используется и сколько свободно.
Новые файлы и каталоги не могут быть созданы, даже если на диске еще есть свободное место. Это приводит к ошибкам при попытке создать новые файлы.
Inodes могут закончиться на файловых системах с фиксированным числом inodes, таких как ext2/ext3/ext4, UFS, HFS/HFS+, и XFS. Это ограничение можно избежать, правильно планируя создание файловой системы и мониторя использование inodes.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Anonymous Quiz
10%
Jenkins
15%
GitLab CI/CD
12%
Bamboo
62%
Apache
Провайдеры в Terraform — это плагины, которые позволяют Terraform взаимодействовать с различными облачными платформами, сервисами и другими API. Они определяют наборы ресурсов и операций для взаимодействия с этими сервисами. Каждый провайдер управляет одной или несколькими службами и абстрагирует детали API, предоставляя удобный способ управления инфраструктурой.
Основные функции
Провайдеры определяют типы ресурсов, с которыми можно работать. Например, провайдер для AWS позволяет управлять EC2-инстансами, S3-бакетами и другими сервисами AWS.
Провайдеры обеспечивают взаимодействие с API целевого сервиса. Они обрабатывают запросы и ответы, управляя состоянием ресурсов в соответствии с конфигурацией Terraform.
Провайдеры обычно предоставляют механизмы для аутентификации и авторизации при доступе к сервисам.
Для начала работы с провайдером необходимо его сконфигурировать в файле конфигурации Terraform. Обычно это делается в файле
main.tf
.provider "aws" {
region = "us-west-2"
access_key = "your-access-key"
secret_key = "your-secret-key"
}
В этом примере настраивается провайдер AWS с указанием региона и учетных данных.
После конфигурации провайдера можно определять ресурсы, которые будут управляться с его помощью.
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-instance"
}
}
В этом примере создается EC2-инстанс в AWS.
Когда вы запускаете
terraform init
, Terraform загружает и инициализирует провайдеры, указанные в конфигурации.Провайдеры конфигурируются с помощью блока
provider
, где указываются необходимые параметры, такие как учетные данные и регион.При выполнении команд
terraform apply
или terraform plan
Terraform взаимодействует с провайдерами для создания, изменения или удаления ресурсов в соответствии с конфигурацией.provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-instance"
}
}
В этом примере провайдер AWS конфигурируется для использования региона
us-west-2
, и затем создается EC2-инстанс с указанными параметрами.Провайдеры в Terraform — это плагины, которые позволяют взаимодействовать с различными облачными платформами и сервисами, определяя ресурсы и операции для управления ими.
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
94%
Контроль версий
2%
Проведение интервью с пользователями
3%
Разработка маркетинговых стратегий
1%
Обучение сотрудников
DevOps и Agile — это два различных подхода к разработке и доставке программного обеспечения, хотя они часто используются вместе. Оба подхода имеют свои цели и методы, которые могут дополнять друг друга, но фокусируются на разных аспектах разработки.
Это методология разработки программного обеспечения, которая акцентирует внимание на гибкости, скорости и итеративном подходе к разработке. Основные принципы Agile изложены в Манифесте Agile, который включает четыре ключевых ценности и двенадцать принципов.
Это культурный и методологический подход, направленный на интеграцию и сотрудничество между командами разработки (Dev) и эксплуатации (Ops) для более быстрой и надежной доставки программного обеспечения.
Agile — это методология разработки, фокусирующаяся на итеративном подходе и гибкости, а DevOps — это культурный и методологический подход, направленный на интеграцию разработки и эксплуатации для обеспечения быстрой и надежной доставки программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Anonymous Quiz
63%
Puppet
31%
Docker
4%
Nagios
2%
Grafana
Роль DevOps, SRE (Site Reliability Engineering) и IE (Infrastructure Engineering) имеет много общего, но также включает специфические задачи и фокус в каждой области. Давайте рассмотрим каждую из них:
DevOps помогает ускорить выпуск программного обеспечения, повысить его качество и снизить риски за счет автоматизации и тесной интеграции процессов разработки и операций.
Задачи и обязанности:
SRE фокусируется на обеспечении стабильной и предсказуемой работы систем, что критично для поддержания доверия пользователей и минимизации времени простоя.
IE отвечает за создание надежной и масштабируемой инфраструктуры, что является основой для работы всех приложений и сервисов компании.
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'
}
}
}
}
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
tags = {
Name = "example-instance"
}
}
Для ребенка: DevOps помогает программам быстро работать, SRE следит, чтобы они не ломались, а IE строит и поддерживает компьютеры и сети для этих программ.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
GitLab CI/CD предлагает два механизма для управления временными файлами, которые создаются и используются во время выполнения пайплайна: артефакты (artifacts) и кэш (cache). Они служат разным целям и имеют различные характеристики.
Задачи и характеристики:
artifacts
в .gitlab-ci.yml
файле.Пример конфигурации артефактов:
job1:
script:
- make build
artifacts:
paths:
- build/
expire_in: 1 week
Задачи и характеристики:
node_modules
для Node.js или vendor
для PHP), промежуточные результаты сборок.cache
в .gitlab-ci.yml
файле.Пример конфигурации кэша:
job1:
script:
- npm install
cache:
paths:
- node_modules/
job2:
script:
- npm test
cache:
paths:
- node_modules/
Для ребенка: Артефакты — это как временные коробки, которые ты передаешь друзьям, когда работаешь над проектом. Кэш — это как шкафчик, где ты хранишь вещи, чтобы они были под рукой в следующий раз, когда будешь работать над проектом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Anonymous Quiz
98%
Обеспечивает изоляцию приложений и их зависимостей
1%
Ускоряет процесс ручного тестирования
1%
Улучшает взаимодействие с пользователями
0%
Облегчает процесс написания кода
🔥3
Основное преимущество systemd по сравнению с традиционными системами инициализации, такими как SysV init и Upstart, заключается в его расширенных функциональных возможностях и улучшенной производительности. Вот несколько ключевых аспектов, которые делают systemd более предпочтительным:
Что это:
systemd позволяет запускать службы параллельно, в то время как SysV init запускает их последовательно.
Почему это важно:
Параллельный запуск значительно ускоряет время загрузки системы, что особенно важно для серверов и рабочих станций с большим количеством сервисов.
Что это:
systemd автоматически определяет и управляет зависимостями между службами, используя унифицированный формат конфигурации.
Почему это важно:
Это снижает вероятность ошибок конфигурации и облегчает управление службами, так как все зависимости четко определены и отслеживаются.
Что это:
systemd предоставляет встроенные механизмы для мониторинга состояния служб, их перезапуска при сбоях и сбора логов.
Почему это важно:
Это повышает надежность системы, так как службы автоматически перезапускаются в случае сбоев, а администратор может легко отслеживать их состояние и получать диагностическую информацию.
Что это:
systemd использует простые и читаемые файлы конфигурации в формате INI для определения служб и их параметров.
Почему это важно:
Эти файлы легко редактировать и понимать, что упрощает настройку и управление службами для администраторов.
Что это:
systemd поддерживает множество современных функций, таких как cgroups для управления ресурсами, таймеры для замены cron-джобов и сокет-активацию для запуска служб по запросу.
Почему это важно:
Эти функции позволяют более гибко и эффективно управлять ресурсами системы, автоматизировать задачи и улучшать общую производительность.
[Unit]
Description=My Example Service
After=network.target
[Service]
ExecStart=/usr/bin/myservice
Restart=always
[Install]
WantedBy=multi-user.target
Этот файл конфигурации определяет сервис, который будет запускаться после сети и автоматически перезапускаться в случае сбоя.
Для ребенка: systemd — это как умный помощник, который помогает компьютеру быстро включаться, следит за его программами и автоматически чинит их, если они сломаются.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Anonymous Quiz
6%
Развертывание всех изменений сразу
89%
Развертывание изменений на небольшой группе серверов перед полным развертыванием
3%
Тестирование кода в среде разработки
2%
Развертывание старых версий кода
Файл
/etc/fstab
(файловая таблица файловых систем) содержит информацию о файловых системах и устройствах, которые должны быть автоматически подключены (монтированы) при загрузке системы или вручную. Этот файл является важным компонентом конфигурации системы, поскольку он определяет, какие разделы и устройства будут доступны при запуске операционной системы.Каждая строка в
/etc/fstab
описывает одну файловую систему и содержит следующие поля:/dev/sda1
), UUID или метка (label) файловой системы./
, /home
, /mnt/data
).ext4
, xfs
, swap
).defaults
, ro
для только чтения, noatime
для отключения обновления времени доступа).dump
. Значение 0
означает, что резервное копирование отключено, 1
— включено.0
отключает проверку, 1
означает, что файловая система будет проверена первой (обычно корневая файловая система), 2
— проверка будет выполняться после первой.# <файл-система> <точка монтирования> <тип> <параметры> <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
- Файловая система с указанным UUID будет смонтирована в корень (
/
).- Используется файловая система
ext4
.- Параметры монтирования
defaults
.- Будет участвовать в резервном копировании (
dump = 1
).- Будет проверена первой при загрузке (
pass = 1
).- Раздел
/dev/sda1
будет смонтирован в /boot
.- Используется файловая система
ext4
.- Параметры монтирования
defaults
.- Будет участвовать в резервном копировании (
dump = 1
).- Будет проверена после корневой файловой системы (
pass = 2
).- Раздел
/dev/sda2
используется как swap (файл подкачки).- Не имеет точки монтирования.
- Параметры монтирования
sw
.- Не участвует в резервном копировании (
dump = 0
).- Не будет проверяться при загрузке (
pass = 0
).- Файловая система с указанным UUID будет смонтирована в
/home
.- Используется файловая система
ext4
.- Параметры монтирования
defaults
.- Не участвует в резервном копировании (
dump = 0
).- Будет проверена после корневой файловой системы (
pass = 2
).Файл
/etc/fstab
содержит информацию о том, какие файловые системы и устройства нужно подключать при загрузке системы и как это делать.Для ребенка: в файле
/etc/fstab
записано, какие "шкафчики" на компьютере нужно открыть при включении и куда их поставить, чтобы они были удобны для использования.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Anonymous Quiz
2%
Автоматизация развертывания
96%
Мониторинг и оповещение
2%
Управление конфигурацией
1%
Контроль версий
Зомби-процессы (zombie processes) — это процессы, которые завершили свое выполнение, но их записи в таблице процессов остаются, потому что их родительский процесс еще не вызвал системный вызов
wait()
для получения информации о завершении дочернего процесса. Зомби-процессы сами по себе не потребляют ресурсов CPU или памяти, но они занимают записи в таблице процессов, что может быть проблемой, если их накапливается слишком много.Вы можете использовать команду
ps
для обнаружения зомби-процессов. Например:ps aux | grep Z
В выводе
ps
зомби-процессы будут помечены как Z
в колонке состояния (STAT).Так как зомби-процессы уже завершены, их нельзя убить с помощью команды
kill
, как это делается с обычными процессами. Вместо этого нужно воздействовать на их родительский процесс. Вот шаги, которые можно предпринять для удаления зомби-процессов:Сначала нужно найти 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 родительского процесса.Если родительский процесс важен и его нельзя завершить, попробуйте перезапустить его. Это может быть сделано командой
kill -HUP
:sudo kill -HUP 5678
Сигнал
HUP
(hang up) обычно заставляет процесс перечитать свои конфигурационные файлы и может завершить зомби-процессы. Если это не сработает, можно попытаться перезапустить процесс вручную.Если перезапуск не помог, возможно, придется завершить родительский процесс. Сделайте это командой
kill
:sudo kill 5678
Если родительский процесс отказывается завершаться, можно использовать
kill -9
, чтобы принудительно его завершить:sudo kill -9 5678
Учтите, что завершение родительского процесса может повлиять на работу системы, если этот процесс выполняет важные функции.
В крайних случаях, если родительский процесс нельзя завершить, а зомби-процессы продолжают накапливаться, может потребоваться перезагрузка системы. Это гарантированно очистит все зомби-процессы:
sudo reboot
Зомби-процессы возникают, когда родительский процесс не получает информацию о завершении дочернего процесса. Для их удаления нужно воздействовать на родительский процесс, перезапустив его или завершив, если это необходимо.
Для ребенка: зомби-процессы — это как призраки, которые остались после завершения работы программы. Чтобы избавиться от них, нужно "разбудить" или "убрать" их главного.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3❤1
Anonymous Quiz
93%
Метод развертывания с использованием двух идентичных производственных сред
3%
Процесс создания резервных копий
2%
Автоматизация тестирования
1%
Управление конфигурацией
👍1
Сиротские процессы (orphan processes) и зомби-процессы (zombie processes) — это два разных состояния процессов в операционной системе, которые связаны с завершением или отсутствием родительских процессов. Вот основные различия между ними:
Определение:
Зомби-процесс — это процесс, который завершил свое выполнение, но его запись в таблице процессов все еще существует, потому что родительский процесс не вызвал системный вызов
wait()
для получения информации о завершении дочернего процесса.Состояние:
- Процесс завершен, но его запись в таблице процессов остается, чтобы передать статус завершения родительскому процессу.
- В таблице процессов такой процесс отмечается буквой
Z
(zombie).Влияние:
- Не использует ресурсы CPU или памяти, но занимает запись в таблице процессов.
- Может стать проблемой, если накапливается много зомби-процессов, так как количество записей в таблице процессов ограничено.
Устранение:
- Родительский процесс должен вызвать
wait()
или waitpid()
, чтобы убрать запись зомби-процесса.- Если родительский процесс не справляется с этой задачей, его можно перезапустить или завершить.
Определение:
Сиротский процесс — это процесс, у которого родительский процесс завершился до его завершения. В этом случае сиротский процесс "усыновляется" процессом
init
(обычно PID 1).Состояние:
- Процесс продолжает выполняться, но его родительский процесс завершен.
- В таблице процессов он получает нового родителя — процесс
init
.Влияние:
- Сиротские процессы продолжают выполняться и использовать ресурсы системы (CPU, память и т.д.).
- Не представляют особой проблемы для системы, так как процесс
init
корректно завершает их при их завершении.Устранение:
- Процесс продолжается до своего нормального завершения, после чего его "усыновляет" процесс
init
и корректно завершает.- Специальные меры для устранения сиротских процессов обычно не требуются.
child
завершился.parent
не вызвал wait()
.child
становится зомби и остается в таблице процессов, ожидая, пока parent
получит статус завершения.ps aux | grep Z
parent
завершился.child
продолжает выполняться.child
усыновляется процессом init
.ps -ef | grep child
wait()
.init
.Для ребенка: зомби-процесс — это как призрак программы, которая закончила работать, но еще не исчезла полностью. Сиротский процесс — это как ребенок, чьи родители ушли, и теперь за ним присматривает другой взрослый (процесс
init
).Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👾2🤯1
HTTPS (Hypertext Transfer Protocol Secure) — это расширение HTTP (Hypertext Transfer Protocol), которое добавляет уровень безопасности с использованием протоколов SSL (Secure Sockets Layer) или более современного TLS (Transport Layer Security). HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию между веб-клиентом (обычно браузером) и веб-сервером. Вот как работает HTTPS:
Когда пользователь вводит URL, начинающийся с
https://
, браузер инициирует соединение с веб-сервером через порт 443 (по умолчанию для HTTPS).Рукопожатие 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)
Обе стороны отправляют друг другу сообщение о завершении рукопожатия, зашифрованное с использованием симметричного ключа, чтобы удостовериться, что обе стороны правильно установили защищенное соединение.
После успешного завершения рукопожатия создается защищенное соединение, используя симметричный ключ, который обеспечивает шифрование и дешифрование данных.
Теперь все данные, передаваемые между браузером и сервером, шифруются с использованием симметричного ключа. Это обеспечивает:
- Конфиденциальность: Данные зашифрованы, что предотвращает их чтение третьими лицами.
- Целостность данных: Любые изменения данных в процессе передачи будут обнаружены.
- Аутентификация: Удостоверяет, что данные передаются между подлинным клиентом и сервером.
Для ребенка: HTTPS — это как секретный код, который ты и твой друг используете для обмена сообщениями, чтобы никто другой не мог их прочитать или изменить.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Anonymous Quiz
83%
Инфраструктура, которая никогда не изменяется после развертывания
9%
Инфраструктура, которая автоматически обновляется
6%
Инфраструктура, которая всегда тестируется перед развертыванием
2%
Инфраструктура, которая развертывается только вручную
🔥1