Pull to refresh
4
0
Send message

Роутинг и policy-routing в Linux при помощи iproute2

Reading time 6 min
Views 251K
Речь в статье пойдет о роутинге сетевых пакетов в Linux. А конкретно – о типе роутинга под названием policy-routing (роутинг на основании политик). Этот тип роутинга позволяет маршрутизировать пакеты на основании ряда достаточно гибких правил, в отличие от классического механизма маршрутизации destination-routing (роутинг на основании адреса назначения). Policy-routing применяется в случае наличия нескольких сетевых интерфейсов и необходимости отправлять определенные пакеты на определенный интерфейс, причем пакеты определяются не по адресу назначения или не только по адресу назначения. Например, policy-routing может использоваться для: балансировки трафика между несколькими внешними каналами (аплинками), обеспечения доступа к серверу в случае нескольких аплинков, при необходимости отправлять пакеты с разных внутренних адресов через разные внешние интерфейсы, даже для отправки пакетов на разные TCP-порты через разные интерфейсы и т.д.
Для управления сетевыми интерфейсами, маршрутизацией и шейпированием в Linux служит пакет утилит iproute2.
Читать дальше →
Total votes 56: ↑51 and ↓5 +46
Comments 10

Тюнинг сетевого стека Linux для ленивых

Reading time 5 min
Views 90K

Сетевой стек Linux по умолчанию замечательно работает на десктопах. На серверах с нагрузкой чуть выше средней уже приходится разбираться как всё нужно правильно настраивать. На моей текущей работе этим приходится заниматься едва ли не в промышленных масштабах, так что без автоматизации никуда – объяснять каждому коллеге что и как устроено долго, а заставлять людей читать ≈300 страниц английского текста, перемешанного с кодом на C… Можно и нужно, но результаты будут не через час и не через день. Поэтому я попробовал накидать набор утилит для тюнинга сетевого стека и руководство по их использованию, не уходящее в специфические детали определённых задач, которое при этом остаётся достаточно компактным для того, чтобы его можно было прочитать меньше чем за час и вынести из него хоть какую-то пользу.

Читать дальше →
Total votes 94: ↑94 and ↓0 +94
Comments 45

Куча способов переиспользовать код в Rust

Reading time 40 min
Views 19K
Я нашел эту статью авторства Alexis Beingessner как наиболее понятное описание системы типов в Rust, и что с ними можно делать. Надеюсь, кому-нибудь этот перевод будет полезен. Не смотрите на то, что вначале описываются очевидные вещи — под конец можно утонуть. Статья огромная и скорее всего будет разобрана на главы. Переведено достаточно вольно. Авторский стиль сохранен. — прим.пер.

(статья написана о Rust 1.7 stable)

В системе типов Rust есть много всякого. Насколько я знаю, практически вся сложность этого всякого заключается в том, чтобы выразить программу в максимально обобщённом виде. Притом народ еще и требует большего! У меня всегда были проблемы с простым пониманием наиболее сложных вещей, потому этот пост скорее напоминалка самому себе. Но тем не менее, мне также нравится делать что-то, полезное другим, поэтому в данной статье также есть вещи, которые я вряд ли забуду, но о которых некоторые могут не знать.

В этой статье не будет исчерпывающего описания синтаксиса или общих деталей описываемых возможностей. Здесь рассказывается, почему происходит так или иначе, так как подобные вещи я всегда забываю. Если вы нашли эту статью в попытках выучить Rust полноценно, вам определенно стоит для начала ознакомиться с Книгой (оригинал вот — прим.пер.). В то же время я здесь буду уточнять некоторые произвольные теоретические аспекты того, что происходит.
Скорее всего, в этой статье полно ошибок, и она не должна претендовать на звание официального руководства. Это просто сборник того, что я накопал за неделю, пока искал новую работу.
Осторожно, там глубоко!
Total votes 50: ↑50 and ↓0 +50
Comments 34

Создание функции на Rust, которая возвращает String или &str

Reading time 7 min
Views 9.2K

От переводчика


КДПВ Это последняя статья из цикла про работу со строками и памятью в Rust от Herman Radtke, которую я перевожу. Мне она показалась наиболее полезной, и изначально я хотел начать перевод с неё, но потом мне показалось, что остальные статьи в серии тоже нужны, для создания контекста и введения в более простые, но очень важные, моменты языка, без которых эта статья теряет свою полезность.


Мы узнали как создать функцию, которая принимает String или &str (англ.) в качестве аргумента. Теперь я хочу показать вам как создать функцию, которая возвращает String или &str. Ещё я хочу обсудить, почему нам это может понадобиться.
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Comments 11

Хочется взять и расстрелять, или ликбез о том, почему не стоит использовать make install

Reading time 5 min
Views 169K
К написанию сей заметки меня сподвигло то, что я устал делать развёрнутые замечания на эту тему в комментариях к статьям, где в качестве части инструкции по сборке и настройке чего-либо для конкретного дистра предлагают выполнить make install.
Суть сводится к тому, что эту команду в виде «make install» или «sudo make install» использовать в современных дистрибутивах нельзя.

Но ведь авторы программ в руководствах по установке пишут, что нужно использовать эту команду, возможно, скажете вы. Да, пишут. Но это лишь означает, что они не знают, какой у вас дистрибутив, и дистрибутив ли это вообще, может, вы вступили в секту и обкурилисьчитались LFS и теперь решили под свою хтоническую систему скомпилять их творение. А make install является универсальным, хоть и зачастую неправильным способом это сделать.

Читать дальше →
Total votes 385: ↑339 and ↓46 +293
Comments 185

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

Reading time 4 min
Views 157K

Предисловие


Скорей всего, матерым системным администраторам статья будет не очень интересна. В первую очередь она ориентирована на новичков, а также на людей, которые столкнулись с подобной проблемой — необходимостью удалить огромное количество файлов из одной папки в ОС Linux (Debian в моем случае), а также с закончившимся местом на диске, когда df -h выдает что почти 30% свободно.
Читать дальше →
Total votes 111: ↑107 and ↓4 +103
Comments 144

Так как же удалить миллионы файлов из одной папки?

Reading time 5 min
Views 146K

Феерическая расстановка точек над i в вопросе удаления файлов из переполненной директории.

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

Для тех, кто не в курсе проблемы, краткое описание: если вы случайно создали в одной директории огромное количество файлов без иерархии — т.е. от 5 млн файлов, лежащих в одной единственной плоской директории, то быстро удалить их не получится. Кроме того, не все утилиты в linux могут это сделать в принципе — либо будут сильно нагружать процессор/HDD, либо займут очень много памяти.

Так что я выделил время, организовал тестовый полигон и попробовал различные средства, как предложенные в комментариях, так и найденные в различных статьях и свои собственные.
Читать дальше →
Total votes 155: ↑145 and ↓10 +135
Comments 103

Обзор компактных Linux дистрибутивов для системных администраторов

Reading time 3 min
Views 58K
В статье "A comparative look at compact sysadmin distributions" представлен обзор компактных (210Мб mini CD) LiveCD/LiveUSB Linux дистрибутивов для системных администраторов:

SliTaz — занимает всего 25Мб и работает на системах с 128Мб ОЗУ, при наличии графического интерфейса пользователя на основе JWM. Поддерживается загрузка с CD и USB. Ориентация дистрибутива — компактная десктоп система. Из программ которые могут пригодится для восстановления системы присутствует GParted, отдельно можно загрузить пакеты с TestDisk (восстановление дисковых разделов) и PhotoRec (восстановление файлов);


Читать дальше →
Total votes 71: ↑64.5 and ↓6.5 +58
Comments 26

Ставим Ubuntu/Debian через debootstrap из другой Linux-системы

Reading time 5 min
Views 62K
imageПрошло почти три года с публикации последней и единственной статьи на хабре про это дело, и с тех пор некоторые вещи изменились. Хочу сразу сказать, что этот пост — упрощение и объединение двух замечательных вики-страниц написанных моим другом: раз и два. Если те страницы направлены на полное и подробное описание процесса установки, то я постараюсь максимально упростить и ускорить процесс установки, разбив его всего на три шага.

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

Во-первых, вам понадобится рабочая Linux-система, из которой мы будем устанавливать новую систему. Подойдет любой дистрибутив, как и установленный, так и запущенный с LiveCD.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 13

Как перезагрузить сервер?

Reading time 6 min
Views 131K
Abstract: описание видов ребута, рассказ про sysrq, ipt_SYSRQ, ipmi, psu.

Как перезагрузить сервер? — Это вопрос, который обычно задают ну очень начинающим пользователям, которые путаются между halt, shutdown -r, reboot, init 6 и т.д.

Опытный администратор уточнит вопрос: «а что с сервером не так?» Разные виды отказов серверов требуют разных видов ребута — и неверно выбранный вариант приведёт к тяжелейшим последствиям, из которых визит в веб-морду IPMI/DRAC/iLO с целью «доперезагрузить» будет самым лёгким. Самым тяжёлым в моей личной практике была командировка эникейщика в соседний город. С целью «нажать ребут» на одиноко стоящем сервере.

В этой статье: что мешает серверу перезагрузиться и как ему помочь.

Начнём с теории ребута.

При выключении или перезагрузке сервера менеджер инициализации (в большинстве современных дистрибутивов — systemd, в эксцентричной Ubuntu 14.04 до сих пор upstart, в архаичном хламе — sysv-init) в определённом порядке посылает всем демонам команду «выключись». И большинство демонов (например, СУБД, вроде mysql) знают, как выключаться правильно. Например, закончить все транзакции, сохранить все несохранённые данные на диск и т.д. Для in-memory СУБД, наподобие redis, это и вовсе может быть критичным: не сохранил — потерял.

Старые системы иницализации ждали неограниченно долго каждый из инит-скриптов. Например, если «шутник» добавил вам в «stop» веточку «sleep 3600», то ваш сервер будет перезагружаться час с хвостиком. А если там цифра поболе, или просто программа, которая не хочет завершаться, то и ребут никогда не закончится.
Читать дальше →
Total votes 93: ↑86 and ↓7 +79
Comments 82

Удаленная переустановка Linux по ssh без доступа к консоли

Reading time 8 min
Views 60K
Понадобилось мне переустановить сервер, который как бы хостился у знакомых знакомых. Там был сильно устаревший Debian, а, самое главное, система стояла на обычных разделах без lvm и пространство было распределено очень не оптимально. Физический доступ получить к нему было практически нереально, местного админа попросить что-то сделать было можно, но занять это могло неделю. Виртуальный KVM у сервера был, но извне на него попасть было нельзя; у как бы хостера не было лишних IP-адресов, а внутрь его сети попасть было невозможно. Надо было переустановить сервер из-под работающей системы по ssh. Ага, давайте поменяем ротор у турбины не выключая, потом её перезапустим и будет она с новым ротором работать!
Читать дальше →
Total votes 111: ↑110 and ↓1 +109
Comments 70

Обзор IntelliJ IDEA 16 Public Preview

Reading time 5 min
Views 40K
В пятницу, 19 февраля, мы выпустили бета-версию IntelliJ IDEA 16. Учитывая то, что с момента выхода IntelliJ IDEA 15 прошло немногим более трех месяцев, вы будете приятно удивлены тем, что мы успели сделать за это время. Мы приглашаем вас скачать свежую версию прямо сейчас и самостоятельно попробовать все улучшения, о самых главных из которых я с удовольствием расскажу далее.

image

Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Comments 72

Information

Rating
Does not participate
Registered
Activity