• Что общего между LVM и матрешкой?

    Доброго времени суток.
    Хочу поделиться с сообществом практическим опытом построения системы хранения данных для KVM с использованием md RAID + LVM.

    В программе будет:

    • Сборка md RAID 1 из NVMe SSD.
    • Сборка md RAID 6 из SATA SSD и обычных дисков.
    • Особенности работы TRIM/DISCARD на SSD RAID 1/6.
    • Создание загрузочного md RAID 1/6 массива на общем наборе дисков.
    • Установка системы на NVMe RAID 1 при отсутствии поддержки NVMe в BIOS.
    • Использование LVM cache и LVM thin.
    • Использование BTRFS снимков и send/recieve для резервного копирования.
    • Использование LVM thin снимков и thin_delta для резервного копирования в стиле BTRFS.

    Если заинтересовало, прошу под кат.
    Читать дальше →
    • +11
    • 4.5k
    • 6
  • Всё, что вы хотели знать о тестировании адаптеров Wi-Fi, но боялись спросить

      image

      На днях нашей компании исполняется 20 лет. Последние 15 лет из этих 20 мы делаем программы для анализа Wi-Fi-сетей. Часть этой работы – разработка драйверов для Wi-Fi-адаптеров, и в этой статье я расскажу, как команда разработчиков тестирует продукты своего труда, и как процесс тестирования эволюционировал за эти 15 лет вместе с эволюцией стандартов и адаптеров. Будет много картинок (то, что называют «geek porn») и технических подробностей.
      Читать дальше →
    • Эволюция сборки логов «облака» и сборщик логов в open source

        Здравствуйте, меня зовут Юрий Насретдинов, я работаю старшим инженером в Badoo. За последние полтора года я сделал несколько докладов на тему того, как работает наше облако. Слайды и видео можно посмотреть тут и тут.

        Сегодня настало время рассказать о ещё одной части этой системы — о сборщике логов, который мы вместе с этой статьей выкладываем в open-source. Основная часть логики нашего облака написана на языке Go, и эта подсистема не является исключением.
        Исходные коды системы: github.com/badoo/thunder
        В этой статье я расскажу вам о том, каким образом мы доставляем логи приложений в нашем облаке, которое мы называем просто «скриптовым фреймворком».

        Логи приложений


        Наши приложения, запускаемые в облаке, представляют из себя классы на PHP, которые в простейшей реализации имеют метод run() и получают на вход данные задания, например, число от 1 до N, где N — максимальное число экземпляров для этого класса. У каждого задания есть свой уникальный id, и конечной целью является доставка логов в какое-то централизованное хранилище, где можно будет легко найти логи как конкретного запуска, так и все логи класса сразу.
        Читать дальше →
      • Strace в Linux: история, устройство и использование


        В Unix-подобных операционных системах общение программы с внешним миром и операционной системой происходит через небольшой набор функций — системных вызовов. А значит, в отладочных целях полезно бывает подсмотреть за выполняемыми процессами системными вызовами.


        Следить за «интимной жизнью» программ на Linux помогает утилита strace, которой и посвящена эта статья. К примерам использования «шпионского» оборудования прилагаются краткая история strace и описание устройства подобных программ.

        Читать дальше →
      • STM32MP1 — ядра + Linux = идеальный микроконтроллер

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

          1. Требующий больших ресурсов микроконтроллера и не требующий жесткого реального времени графический интерфейс пользователя (GUI).
          2. Потребляющая немного ресурсов и работающая в жестком реальном времени аппаратная часть прибора.

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

          Но с появлением у STM новой линейки микроконтроллеров STM32MP1 мои терзания закончились и вот что пока получилось.
          Читать дальше →
        • Ускорение дисковой подсистемы Qemu KVM в Linux

          • Tutorial


          Иногда я берусь за различные задачи по настройке серверов. Некоторое время назад ко мне обратился владелец небольшой хостинговой компании, с интересной проблемой. Он хотел бы на своих серверах, где уже стоял Ubuntu 18.04, запускать виртуальные машины с Windows под KVM.

          Однако проведённое им тестирование показало, что дисковая система KVM прилично отставала от показателей, которые у него были под Hyper-V. Он хотел раскочегарить qemu на своих Ubuntu серверах, чтобы избежать закупок дорогих серверных лицензий Windows (бесплатная версия Microsoft Hyper-V Server не устраивала из-за своих ограничений).
          С убеждённостью в том, что возможно превзойти настройки по-умолчанию, я взялся за работу.
        • VPN-сервер на Linux — решение проблемы с MPPE и клиентами, не поддерживающими шифрование данных

            Так уж исторически сложилось, что связка pptpd + pppd — довольно популярное решение для раздачи интернета в локальных сетях, во многом благодаря наличию клиента pptp в windows начиная с 98 «из коробки». Более того, этот клиент поддерживает протокол шифрования MPPE который начиная с windows 2000 включен для новых соединений по умолчанию.
            pppd радостно идет нам навстречу, также поддерживая этот протокол, но делает это весьма своеобразно:
            Читать дальше →
          • Тяжелое расставание с Net-Tools

            • Tutorial

            Не секрет, что Net-Tools пора на почетную отставку. Да, многим админам и мне в том числе, до условного рефлекса Павлова знакомы команды ifconfig, route, netstat. На первый взгляд нет причин что-то менять, а лучшее как всегда враг хорошего.




            Давайте узнаем почему Net-Tools уже не тот и как безболезненно с него перейти на iproute2 .

            Читать дальше →
          • [Nginx] Как победить response_status = 0

            Статья из разряда «заметки на полях».

            TL:DR:
            http2_max_field_size 8k; # всех спасет!


            На одном из проектов, после изменения некоторой внутренней логики бекенда, начал наблюдать странный response_code в логах, а именно — 0. В логах выглядит примерно так:

            {
              "timestamp": "2020-01-17T08:41:51+00:00",
              "remote_addr": "zzz.zzz.zzz.zzz",
              "request_time": 0,
              "upstream_response_time": "",
              "upstream_header_time": "",
              "http_accept_language": "-language",
              "response_status": 0,
              "request": "",
              "host": "example.com",
              "upstream_addr": "",
              "http_referrer": "",
              "request_length": 5854,
              "bytes_sent": 0,
              "http_user_agent": ""
            }
            
            Читать дальше →
            • +25
            • 5.4k
            • 4
          • Полезные сниппеты для Nginx конфигов



              Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов и коллекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

              Читать дальше →
            • Тестирование производительности виртуализации и облачных сервисов

                Сегодня мы рассуждаем о тестировании производительности облачных сервисов и систем виртуализации, а также делаем полезные выводы. Но прежде чем говорить о benchmarking’е, давайте задумаемся, как же правильно проводить тесты в виртуальной среде? На самом деле, в этом вопросе есть и свои хитрости, и свои, уже проверенные методы.
                Читать дальше →
              • Нагрузочное тестирование в облаке Azure. Как протестировать крупный интернет-магазин в условиях, близких к реальным?

                  В данной статье мы поделимся собственным практическим опытом, который мы приобрели при тестировании Web Apps приложения (интернет-магазина), работающего в облаке MS Azure, а также опишем, какими инструментами мы пользовались для решения этой задачи и о выводах, которые были сделаны по полученным результатам.

                  Читать дальше →
                • Нагрузочное тестирование с помощью Selenium

                    Введение


                    В это статье я расскажу о применении инструмента изначально предназначенного для функционального тестирования при тестировании нагрузочном web части системы электронного документооборота (СЭД).
                    Читать дальше →
                  • Сравнение: Docker swarm, Kubernetes, Rancher и D2C

                      С того момента как мы начали вести корп. блог на Хабре, на демо и при обращениях в поддержку нас стали чаще сравнивать с оркестраторами. И если раньше были вопросы о том, в чем отличия D2C от Heroku, Clou66 и тому подобных сервисов, то теперь, видимо, нас стали рассматривать как альтернативное решение для оркестрации.


                      Чтож, попробую поправить ситуацию и провести сравнение с несколькими популярными решениями, о которых слышно чаще: Docker swarm, Kubernetes и Rancher. А чтобы зайти не «с конца», кратко дам по маленькому обзору на каждую из них.

                      Читать дальше →
                      • +9
                      • 26.2k
                      • 7
                    • VBA и Python для автоматизации Excel и MS Office

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


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


                        VBA и Python


                        VBA (Visual Basic for Applications), де-факто, самый популярный язык для автоматизации Microsoft Office. Доступен из коробки, помимо Excel, работает в PowerPoint, Outlook, Access, Project и других приложениях.


                        Если задать вопрос: «Какой язык программирования выбрать первым», то где-то в 90% всех случаев будет предложен Python. На практике здесь может быть и любой другой язык, но, исходя из популярности языка и своего опыта, буду сравнивать с ним.


                        В общем виде можно описать ситуацию через подобный график:


                        Читать дальше →
                      • CI/CD используя Jenkins на Kubernetes

                        Добрый день.


                        На Хабре уже есть несколько статей о jenkins, ci/cd и kubernetes, но в данной я хочу сконцентрироваться не на разборе возможностей этих технологий, а на максимально простой их конфигурации для постройки ci/cd pipeline.


                        Я подразумеваю, что читатель имеет базовое понимание docker, и не буду останавливаться на темах установки и конфигурирования kubernetes. Все примеры будут показаны на minikube, но так же могут быть применены на EKS, GKE, либо подобных без значительных изменений.


                        Читать дальше →
                        • +18
                        • 33.2k
                        • 9
                      • Как я запускал Докер внутри Докера и что из этого получилось

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


                          image
                          Читать дальше →
                        • Запускаем OpenVPN в Докере за 2 секунды

                          • Tutorial
                          Привет, хабровчане! Сталкивались ли вы когда-либо с ситуацией, когда очень хотелось бы виртуально перенестись в другой город, страну или на другой континент? У меня такая необходимость возникает достаточно часто, поэтому возможность иметь свой VPN сервер, который можно запустить где угодно, за пару секунд, стоял достаточно остро.В этой статье хочу рассказать про свой проект, который я задумал когда искал готовое решение, в данном случае докер образ, который бы позволил быстро поднять OpenVPN сервер, с минимумом настроек и приемлемым уровнем безопасности.


                          Читать дальше →
                        • Разработка под Docker. Локальное окружение. Часть 2 — Nginx+PHP+MySql+phpMyAdmin

                            Для лучшего понимания нижеследующего материала сначала рекомендуется ознакомится с Предыдушим постом

                            Рассмотрим пример развертки локального окружения состоящего из связки Nginx+PHP+MySql+phpMyAdmin. Данная связка очень популярна и может удовлетворить ряд стандартных потребностей рядового разработчика.

                            Как и в прошлом посте акцент будет смещен в сторону утилиты docker-compose, чем докера в чистом виде.

                            Итак, поехали!
                            Читать дальше →
                          • Разработка под Docker. Локальное окружение. Часть 1

                            Возможно, одна из самых основных причин почему мне нравится докер это то, что он позволяет избавиться от необходимости установки на компьютер различных сервисов. К их числу можно отнести и сам веб-сервер Apache или Nginx, базы данных и прочие компоненты инфраструктуры приложения. Вся инфраструктура прописана в конфигурационном файле docker-compose.yml и запускается одной командой вместе с вашим приложением. Все что нужно разработчику работающему с докером, это по сути сам докер и любимая среда разработки и ВСЕ!
                            Читать дальше →