Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Классическая игра в аркадном стиле для любителей ретро-игр. Защитите космический корабль с Печенькой (и не только) на борту, проходя уровни.

Космический арканоид

Арканоид, Аркады, Веселая

Играть

Топ прошлой недели

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
90
raidshadowlegend
raidshadowlegend
Лига Сисадминов

Как ядро Linux управляет памятью приложений⁠⁠

24 дня назад

Linux использует подсистему виртуальной памяти как логический слой между запросами приложений на память и физической памятью (RAM). Такая абстракция позволяет скрыть от приложения всю возню с тем, как именно устроена физическая память на конкретной платформе.

Когда приложение лезет по виртуальному адресу, который ему «выставила» подсистема виртуальной памяти Linux, аппаратный MMU поднимает событие — мол, тут попытались обратиться к области, за которой сейчас не закреплена никакая физическая память. Это приводит к исключению, которое называется «ошибка страницы» (Page Fault). Ядро Linux обрабатывает её, сопоставляя нужный виртуальный адрес с физической страницей памяти.

Виртуальные адреса незаметно для приложения сопоставляются с физической памятью за счёт совместной работы железа (MMU, Memory Management Unit) и софта (таблицы страниц, Page Tables). Информация об этих сопоставлениях ещё и кэшируется в самом железе — в TLB (Translation Lookaside Buffer), чтобы дальше быстро находить нужные физические адреса.

Страница — это просто группа подряд идущих линейных адресов в физической памяти. На x86 размер страницы — 4 КБ.

Абстракция виртуальной памяти даёт несколько плюсов:

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

  • Процесс всегда видит линейный непрерывный диапазон байт в своём адресном пространстве — даже если физическая память под ним фрагментирована.

Например: когда приложение просит 10 МБ памяти, ядро Linux просто резервирует 10 МБ непрерывного виртуального адресного диапазона. А вот физические страницы, куда этот диапазон будет отображён, могут лежать где угодно. Единственное, что гарантированно идёт подряд в физической памяти — это размер одной страницы (4 КБ).

  • Быстрый старт из-за частичной загрузки. Demand paging подгружает инструкции только в момент, когда они реально понадобились.

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

Команда pmap -X <pid> помогает посмотреть, какие области памяти процесса общие с другими, а какие — приватные.

  • Несколько программ, потребляющих в сумме больше физической памяти, могут спокойно работать одновременно. Ядро втихаря выталкивает давно неиспользуемые страницы на диск (swap).

  • Каждый процесс живёт в своём отдельном виртуальном адресном пространстве и не может вмешиваться в память других процессов.

Два процесса могут использовать одинаковые виртуальные адреса, но эти адреса будут отображены в разные места физической памяти. А вот процессы, которые подключаются к одному сегменту общей памяти (SHM), получат виртуальные адреса, указывающие на одни и те же физические страницы.

Виртуальное адресное пространство процесса состоит из сегментов разных типов: Text, Data, Heap, Stack, сегменты общей памяти (SHM) и области, созданные через mmap. Адресное пространство процесса — это диапазон виртуальных адресов, который ядро «выдаёт» процессу как его среду исполнения.

Каждый сегмент — это линейный диапазон виртуальных адресов с началом и концом, за которым стоит какой-то источник данных (backing store): файловая система или swap.

Ошибка страницы обрабатывается так: ядро поднимает физическую страницу, заполняя её данными из backing store. Когда памяти начинает не хватать, данные из физических страниц, используемых как кеш, сбрасываются обратно в свой backing store. Сегмент Text у процесса опирается на исполняемый файл в файловой системе. А вот стек, куча, страницы COW (Copy-on-Write) и shared memory — это анонимные (Anon) страницы, их хранилище — swap (дисковый раздел или файл).

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

Когда процесс вызывает malloc() или sbrk(), ядро создаёт новый сегмент кучи в адресном пространстве процесса и резервирует диапазон виртуальных адресов, по которому он теперь может легально ходить. Любое обращение к адресу за пределами этих границ приведёт к segmentation fault — и процесс отправится в небытие. Выделение физической памяти при этом отложено: она будет выделена только когда процесс реально обратится к этим виртуальным адресам.

Пример: приложение сделает malloc() на 50 ГБ, но реально коснётся (то есть вызовет page fault) только 10 МБ. Тогда физической памяти уйдёт всего 10 МБ.

Посмотреть виртуальное/физическое потребление памяти можно через “ps”, “pidstat” или “top”. Столбец SIZE показывает размер виртуального сегмента, а RSS — объём выделенной физической памяти.

Физические страницы, которые используются для сегмента Text или для файлового кеша (page cache), можно освобождать быстро — данные всегда можно снова получить из backing store (файловой системы). А вот для освобождения анонимных страниц сначала нужно записать их содержимое в swap, и только потом страница может быть освобождена.

Политика выделения памяти в Linux

Выделение памяти процессам регулируется политикой распределения памяти в Linux. В системе есть три режима, и выбираются они с помощью настройки vm.overcommit_memory.

1.Эвристический overcommit (vm.overcommit_memory=0)

Это режим по умолчанию. Ядро позволяет процессам «переборщить» с запросами памяти в разумных пределах — как решат внутренние эвристики. Они учитывают свободную память, свободный swap, а также память, которую можно быстро освободить, ужав файловый кеш или slab-кеши ядра.

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

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

(знаю, что нынче сравнения в формате плюсы/минусы в статье приравниваются к генерации нейросети, но пока это всё еще лучший вариант описания, так что...)

2.Всегда overcommit (vm.overcommit_memory=1)

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

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

Минусы: те же, что и в эвристическом режиме. Приложение может сделать malloc() на терабайты при наличии нескольких гигабайт RAM. Пока оно не тронет все страницы, проблем нет — но как только тронет, может включиться OOM Killer.

3.Строгий overcommit (vm.overcommit_memory=2)

В этом режиме ядро запрещает overcommit и резервирует не только виртуальный диапазон, но и физическую память. Нет overcommit — нет и OOM Killer.

При Strict Overcommit ядро отслеживает, сколько физической памяти уже зарезервировано или закоммичено.

Поскольку Strict Overcommit не учитывает свободную память или swap, ориентироваться на free или vmstat бессмысленно. Чтобы понять, сколько памяти можно ещё выделить, смотрят в /proc/meminfo на поля CommitLimit и Committed_AS.

Текущую границу выделения считают так: CommitLimit − Committed_AS.

Настройка vm.overcommit_ratio задаёт предел overcommit’а для этого режима. Предел считается так: PhysicalMemory × overcommit_ratio + swap.

Значение можно поднять, увеличив vm.overcommit_ratio (по умолчанию — 50% от RAM).

Плюсы: OOM Killer не сработает. Лучше, чтобы приложение упало сразу при старте, чем посреди боевой нагрузки от OOM Killer. Solaris работает только так. Strict overcommit не использует free memory/swap для расчёта лимита.

Минусы: overcommit отсутствует полностью. Зарезервированная, но не используемая память простаивает — другие приложения её потрогать не могут. Новый процесс может не получить память, даже если система показывает много свободной RAM — потому что она уже «обещана» другим процессам.

Мониторинг свободной памяти становится хитрее. Многие приложения под Linux не умеют корректно обрабатывать ошибки выделения памяти — это может привести к повреждению данных и странным, трудно отлавливаемым сбоям.

Примечание: и в эвристическом, и в строгом режиме ядро резервирует часть памяти для root. В эвристике — 1/32 от свободной RAM. В строгом — 1/32 от процента реальной памяти, который вы задали. Это зашито в ядро и не настраивается. Например, на системе с 64 ГБ будет зарезервировано 2 ГБ для root.

OOM Killer

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

Критерии выбора «жертвы» иногда приводят к тому, что убивается самый важный процесс. Есть несколько способов снизить риски:

  • Выключить OOM Killer, переключив систему на строгий overcommit:

sudo sysctl vm.overcommit_memory=2 sudo sysctl vm.overcommit_ratio=80

  • Исключить критический процесс из рассмотрения OOM Killer. Но даже это иногда не спасает: ядру всё равно нужно кого-то убить, чтобы освободить память. В некоторых ситуациях остаётся только автоматическая перезагрузка, чтобы восстановить работу системы.

sudo sysctl vm.panic_on_oom=1 sudo sysctl kernel.panic="number_of_seconds_to_wait_before_reboot"

Преимущества файлового кеша

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

Память, занятую файловым кешем, Linux считает свободной — она доступна приложениям, как только им понадобится. Утилита free показывает эту память как свободную.

Наличие файлового кеша заметно ускоряет работу приложений с диском:

  • Чтение: когда приложение читает данные из файла, ядро делает физический IO и подтягивает блоки с диска. Прочитанные данные помещаются в файловый кеш, чтобы в следующий раз не ходить на диск. Повторное чтение того же блока — это уже логический IO (чтение из кеша), что резко снижает задержки. Кроме того, файловые системы выполняют упреждающее чтение (read-ahead): если замечают последовательный доступ, подгружают соседние блоки заранее, предполагая, что приложению они скоро понадобятся.

  • Запись: когда приложение пишет данные в файл, ядро кладёт их в page cache и сразу подтверждает запись (buffered write). Данные в кеше могут многократно обновляться (write cancelling), прежде чем ядро решит, что пора сбросить грязные страницы на диск.

Грязные страницы файлового кеша сбрасываются потоками flusher (раньше звали pdflush). Сброс происходит периодически, когда доля грязных буферов превышает пороговое значение — оно регулируется параметрами виртуальной памяти.

Файловый кеш улучшает производительность IO, скрывая задержки хранилища.

Преимущества HugeTLB и HugePages

Функция HugeTLB в Linux позволяет приложениям использовать большие страницы — 2 МБ или 1 ГБ вместо стандартных 4 КБ. TLB (Translation Lookaside Buffer) — это аппаратный кеш, который хранит отображения «виртуальный → физический» адрес. Когда нужной записи там нет (TLB miss), приходится идти в таблицы страниц в памяти, а это дорогая операция.

TLB-хиты становятся всё важнее из-за растущего разрыва между скорости CPU и памяти, а также из-за увеличения объёмов памяти. Частые TLB miss могут ощутимо просадить производительность.

TLB — ограниченный ресурс на чипе, и ядро Linux старается использовать его максимально эффективно. Каждый элемент TLB может быть настроен на работу со страницами разных размеров: 4 КБ, 2 МБ или 1 ГБ.

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

  • 4 KB pages: 64×4 KB + 1024×4 KB ≈ 4 MB

  • 2 MB pages: 32×2 MB + 1024×2 MB ≈ 2 GB

  • 1 GB pages: 4 GB

Плюсы:

  • Большие страницы уменьшают количество TLB miss, потому что один TLB-слот покрывает больше адресного пространства.

  • Требуется меньше записей в таблицах страниц, и уровней таблиц меньше. Это сокращает задержки на обход таблиц (2 уровня вместо 4) и уменьшает память, расходуемую на сами таблицы.

  • Large Pages фиксируются в памяти и не участвуют в выгрузке при нехватке RAM.

  • Снижается частота page fault: один fault может заполнить сразу 2 МБ или 1 ГБ, а не жалкие 4 КБ. Приложение «прогревается» заметно быстрее.

  • Если у приложения есть локальность данных, HugeTLB даст выигрыш. Но если оно читает байт там, байт здесь, или прыгает по огромной хеш-таблице, то обычные 4 КБ-страницы могут быть выгоднее.

  • Улучшается работа механизма prefetch: крупные страницы устраняют необходимость перезапуска чтения на границах 4K.

Минусы:

  • Большие страницы требуют предварительного резервирования. Администратор должен заранее выставить количество страниц: vm.nr_hugepages=<число>

(У Transparent Huge Pages предварительного шага нет.)

  • Приложение должно уметь работать с HugePages.

Например, JVM нужно запускать с флагом -XX:+UseLargePages, иначе большие страницы просто лежат без дела.

Посмотреть использование: cat /proc/meminfo | grep -E 'HugePages_|Hugepagesize'

  • Для HugePages нужны непрерывные физические участки памяти — 2 МБ или 1 ГБ. На системе, которая работает долго, большая часть RAM может быть уже разрезана на 4К страницы, и запрос на HugePage будет просто нечем удовлетворить.

Показать полностью 2
Linux Ядро Оперативная память Системное администрирование Программа Длиннопост
11
5
B1ackRock
B1ackRock

Поиск альтернативы Termius и переход к максимально простому варианту ssh, загрузки/скачивания редактирования файлов на удаленном сервере⁠⁠

1 месяц назад

Перешел я с windows на fedora но не в этом суть, а в том, что в старой системе пользовался termius, чтобы заходить на удаленные сервера, скачивать и загружать файлы, а также так было очень удобно открывать конфиги и логи в visual studio code.

Но если с Termius есть одна проблема, если вы не можете или не хотите платить за его тарифы, то синхронизации нет. И я начал искать удобные клиенты альтернативы, для себя нашел эти: Tabby, electerm. Я хотел чтобы у меня была возможность синхронизироваться все доступы через файл, без облаков и прочей фигни.

К сожалению эти альтернативы не достаточно удобны и функциональны. Electerm например тормозит.

Я плюнул на все и решил, что попробую связку консольных ssh + sftp + sshfs, ведь это и быстро, и, в принципе, необходимый функционал дает: все сохраняешь как файлы, переносишь куда хочешь и как хочешь, добавляешь гит, если надо. Работает быстро и гибко, только надо привыкнуть ( похоже на управление автомобилем на механике, не очень удобно на бумаге, но в итоге привыкаешь и норм ).

Вот примеры
просто заходим, может в комментариях записать пароль, но записать свои ключи авторизации на удаленных серверах через `ssh-copy-id`


ssh файл office1@admin.sh:

#!/bin/sh

# pass:

# 12345678

ssh admin@192.168.88.240

sftp файл office1@admin.sh:

#!/bin/sh

# pass:

# 1234568

cd ./tmp

sftp admin@192.168.88.240

это все очень простые скрипты и можно добавлять любые автоматизации

sshfs файл office1@admin.sh:

#!/bin/sh

# pass:

# 11111111

sshfs admin@192.168.88.240:/ ./mount

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

sshf размонтирование _unmount.sh:

#!/bin/sh

# Размонтирование

fusermount -uz ./mount

Показать полностью
Ssh Unix Linux Программирование Системное администрирование Программист Текст
8
41
Sheridan.ru
Sheridan.ru
Лига Сисадминов

А я тут live дистрибутив собираю, CephOS⁠⁠

2 месяца назад

Приветствую! :)

Зовут меня Sheridan и я алкоголик гентушник. 0x14 лет уже в emerge медитирую. А кнопки нажимаю и того больше.

Захотелось мне домой NAS. Хорошая штука, удобная. Да только вот ничего меня из того, что есть, не устраивало. А потом я узнал про распределённые ФС. А потом узнал про ceph (кстати, советую почитать это - неплохо для понимания что такое ceph). И захотел себе этот самый ceph домой. Не спрашивайте - зачем. Потому что могу :)

Долго ли коротко я эту хотелку в себе носил, да только вот недавно обломились мне несколько корпусов серверных. И железо дома накопилось разное. Решил, что пора действовать. Ну, железо в кучу собрать да от пыли почистить недолго, а вот ceph развернуть там-же - жалко диски то. Это ж целых как минимум два диска надо в btrfs raid положить, чтобы / там себя чувствовало нормально и у меня голова не болела на тему "А что если диск всё? Переустанавливать?".

И вспомнил я тут про SmartOS. А что, удобно! Грузимся с флешки а все диски гипервизору отдаём и радуемся. Поискал такое про ceph и не нашёл. Штош, думаю, зря я с железа компрессором пыль сдувал? Надо писать.

Ну, и, собственно, вот: CephOS. Уже 0.0.6beta, почти релиз. Обкатываю как раз на железе, ищу слабые стороны.

Без ai тут не обошлось, да. Чукча не художник, чукча девопс :)

Без ai тут не обошлось, да. Чукча не художник, чукча девопс :)

Идея такая:

  • Загружаем с флешек несколько хостов

  • Выполняем на каждом несколько команд

  • ...

  • PROFIT!

Взял я в руки дебьяновый live-build и полез в него встраивать ceph. И скриптами обмазывать. И метриками обкладывать. Куда-ж без метрик то?

И вот что в итоге получилось:

  • Live дистрибутив, предназначенный для поднятия кластера ceph

  • Дистрибутив умеет в persistence (настройки/изменения в / будут храниться на другом разделе/устройстве)

  • Про ceph можно ничего не знать

  • Можно просто выключить ноду и хранилище не пострадает

  • Можно добавить дисков, хостов и хранилище просто увеличится.

  • Можно удалять из хранилища диски и хосты

  • Метрики, метрики, мои любимые метрики :) От node_exporter до smatrctl_exporter. К тому же есть специальный helper-генератор конфига для prometheus, чтобы не приходилось врукопашную все эти хосты подключать.

  • Для более лёгкого подключения есть специальный скрипт, который складывает всё нужное в архив. Этот архив потом нужно забрать на хост клиента, разложить оттуда всё по местам, выбрать и установить нужный вариант монтирования. Ну, в смысле можно руками, можно в fstab, а можно и systemd юнитами монтировать.

  • Можно управлять сжатием CephFS

  • Ну и никто не отнимает стандартный ceph cli, ежели надо чтото сделать, что скриптами ещё не обмазано. Или написать ишью в github проекта - вполне возможно, что обмажу :)

  • Debian bookworm, Ceph squid

Да, флешки менее надёжны, чем hdd. Но флешки категорически дешевле. Да, флешки медленнее hdd. Но это не сильно то и надо в контексте CephOS. Вдобавок live-build поддерживает persistent разделы - то есть можно условный /var/lib/ceph положить на отдельный ssd и оно ещё до загрузки основной системы примонтируется куда надо. Флешка ушла к тёмным магистрам? Ну и дырку на ней в небе, мы с другой загрузимся и заново подключим ноду к хранилищу. Удобно!

Ориентирован CephOS на soho сегмент, где особо не нужны высокие скорости и сверхвысокая надёжность. То есть можно поднять вообще на хламе. То есть не надо это сравнивать с промышленными Ceph кластерами на десятки хостов (хотя ничего не мешает и на CephOS это поднять). А для дома, я считаю, самое то, если завалялось штуки три комплекта старого железа :)

Как? Скачиваем cephos_installer_0.0.6beta.run, записываем несколько флешек, втыкаем флешки в хосты, выполняем на хостах несколько команд, генерируем и забираем архив со всем необходимым для монтирования, монтируем, пользуемся. Всё :)

А ежели поподробнее интересно, то вот тут моя шпаргалка по подъёмы CephOS в виртуалках и на железном полигоне

И мне нужна ваша помощь.

Если у кого есть возможность - протестируйте пожалуйста. Баги/вопросы/пожелания/проклятия в ишью забрасывайте. А если вы с ceph работаете, то я бы очень хотел от вас советов полезных. Мои то два глаза ещё зоркие вроде, но это глаза автора. А нужны глаза пользователей :)

Спасибо, что прочитали эту простыню :)

Показать полностью 1
[моё] Linux IT Файловое хранилище DevOps Системное администрирование Debian Длиннопост
40
15
Вопрос из ленты «Эксперты»
miroshni.cs
Хомячу Сервер

Как настроить безопасный доступ к внутренним ресурсам за маршрутизатором?⁠⁠

2 месяца назад

Всем доброго!
уже писал про свой домашний сервер на Proxmox/Debian, сейчас на нем развернуты файлохранилище и семейный фотоархив на Immich. Провайдер выделил мне глобально маршрутизируемый IP, есть свой домен. По случаю также достался сервер за рубежом ("дальний"), в качестве эксперимента на него установил OpenVPN для устранения проблем, связанных с устареванием серверов Google.
Моя цель - получать доступ к сервисам домашнего сервера, себе и жене, с телефонов, чтоб это было безопасно и удобно.

  1. Самый простой вариант - просто привязать домен к своему IP и пробросить порты на роутере. Но не уверен, что это достаточно безопасно, есть риск взлома роутера и домашней сети.

  2. Более сложный (но все равно достаточно легкий) - установить на телефонах и домашнем сервере vpn-клиент, и работать с сервером как внутри локальной сети. Минусы - постоянная включенность VPN тратит трафик дальнего сервера, а постоянно включать/отключать vpn просто неудобно.

  3. ? Возможен ли вариант настройки прокси на "дальнем" сервере, чтоб первичное подключение осуществлялось к нему, а он бы перенаправлял запросы на домашний сервер? Получится ли каким-то образом контролировать доступ подключенных устройств к "дальнему" серверу? Тогда на домашнем роутере можно было бы ограничить запросы снаружи только для конкретного IP "дальнего" сервера, или например, вообще паковать этот трафик в vpn. Минус - дополнительная настройка прокси на устройствах, которую возможно потребуется включать/отключать.

Как считаете, какими еще способами и технологиями можно было бы достичь безопасного и простого доступа к домашнему серверу?

Показать полностью
Вопрос Спроси Пикабу Linux Сервер Системное администрирование Компьютерные сети Текст
11
13
rNaXx
Хомячу Сервер

Ответ на пост «Домашнее медиа-облако»⁠⁠1

3 месяца назад

озадачился этим некоторое время назад, как переехали, до это пользовал HMS(home media server) но не устраивало, что надо системник держать всегда врубленным, сейчас же когда контент таскают 4 телевизора , ноут , моноблок и стационарный ПК, давно стало не вариантом. еще по "православным" ценам был приобретен Asustor 5304T куда встали 2 WD red nas edition под фото в первом рейде, и 2 toshiba MG08 по 16 tb, за год это все забилось, докупилась полка расширения AS6004U , внутри 4 штуки Seagate SkyHawk AI по 16tb место еще есть зато прекрасно себя там ощущает Plex, в гардеробе на антресоли в коридоре прекрасно себя ощущают не греются и за закрытой дверью очень тихо

Linux Сервер Файловый сервер Системное администрирование Файловое хранилище Ответ на пост Текст
3
44
miroshni.cs
Хомячу Сервер

Домашнее медиа-облако⁠⁠1

3 месяца назад

Хорошее сообщество, вступаю!

Решил завести свой домашний сервачок: на ноутах и компе накопилось много файлов/фоток, старые харды начали сбоить, возник риск потери семейного архива.

Нашёл на авито сб/у серверный корпус тауэр, и б/у серверную мат.плату с двумя Ксеонами 2420v2 и 96ГБ оперативки, всë в сумме вышло на 12 тыр. В ДНС купил SSD на один ТБ, и два харда WD Red на 8 ТБ для рейда - всё новое, иначе старьё опять начнёт сыпаться.

Накатил Proxmox, объединил харды в рейд 1 (зеркало), для надёжности. К сожалению, не смог настроить аппаратный рейд через LSI MegaRAID, ОС не запускалась, сделал программный через LVM.

Внутри Proxmox создал виртуалку с FreeNAS, пробросил в неё виртуальный накопитель и настроил отдельные шары по SMB, для фильмов, фото и прочих данных.

Хотел развернуть Plex Media Server в LXC-контейнере, но шара не пробрасывалась. Забил и поднял Plex в отдельной виртуалке поверх дебиана.

Загрузил на шару обучающие видео со своих разных семинаров - крутота! Работает :) теперь с телевизора можно смотреть свои видосы и фильмы.


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

В дальнейших планах: установить Immich, попробовать Jellyfin (говорят, удобнее, чем Plex), привязать домен и настроить реверс-прокси. А также попробовать HomeAssistant, и, может, с self-hosted нейросетями поиграть.

Могу расписать подробнее, что и как настроил. Позже распишу, что успел настроить ещё.

UPD:

Получилось восстановить данные и перекинуть всю инфу. Следующее на очереди - организация удаленного доступа к серверу.

Показать полностью
[моё] Linux Сервер Файловый сервер Системное администрирование Файловое хранилище
33
309
0sennijLis
0sennijLis
Лига Сисадминов

Как под капотом работает команда cat⁠⁠

4 месяца назад
Как под капотом работает команда cat
IT Linux IT юмор Системное администрирование Системный Блок Картинка с текстом Кот
20
17
aidaho6
aidaho6
GNU/Linux

Улучшения в RMON: расширенный Ping, группировка алертов и трассировка через MTR⁠⁠

5 месяцев назад

Нам часто пишут пользователи, которые хотят мониторить качество каналов связи — не просто проверять “доступен ли хост”, а действительно оценивать стабильность сети и реагировать на деградации. Один из таких пользователей недавно подключил мониторинг для нескольких регионов, и его запрос дал нам полезный импульс для доработок.

Рассказываем, какие улучшения появились в RMON.


Ping стал умнее

Раньше проверка ping в RMON отправляла один пакет — это было достаточно для грубой оценки, но плохо отражало реальное состояние канала. Теперь всё иначе:

  • Можно указать количество ICMP-пакетов в настройках проверки.

  • Система собирает и отображает:

    • min RTT

    • max RTT

    • avg

    • mean

Это особенно полезно, если канал нестабилен: одиночный ping может случайно показать “всё хорошо”, хотя на деле теряются пакеты или резко плавает задержка.

| Возможность | SmokePing | RMON |

|-----------------------------|----------------|---------------------------|

| Графики RTT и потерь | ✅ Да | ✅ Да |

| Группировка алертов | ❌ Нет | ✅ Да |

| Настраиваемое кол-во пакетов| ✅ Частично | ✅ Да |

| Интерактивный веб-интерфейс | ❌ (CGI) | ✅ Современный UI |

| MTR из разных регионов | ❌ Нет | ✅ Да |

| Проверки из нескольких точек| ❌ (1 сервер) | ✅ Геораспределённые агенты |

| Telegram/Slack уведомления | Только через внешние скрипты | ✅ Встроено |

| API | ❌ Ограничен | ✅ Полноценный REST API |

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

RMON же изначально создавался с упором на:

  • простую установку;

  • удобный интерфейс;

  • встроенные нотификации и API;

  • и главное — распределённый мониторинг из разных географий.

Группировка алертов

Пользователи с несколькими агентами в разных регионах сталкивались с таким сценарием:

"Падает один хост — и мы получаем 5+ одинаковых алертов от каждого региона".

Теперь алерты по одному хосту автоматически агрегируются:

  • Вы получаете единое уведомление со списком всех регионов, где обнаружена проблема.

  • Упрощается логирование, снижается "шум" в системах алертинга (Telegram, Slack и т.п.)

MTR на месте

Мы добавили возможность запускать MTR (traceroute с расширенной статистикой) из конкретного региона:

  • Прямо из веб-интерфейса или API

  • Можно быстро проверить маршрут от нужного агента до целевого хоста

Это особенно удобно при отладке проблем между регионами, в CDN, или при работе с провайдером.


Что дальше

Мы продолжаем развивать RMON как инструмент для распределённого мониторинга, ориентированный на:

  • телеметрию от агентов из разных регионов;

  • гибкую конфигурацию проверок;

  • удобную интеграцию с Telegram, Slack, Prometheus, Zabbix и другими системами.

Если вы хотите точно знать, где и когда у вас реально деградирует сеть — попробуйте RMON: https://rmon.io

Показать полностью 2
[моё] IT Linux Сайт Мониторинг DevOps Системное администрирование Длиннопост
16
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии