🔄 Идемпотентность: Главное слово в словаре архитектора
Если вы пишете скрипты или Ansible-плейбуки, вы обязаны понимать концепцию Идемпотентности. Без этого автоматизация превращается в хаос.
Определение: Операция считается идемпотентной, если её многократное повторение приводит к тому же результату, что и однократное выполнение, не вызывая ошибок и дублирования данных.
Пример на Bash:
❌ Не идемпотентно:
✅ Идемпотентно:
Почему это важно: В современном мире (Ansible, Terraform, Kubernetes) агент запускается каждые 15-30 минут. Если ваш скрипт не идемпотентен, он каждый раз будет ломать конфиги, дублировать строки или перезапускать сервисы без причины.
Правило: Пишите любой скрипт так, будто он будет запускаться каждую минуту.
#devops #architecture #coding #bestpractice #theory #automation
Если вы пишете скрипты или Ansible-плейбуки, вы обязаны понимать концепцию Идемпотентности. Без этого автоматизация превращается в хаос.
Определение: Операция считается идемпотентной, если её многократное повторение приводит к тому же результату, что и однократное выполнение, не вызывая ошибок и дублирования данных.
Пример на Bash:
❌ Не идемпотентно:
# Если запустить 2 раза, в файле будет две записи
echo "127.0.0.1 myapp.local" >> /etc/hosts
✅ Идемпотентно:
# Проверяем, есть ли запись, и добавляем только если нет
grep -q "myapp.local" /etc/hosts || echo "127.0.0.1 myapp.local" >> /etc/hosts
Почему это важно: В современном мире (Ansible, Terraform, Kubernetes) агент запускается каждые 15-30 минут. Если ваш скрипт не идемпотентен, он каждый раз будет ломать конфиги, дублировать строки или перезапускать сервисы без причины.
Правило: Пишите любой скрипт так, будто он будет запускаться каждую минуту.
#devops #architecture #coding #bestpractice #theory #automation
🤔 Network: В чем разница между 127.0.0.1 и 0.0.0.0?
Классический вопрос на собеседовании и частая ошибка в конфигах Nginx/Docker. Оба адреса относятся к "этому компьютеру", но работают они принципиально по-разному.
1. 127.0.0.1 (Localhost)
Суть: Loopback-интерфейс.
Как работает: Трафик никогда не покидает хост. Он даже не доходит до сетевой карты.
Кейс: Вы запускаете базу данных и хотите, чтобы к ней мог подключиться только ваш локальный бэкенд.
Конфиг: bind-address = 127.0.0.1
2. 0.0.0.0 (Wildcard)
Суть: "Все доступные интерфейсы".
Как работает: Сервис начинает слушать на всех IP-адресах, которые есть у сервера (и на локальном 127.0.0.1, и на внешнем Ethernet/Wi-Fi).
Кейс: Вы запускаете веб-сервер, который должен быть доступен из интернета.
Конфиг: listen 0.0.0.0:80
☠️ Где ошибаются: Если вы в Docker или базе данных напишете 0.0.0.0 вместо 127.0.0.1, вы можете случайно открыть порт для всего интернета (если фаервол не настроен). Правило архитектора: Всегда биндите сервисы на 127.0.0.1, если нет явной причины пускать мир внутрь.
#network #security #theory #bestpractice #interview
Классический вопрос на собеседовании и частая ошибка в конфигах Nginx/Docker. Оба адреса относятся к "этому компьютеру", но работают они принципиально по-разному.
1. 127.0.0.1 (Localhost)
Суть: Loopback-интерфейс.
Как работает: Трафик никогда не покидает хост. Он даже не доходит до сетевой карты.
Кейс: Вы запускаете базу данных и хотите, чтобы к ней мог подключиться только ваш локальный бэкенд.
Конфиг: bind-address = 127.0.0.1
2. 0.0.0.0 (Wildcard)
Суть: "Все доступные интерфейсы".
Как работает: Сервис начинает слушать на всех IP-адресах, которые есть у сервера (и на локальном 127.0.0.1, и на внешнем Ethernet/Wi-Fi).
Кейс: Вы запускаете веб-сервер, который должен быть доступен из интернета.
Конфиг: listen 0.0.0.0:80
☠️ Где ошибаются: Если вы в Docker или базе данных напишете 0.0.0.0 вместо 127.0.0.1, вы можете случайно открыть порт для всего интернета (если фаервол не настроен). Правило архитектора: Всегда биндите сервисы на 127.0.0.1, если нет явной причины пускать мир внутрь.
#network #security #theory #bestpractice #interview
🤯 Load Average: Почему 1.0 — это не всегда 100% CPU?
Мы видим в htop параметр Load Average: 4.0 (на 4 ядрах). Новички думают: "Ага, процессор загружен на 100%!". Сеньоры знают: "Не факт. Возможно, это диск умирает".
В чем подвох: В Linux в расчет Load Average (LA) попадают процессы в двух состояниях:
R (Running/Runnable): Реально считают на CPU или стоят в очереди к нему.
D (Uninterruptible Sleep): Ждут ввода-вывода (Disk I/O, Network NFS).
Аналогия с кассой:
Состояние R: Очередь людей к кассе. Кассир (CPU) работает на износ.
Состояние 😧 Кассир свободен, но покупатель ушел взвешивать бананы и не возвращается. Очередь стоит и ждет его. CPU простаивает (iowait), но LA растет!
Как отличить? Смотрите в vmstat 1.
Колонка r (run): Высокая? Проблема в CPU (код).
Колонка b (blocked): Высокая? Проблема в Диске/IO.
Не меняйте процессор, если у вас тормозит жесткий диск.
#linux #kernel #loadaverage #performance #theory #interview
Мы видим в htop параметр Load Average: 4.0 (на 4 ядрах). Новички думают: "Ага, процессор загружен на 100%!". Сеньоры знают: "Не факт. Возможно, это диск умирает".
В чем подвох: В Linux в расчет Load Average (LA) попадают процессы в двух состояниях:
R (Running/Runnable): Реально считают на CPU или стоят в очереди к нему.
D (Uninterruptible Sleep): Ждут ввода-вывода (Disk I/O, Network NFS).
Аналогия с кассой:
Состояние R: Очередь людей к кассе. Кассир (CPU) работает на износ.
Состояние 😧 Кассир свободен, но покупатель ушел взвешивать бананы и не возвращается. Очередь стоит и ждет его. CPU простаивает (iowait), но LA растет!
Как отличить? Смотрите в vmstat 1.
Колонка r (run): Высокая? Проблема в CPU (код).
Колонка b (blocked): Высокая? Проблема в Диске/IO.
Не меняйте процессор, если у вас тормозит жесткий диск.
#linux #kernel #loadaverage #performance #theory #interview
📍 DNS: Зачем нужна точка в конце (google.com.)?
Вы наверняка видели в конфигах BIND или в старых учебниках домены с точкой на конце: example.com. Зачем она?
Это FQDN (Fully Qualified Domain Name) — полностью определенное имя домена.
Как это работает: Когда вы пишете в браузере google.com (без точки), ваш компьютер на самом деле пытается быть умным. Если вы находитесь в корпоративной сети corp.local, резолвер может сначала попробовать найти:
google.com.corp.local (А вдруг это внутренний сервер?)
И только потом google.com. (Корень интернета).
Точка в конце говорит системе жестко:
"Не пытайся подставить локальные суффиксы. Иди сразу в корневой DNS (Root Zone)."
Практика: В критических скриптах и конфигах серверов (особенно Nginx/Postfix) использование точки в конце (proxy_pass http://backend.local.;) ускоряет резолвинг и защищает от атак с подменой локальных доменов.
#network #dns #theory #fqdn #internet #basics
Вы наверняка видели в конфигах BIND или в старых учебниках домены с точкой на конце: example.com. Зачем она?
Это FQDN (Fully Qualified Domain Name) — полностью определенное имя домена.
Как это работает: Когда вы пишете в браузере google.com (без точки), ваш компьютер на самом деле пытается быть умным. Если вы находитесь в корпоративной сети corp.local, резолвер может сначала попробовать найти:
google.com.corp.local (А вдруг это внутренний сервер?)
И только потом google.com. (Корень интернета).
Точка в конце говорит системе жестко:
"Не пытайся подставить локальные суффиксы. Иди сразу в корневой DNS (Root Zone)."
Практика: В критических скриптах и конфигах серверов (особенно Nginx/Postfix) использование точки в конце (proxy_pass http://backend.local.;) ускоряет резолвинг и защищает от атак с подменой локальных доменов.
#network #dns #theory #fqdn #internet #basics
👍2
⏳ Network: Когда обновится этот чертов домен? (TTL)
Вы сменили IP-адрес сервера в DNS. Клиенты жалуются, что видят старый сайт. Вы говорите: "Ждите обновления кэша". Но сколько ждать? Час? Сутки?
Смотрите на TTL (Time To Live). Это число, которое показывает, сколько секунд запись будет жить в кэше резолвера.
Команда:
Смотрим в ответ (ANSWER SECTION):
Вот это число 185 — это секунды. Запустите команду еще раз через 10 секунд — число станет 175. Как только оно дойдет до 0, резолвер пойдет спрашивать авторитетный DNS-сервер и получит ваш новый IP.
Вывод: Перед переездом всегда заранее снижайте TTL до 60 секунд (за сутки до работ), чтобы переключение прошло мгновенно.
#network #dns #ttl #dig #migration #theory #troubleshooting
Вы сменили IP-адрес сервера в DNS. Клиенты жалуются, что видят старый сайт. Вы говорите: "Ждите обновления кэша". Но сколько ждать? Час? Сутки?
Смотрите на TTL (Time To Live). Это число, которое показывает, сколько секунд запись будет жить в кэше резолвера.
Команда:
dig google.com
Смотрим в ответ (ANSWER SECTION):
google.com. 185 IN A 142.250.185.78
Вот это число 185 — это секунды. Запустите команду еще раз через 10 секунд — число станет 175. Как только оно дойдет до 0, резолвер пойдет спрашивать авторитетный DNS-сервер и получит ваш новый IP.
Вывод: Перед переездом всегда заранее снижайте TTL до 60 секунд (за сутки до работ), чтобы переключение прошло мгновенно.
#network #dns #ttl #dig #migration #theory #troubleshooting
🤝 Network: TCP 3-Way Handshake (База)
Мы говорим "установил соединение". А что происходит под капотом? Любое TCP-соединение (SSH, HTTP, RDP) начинается с Тройного рукопожатия. Если вы не понимаете этот процесс, вы не сможете траблшутить фаерволы.
Три шага:
1. SYN (Synchronize): Клиент шлет пакет серверу. "Привет, хочу поговорить. Мой номер очереди 100."
* Если здесь потеря — сервер недоступен или порт закрыт.
2. SYN-ACK (Synchronize-Acknowledge): Сервер отвечает. "Привет, слышу тебя (ACK 101). Давай говорить, мой номер 500 (SYN)."
* Если здесь потеря — сервер перегружен или блокирует обратный трафик.
3. ACK (Acknowledge): Клиент подтверждает. "Ок, твой номер 500 принял (ACK 501). Погнали передавать данные!"
Почему это важно: DDoS атака SYN Flood работает именно здесь: атакующий шлет миллионы
#network #tcp #theory #handshake #security #interview #basics
Мы говорим "установил соединение". А что происходит под капотом? Любое TCP-соединение (SSH, HTTP, RDP) начинается с Тройного рукопожатия. Если вы не понимаете этот процесс, вы не сможете траблшутить фаерволы.
Три шага:
1. SYN (Synchronize): Клиент шлет пакет серверу. "Привет, хочу поговорить. Мой номер очереди 100."
* Если здесь потеря — сервер недоступен или порт закрыт.
2. SYN-ACK (Synchronize-Acknowledge): Сервер отвечает. "Привет, слышу тебя (ACK 101). Давай говорить, мой номер 500 (SYN)."
* Если здесь потеря — сервер перегружен или блокирует обратный трафик.
3. ACK (Acknowledge): Клиент подтверждает. "Ок, твой номер 500 принял (ACK 501). Погнали передавать данные!"
Почему это важно: DDoS атака SYN Flood работает именно здесь: атакующий шлет миллионы
SYN , сервер ждет, отвечает SYN-ACK , но ACK в ответ не получает. Память сервера забивается "полуоткрытыми" соединениями, и он умирает.#network #tcp #theory #handshake #security #interview #basics
❤1
💾 RAID: Геометрия надежности
Мы говорим: "Поставь в RAID 10". А вы помните физику процесса? Визуальное понимание того, как лежат блоки, спасает при восстановлении массива.
Быстрый рекап по картинке:
1. RAID 0 (Stripe): Данные "размазаны" по дискам (A1, A2).
🚀 Скорость: Максимальная (xN).
💀 Надежность: Ноль. Сдох один диск — потеряли всё.
2. RAID 1 (Mirror): Данные дублируются (A1 = A1).
🛡️ Надежность: Высокая.
📉 Цена: Платим за 2 диска, получаем место как за 1.
3. RAID 5 (Parity): Данные + Контрольная сумма (Parity) размазаны по всем дискам.
⚖️ Баланс: Если один диск умер, данные вычисляются по формуле из остальных.
🐢 Минус: Медленная запись (надо считать контрольную сумму).
4. RAID 10: Зеркало (1) внутри Страйпа (0). Лучшее из двух миров, но дорого.
Сохраните схему. Когда джун спросит, почему RAID 5 тормозит на запись, просто покажите блок Parity.
#storage #raid #theory #hardware #architecture #infographics #basics
Мы говорим: "Поставь в RAID 10". А вы помните физику процесса? Визуальное понимание того, как лежат блоки, спасает при восстановлении массива.
Быстрый рекап по картинке:
1. RAID 0 (Stripe): Данные "размазаны" по дискам (A1, A2).
🚀 Скорость: Максимальная (xN).
💀 Надежность: Ноль. Сдох один диск — потеряли всё.
2. RAID 1 (Mirror): Данные дублируются (A1 = A1).
🛡️ Надежность: Высокая.
📉 Цена: Платим за 2 диска, получаем место как за 1.
3. RAID 5 (Parity): Данные + Контрольная сумма (Parity) размазаны по всем дискам.
⚖️ Баланс: Если один диск умер, данные вычисляются по формуле из остальных.
🐢 Минус: Медленная запись (надо считать контрольную сумму).
4. RAID 10: Зеркало (1) внутри Страйпа (0). Лучшее из двух миров, но дорого.
Сохраните схему. Когда джун спросит, почему RAID 5 тормозит на запись, просто покажите блок Parity.
#storage #raid #theory #hardware #architecture #infographics #basics
❤3
🧟♂️ Linux: Атака зомби. Как убить то, что уже мертво?
Вы смотрите в
Спойлер: Это бесполезно. Зомби нельзя убить, потому что он уже мертв.
Что такое Zombie Process: Это процесс, который завершил выполнение, освободил память, но его запись осталась в таблице процессов, потому что "Родитель" (Parent Process) не прочитал его код завершения (exit code).
Как починить правильно: Нужно найти родителя и "пнуть" его (или убить).
1. Ищем зомби и их родителей:
Вывод:
2. Решение: Отправьте сигнал родителю, чтобы он "прибрался за детьми":
Если не помогло — убивайте родителя:
#linux #processes #zombie #troubleshooting #kernel #theory
Вы смотрите в
top и видите: zombie: 5 . Новички пытаются сделать kill -9 <PID_ZOMBIE> .Спойлер: Это бесполезно. Зомби нельзя убить, потому что он уже мертв.
Что такое Zombie Process: Это процесс, который завершил выполнение, освободил память, но его запись осталась в таблице процессов, потому что "Родитель" (Parent Process) не прочитал его код завершения (exit code).
Как починить правильно: Нужно найти родителя и "пнуть" его (или убить).
1. Ищем зомби и их родителей:
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
Вывод:
Z 1050 1051 [php-fpm] <defunct> (Где 1050 — PPID родителя, 1051 — PID зомби).2. Решение: Отправьте сигнал родителю, чтобы он "прибрался за детьми":
kill -SIGCHLD 1050
Если не помогло — убивайте родителя:
kill -9 1050 . Зомби исчезнет вместе с ним (или его подберет процесс init ).#linux #processes #zombie #troubleshooting #kernel #theory
📶 Модель OSI: "Please Do Not Throw Sausage Pizza Away"
Когда сеть не работает, Джун говорит: "Интернет сломался". Сеньор говорит: "Проблема на L1 (физика) или L3 (маршрутизация)?".
Чтобы траблшутить как Бог, нужно думать слоями модели OSI.
Шпаргалка траблшутинга:
1. L1 Physical (Физический): Кабель включен? Линк горит? SFP-модуль сдох?
2. L2 Data Link (Канальный): MAC-адреса видны? VLAN настроен верно? STP не заблокировал порт?
3. L3 Network (Сети): IP-адрес есть? Пинг идет? Шлюз доступен? Маршруты прописаны?
4. L4 Transport (Транспортный): Порт открыт? Файрвол блокирует TCP/UDP?
5. L7 Application (Приложение): Nginx отдает 502? Сертификат протух?
Запомните: Всегда начинайте диагностику снизу вверх (от кабеля к софту). 90% проблем — это L1 (отошел патч-корд) или L3 (кривой IP).
#network #osi #theory #troubleshooting #basics #education #cisco
Когда сеть не работает, Джун говорит: "Интернет сломался". Сеньор говорит: "Проблема на L1 (физика) или L3 (маршрутизация)?".
Чтобы траблшутить как Бог, нужно думать слоями модели OSI.
Шпаргалка траблшутинга:
1. L1 Physical (Физический): Кабель включен? Линк горит? SFP-модуль сдох?
2. L2 Data Link (Канальный): MAC-адреса видны? VLAN настроен верно? STP не заблокировал порт?
3. L3 Network (Сети): IP-адрес есть? Пинг идет? Шлюз доступен? Маршруты прописаны?
4. L4 Transport (Транспортный): Порт открыт? Файрвол блокирует TCP/UDP?
5. L7 Application (Приложение): Nginx отдает 502? Сертификат протух?
Запомните: Всегда начинайте диагностику снизу вверх (от кабеля к софту). 90% проблем — это L1 (отошел патч-корд) или L3 (кривой IP).
#network #osi #theory #troubleshooting #basics #education #cisco
🔥3
🚚 MTU: Почему "большие" пакеты застревают?
Вы настроили VPN (WireGuard/OpenVPN), пинг идет, а сайты не открываются или RDP зависает. В 90% случаев виноват MTU (Maximum Transmission Unit).
Представьте, что сеть — это труба диаметром 1500 мм (байт). Это стандарт Ethernet. VPN добавляет свои заголовки, и полезная нагрузка становится 1420 байт. Если сервер пытается пропихнуть вам пакет размером 1500 байт через эту VPN-трубу, происходит одно из двух:
1. Фрагментация: Роутер рубит пакет на два куска (нагрузка на CPU, тормоза).
2. Drop: Если на пакете стоит флаг DF (Don't Fragment), роутер просто уничтожает его. Связь рвется.
Как найти идеальный размер (Ping Test): В Windows используем флаг -f (не фрагментировать) и -l (размер):
(1472 + 28 байт заголовков = 1500. Если проходит — ок. Если "Packet needs to be fragmented" — уменьшайте число, пока не пройдет).
#network #mtu #vpn #troubleshooting #theory #fragmentation #ping
Вы настроили VPN (WireGuard/OpenVPN), пинг идет, а сайты не открываются или RDP зависает. В 90% случаев виноват MTU (Maximum Transmission Unit).
Представьте, что сеть — это труба диаметром 1500 мм (байт). Это стандарт Ethernet. VPN добавляет свои заголовки, и полезная нагрузка становится 1420 байт. Если сервер пытается пропихнуть вам пакет размером 1500 байт через эту VPN-трубу, происходит одно из двух:
1. Фрагментация: Роутер рубит пакет на два куска (нагрузка на CPU, тормоза).
2. Drop: Если на пакете стоит флаг DF (Don't Fragment), роутер просто уничтожает его. Связь рвется.
Как найти идеальный размер (Ping Test): В Windows используем флаг -f (не фрагментировать) и -l (размер):
ping google.com -f -l 1472
(1472 + 28 байт заголовков = 1500. Если проходит — ок. Если "Packet needs to be fragmented" — уменьшайте число, пока не пройдет).
#network #mtu #vpn #troubleshooting #theory #fragmentation #ping
🧟♂️ Linux: Атака зомби. Как убить то, что уже мертво?
Вы смотрите в
Что такое Zombie Process: Это процесс, который завершил выполнение, освободил память, но его запись осталась в таблице процессов, потому что "Родитель" (Parent Process) не прочитал его код завершения (exit code).
Как починить правильно: Нужно найти родителя и "пнуть" его (или убить).
1. Ищем зомби и их родителей:
Вывод: Z 1050 1051 [php-fpm] <defunct> (Где 1050 — PPID родителя, 1051 — PID зомби).
2. Решение: Отправьте сигнал родителю, чтобы он "прибрался за детьми":
Если не помогло — убивайте родителя:
#linux #processes #zombie #troubleshooting #kernel #theory
Вы смотрите в
top и видите: zombie: 5. Новички пытаются сделать kill -9 <PID_ZOMBIE> . Спойлер: Это бесполезно. Зомби нельзя убить, потому что он уже мертв.Что такое Zombie Process: Это процесс, который завершил выполнение, освободил память, но его запись осталась в таблице процессов, потому что "Родитель" (Parent Process) не прочитал его код завершения (exit code).
Как починить правильно: Нужно найти родителя и "пнуть" его (или убить).
1. Ищем зомби и их родителей:
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
Вывод: Z 1050 1051 [php-fpm] <defunct> (Где 1050 — PPID родителя, 1051 — PID зомби).
2. Решение: Отправьте сигнал родителю, чтобы он "прибрался за детьми":
kill -SIGCHLD 1050
Если не помогло — убивайте родителя:
kill -9 1050. Зомби исчезнет вместе с ним (или его подберет процесс init).#linux #processes #zombie #troubleshooting #kernel #theory
📡 DHCP: Принцип DORA. Почему нет интернета?
Когда пользователь подключает кабель, происходит магия получения IP-адреса. Если магия не сработала, Windows пишет "Unidentified Network" (APIPA 169.254.x.x).
Чтобы чинить, нужно знать 4 шага процесса DORA:
D — Discover (Поиск): Клиент кричит на всю сеть (Broadcast): "Есть тут кто живой? Дайте IP!".
Ошибка здесь: Если VLAN настроен криво или нет DHCP Relay, крик никто не услышит.
O — Offer (Предложение): Сервер слышит и отвечает: "Я тут (10.0.0.1)! Могу дать тебе 10.0.0.50".
R — Request (Запрос): Клиент соглашается: "Ок, беру 10.0.0.50, подтверди!".
A — Acknowledge (Подтверждение): Сервер записывает клиента в базу и дает добро: "Забирай. Вот тебе еще шлюз и DNS".
Траблшутинг: Включите Wireshark и фильтр bootp.
Видите только Discover? 👉 Проблема с сетью (DHCP Relay / VLAN) или сервер лежит.
Видите Offer, но нет Request? 👉 Клиенту не нравится предложение (возможно, конфликт IP).
#network #dhcp #dora #theory #troubleshooting #basics #wireshark
Когда пользователь подключает кабель, происходит магия получения IP-адреса. Если магия не сработала, Windows пишет "Unidentified Network" (APIPA 169.254.x.x).
Чтобы чинить, нужно знать 4 шага процесса DORA:
D — Discover (Поиск): Клиент кричит на всю сеть (Broadcast): "Есть тут кто живой? Дайте IP!".
Ошибка здесь: Если VLAN настроен криво или нет DHCP Relay, крик никто не услышит.
O — Offer (Предложение): Сервер слышит и отвечает: "Я тут (10.0.0.1)! Могу дать тебе 10.0.0.50".
R — Request (Запрос): Клиент соглашается: "Ок, беру 10.0.0.50, подтверди!".
A — Acknowledge (Подтверждение): Сервер записывает клиента в базу и дает добро: "Забирай. Вот тебе еще шлюз и DNS".
Траблшутинг: Включите Wireshark и фильтр bootp.
Видите только Discover? 👉 Проблема с сетью (DHCP Relay / VLAN) или сервер лежит.
Видите Offer, но нет Request? 👉 Клиенту не нравится предложение (возможно, конфликт IP).
#network #dhcp #dora #theory #troubleshooting #basics #wireshark
🔗 Symlink vs Hard Link: В чем реальная разница?
Мы все постоянно пишем
В Linux файл — это не имя. Файл — это набор данных на диске, у которого есть номер (Inode). А "Имя файла" — это просто указатель на этот номер.
Разница на пальцах:
1. Hard Link (ln file link): Это второе имя для того же самого Inode.
* Если удалить оригинальный файл — ссылка продолжит работать (данные не удалятся, пока на них указывает хоть одно имя).
* Ограничение: Нельзя делать на папки и между разными дисками.
2. Soft (Symbolic) Link (ln -s file link): Это новый файл, внутри которого написан путь к оригиналу.
* Если удалить оригинал — ссылка станет "битой" (указывает в пустоту).
* Плюс: Работает везде, даже между разными файловыми системами.
Как проверить: Команда
#linux #inodes #filesystem #theory #basics #interview
Мы все постоянно пишем
ln -s , создавая символические ссылки (Symlink). Но есть еще "Жесткие ссылки" (Hard Links). В чем соль? В Inode.В Linux файл — это не имя. Файл — это набор данных на диске, у которого есть номер (Inode). А "Имя файла" — это просто указатель на этот номер.
Разница на пальцах:
1. Hard Link (ln file link): Это второе имя для того же самого Inode.
* Если удалить оригинальный файл — ссылка продолжит работать (данные не удалятся, пока на них указывает хоть одно имя).
* Ограничение: Нельзя делать на папки и между разными дисками.
2. Soft (Symbolic) Link (ln -s file link): Это новый файл, внутри которого написан путь к оригиналу.
* Если удалить оригинал — ссылка станет "битой" (указывает в пустоту).
* Плюс: Работает везде, даже между разными файловыми системами.
Как проверить: Команда
ls -li покажет номер Inode в первом столбце. У хард-линков он одинаковый.#linux #inodes #filesystem #theory #basics #interview
🕸️ CIDR: Магия слеша (/24, /32)
В конфигах сети мы пишем
Главное правило: Чем больше цифра после слеша, тем меньше сеть. Представьте пирог. Слэш — это на сколько кусков мы его режем.
Шпаргалка для Админа:
* /32 = 1 IP (Только сам хост). Используется для жесткой привязки в фаерволах.
* /30 = 2 IP (Всего 4, но 2 служебных). Идеально для линка "точка-точка" между роутерами.
* /29 = 6 IP. Обычно столько выдает провайдер на офис.
* /24 = 254 IP. Стандартная локалка (маска 255.255.255.0).
* /16 = 65 534 IP. Огромная сеть (маска 255.255.0.0).
Сохраните. Когда нужно будет нарезать VLAN-ы, спасет от перекрытия адресов.
#network #cidr #subnetting #ip #theory #basics #cheatsheet
В конфигах сети мы пишем
192.168.1.0/24 . Но новички часто путаются: "А /30 — это больше адресов или меньше?".Главное правило: Чем больше цифра после слеша, тем меньше сеть. Представьте пирог. Слэш — это на сколько кусков мы его режем.
Шпаргалка для Админа:
* /32 = 1 IP (Только сам хост). Используется для жесткой привязки в фаерволах.
* /30 = 2 IP (Всего 4, но 2 служебных). Идеально для линка "точка-точка" между роутерами.
* /29 = 6 IP. Обычно столько выдает провайдер на офис.
* /24 = 254 IP. Стандартная локалка (маска 255.255.255.0).
* /16 = 65 534 IP. Огромная сеть (маска 255.255.0.0).
Сохраните. Когда нужно будет нарезать VLAN-ы, спасет от перекрытия адресов.
#network #cidr #subnetting #ip #theory #basics #cheatsheet
👍2
📦 TCP vs UDP: Почему VoIP и игры выбирают ненадежность?
Джуниор спрашивает: "TCP гарантирует доставку, а UDP теряет пакеты. Почему мы вообще используем UDP для звонков и YouTube?"
Ответ в Заголовках (Overhead).
1. TCP (Тяжеловес):
* Заголовок 20-60 байт.
* Рукопожатие, подтверждение каждого пакета (ACK), контроль порядка, повторная отправка.
* Результат: Если пакет потерялся, видео "замрет" и будет ждать его. Вы увидите лаг.
2. UDP (Спринтер):
* Заголовок всего 8 байт.
* Отправил и забыл. Никаких проверок.
* Результат: Если пакет с куском голоса потерялся — вы услышите микро-щелчок, но разговор продолжится в реальном времени.
Суть: В разговоре лучше пропустить букву, чем замолчать на 2 секунды, вспоминая её. Поэтому SIP, RTP и стриминг — это всегда UDP. Не блокируйте его на фаерволах!
#network #tcp #udp #protocols #theory #voip #streaming #basics
Джуниор спрашивает: "TCP гарантирует доставку, а UDP теряет пакеты. Почему мы вообще используем UDP для звонков и YouTube?"
Ответ в Заголовках (Overhead).
1. TCP (Тяжеловес):
* Заголовок 20-60 байт.
* Рукопожатие, подтверждение каждого пакета (ACK), контроль порядка, повторная отправка.
* Результат: Если пакет потерялся, видео "замрет" и будет ждать его. Вы увидите лаг.
2. UDP (Спринтер):
* Заголовок всего 8 байт.
* Отправил и забыл. Никаких проверок.
* Результат: Если пакет с куском голоса потерялся — вы услышите микро-щелчок, но разговор продолжится в реальном времени.
Суть: В разговоре лучше пропустить букву, чем замолчать на 2 секунды, вспоминая её. Поэтому SIP, RTP и стриминг — это всегда UDP. Не блокируйте его на фаерволах!
#network #tcp #udp #protocols #theory #voip #streaming #basics
💾 Правило 3-2-1
В пятницу вечером самое время спросить себя: "Если завтра сгорит серверная, а облако заблокируют — я восстановлю данные?".
Существует только один стандарт надежности бэкапов. Правило 3-2-1.
Разбор:
1. 3 копии данных: Одна боевая (оригинал) + Две резервных.
* Почему: Вероятность смерти одного диска — 1/100. Трех сразу — 1/1 000 000.
2. 2 разных носителя: Не храните все копии на одном RAID-массиве или одном типе дисков.
* Пример: HDD сервера + Ленточная библиотека (или NAS другого бренда).
3. 1 копия оффсайт: Одна копия должна лежать физически в другом здании (или облаке).
* Почему: Пожар, потоп или кража в офисе уничтожат и сервер, и локальный бэкап.
Если у вас нет пункта №3 — считайте, у вас нет бэкапов.
#backup #security #theory #321rule #bestpractice #disasterrecovery #adminlife
В пятницу вечером самое время спросить себя: "Если завтра сгорит серверная, а облако заблокируют — я восстановлю данные?".
Существует только один стандарт надежности бэкапов. Правило 3-2-1.
Разбор:
1. 3 копии данных: Одна боевая (оригинал) + Две резервных.
* Почему: Вероятность смерти одного диска — 1/100. Трех сразу — 1/1 000 000.
2. 2 разных носителя: Не храните все копии на одном RAID-массиве или одном типе дисков.
* Пример: HDD сервера + Ленточная библиотека (или NAS другого бренда).
3. 1 копия оффсайт: Одна копия должна лежать физически в другом здании (или облаке).
* Почему: Пожар, потоп или кража в офисе уничтожат и сервер, и локальный бэкап.
Если у вас нет пункта №3 — считайте, у вас нет бэкапов.
#backup #security #theory #321rule #bestpractice #disasterrecovery #adminlife