• Почему несколько L2TP IPsec клиентов с одного IP за NAT отваливаются на Mikrotik?

    b1ora
    @b1ora
    Настройка Микротик РФ
    IKE2 решает эту проблему, либо переход на SSTP
    Ответ написан
    2 комментария
  • Можно ли ставить виртуальную машину с SQL-сервером на паузу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Postgres очень быстро паркуется, если надо. Кажется pg_ctl там с аргументами или services stop postgresql.
    Вот сделай скриптик.
    Ответ написан
    Комментировать
  • Можно ли ставить виртуальную машину с SQL-сервером на паузу?

    @pantsarny
    Конечно лучше гасить субд корректно, останавливать сервис, с правильным сигналом завершения
    Ответ написан
    Комментировать
  • Как заменить bad gateway ngnix на html для разных proxy_pass url?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Согласно доке вы можете ставить error_page в location

    Syntax: error_page code ... [=[response]] uri;
    Context: http, server, location, if in location


    https://nginx.org/en/docs/http/ngx_http_core_modul...
    Ответ написан
    Комментировать
  • Какой тип диска выбрать в proxmox при создании виртуальной машины и почему?

    meDveD_spb
    @meDveD_spb
    Все ответы выше не верные.

    Ставить надо рекомендованый SCSI
    (A SCSI controller of type VirtIO SCSI is the recommended setting if you aim for performance )
    Нужна будет исошка виртио
    https://fedorapeople.org/groups/virt/virtio-win/di...
    что да как, здесь расписано
    https://serveradmin.ru/rekomendaczii-best-practice...

    И вообще лучше почитать, что к чему, и что значат разные пунктики при создании машины, их не так и много.
    https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines
    Ответ написан
    Комментировать
  • Как выполнить запрос сразу ко всем базам MSSQL 2019?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Динамические запросы по курсору первого запроса.
    DECLARE @DBD TABLE ( [Name] VARCHAR(100), [Recovery Model] INT, [Offset] INT)
    DECLARE @N NVARCHAR(100), @R INT, @F INT
    DECLARE @Q NVARCHAR(100), @P NVARCHAR(100) = '@FF INT OUTPUT'
    DECLARE DB CURSOR FOR
      SELECT [name], [recovery_model]
        FROM sys.databases
        WHERE owner_sid <> 0x01
    OPEN DB
    FETCH NEXT FROM DB INTO @N, @R
    WHILE @@FETCH_STATUS = 0
      BEGIN
        SET @Q = 'SELECT @FF = Offset FROM ' + @N + '.[dbo].[_YearOffset]'
        BEGIN TRY  
          EXECUTE sp_executesql @Q, @P, @FF = @F OUTPUT
        END TRY  
        BEGIN CATCH  
          SET @N = @N + ' Not 1C'
          SET @F = NULL
        END CATCH      
        INSERT @DBD VALUES (@N, @R, @F)
        FETCH NEXT FROM DB INTO @N, @R
      END
    CLOSE DB
    DEALLOCATE DB
    SELECT * FROM @DBD
    GO
    Ответ написан
    4 комментария
  • Как пробросить 25-й порт используя SSH-туннель?

    ValdikSS
    @ValdikSS
    Чтобы маршрутизировать порт 25 через SSH-туннель, нужно:
    1. Запустить туннель с SOCKS-портом: ssh -D 12345 user@host;
    2. Настроить соксификатор, например, redsocks или v2ray;
    3. Настроить правила iptables/nftables для перенаправления исходящих TCP-запросов на порт 25 к порту соксификатора.


    Гораздо проще, надёжнее и технически корректнее настроить маршрут через VPN, тем более, что WireGuard у вас уже есть:
    sudo ip route add default dev wg0 table 100
    sudo ip rule add ipproto tcp dport 25 table 100
    Ответ написан
    3 комментария
  • Как приложение в LXC может узнать реальный объем RAM физической машины?

    ValdikSS
    @ValdikSS
    Ваша программа узнаёт информацию из /proc-файлов, а изменение ограничений cgroup в Linux не меняет содержимое этих файлов.
    Вам нужен lxcfs.
    Ответ написан
    1 комментарий
  • Как лучше поступить при удаленной переустановке линукса?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    https://habr.com/ru/post/321696/

    развлекайтесь
    Ответ написан
    Комментировать
  • Как без проблем расширить корневой диск на лету в виртуальной машине linux?

    @rPman
    Про то что все современные файловые системы в linux умеют расширяться вам уже написали, т.е. меняешь размер раздела а после заставляешь файловую систему занять все пространство раздела... к сожалению делать это на лету почти всегда невозможно, т.е. требует размонтировать раздел (или хотя бы перевести его в readonly режим)

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

    Еще момент, некоторые файловые системы, например btrfs/zfs, умеют на лету! добавлять (и удалять) диски к пулу, и не обязательно это должен быть raid, возможно простое объединение пространств дисков, даже без чередования. Собственно btrfs я бы и рекомендовал использовать, даже не смотря на его нестабильный статус (так как все его проблемы касаются вещей, которые можно не использовать, например raid56)

    p.s. Во всех современных ос есть символические линки, позволяющие обойти ограничения неудачно спроектированных приложений
    т.е. в момент, когда тебе требуется больше места, ты подключаешь новый диск или новый раздел, раскидываешь файлы с помощью символических линков.

    Да, существуют странные приложения, которые проверяют что файлы не являются линками (либо делают обновление файла его перезаписью, что удаляет симлинк и создает новый файл на текущем диске) или же разработчики по глупости вообще решают все хранить в одном большом контейнере, вынуждая администраторов ломать голову, как этот бред поддерживать... всякое бывает, симлинки не всемогущий инструмент.
    Ответ написан
    1 комментарий
  • Как без проблем расширить корневой диск на лету в виртуальной машине linux?

    Melkij
    @Melkij
    PostgreSQL DBA
    Раздел данных, который с высокой вероятностью нужно расширять делаете в конце блочного устройства. Так, чтобы за ним ничего не было. И неважно, рутовый это раздел или ещё какой.
    Когда понадобится расширить:
    1. расширяете блочное устройство
    2. через parted командой resizepart увеличиваете раздел
    3. затем расширяете файловую систему: resize2fs для ext4, xfs_growfs для xfs. Если у вас какая-то вдруг другая экзотика - предварительно уточните команду.

    Всё.

    Можно добавить lvm, вся разница что между 2 и 3 пунктом добавятся pvresize и lvresize. Либо, по желанию, можно будет создавать дополнительные разделы (и/или диски) и их добавлять в lvm.
    lvm поможет, если вы решили сделать отдельный раздел под ОС и отдельный под данные, а потом поняли, что раздел ОС сделали слишком маленьким.

    PS: "Виртуальная машина, не особо важно под каким будет гипервизором" - не все гипервизоры могут корректно оповестить гостевую систему об изменении блочного устройства, для некоторых нужен рестарт виртуалки.
    Ответ написан
    4 комментария
  • Как без проблем расширить корневой диск на лету в виртуальной машине linux?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Сразу так себе решение, думайте над тем, чтобы хранить весь хлам в каком-то внешнем хранилище, s3 или в какой-то БД, или на худой конец, сетевой фс.

    А то потом вы захотите сделать два инстанса вашего гениального творения, и будет большой УПС.
    Ответ написан
    6 комментариев
  • Как без проблем расширить корневой диск на лету в виртуальной машине linux?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    по умолчанию системы сейчас ставятся на lvm.
    да и вообще - не вижу проблемы в увеличении раздела. Максимум что может быть - перезагрузка.
    Ответ написан
    Комментировать
  • Как удалить поврежденный объект групповой политики?

    @NortheR73
    системный инженер
    удалить соответствующую папку из SYSVOL\domain_name\Policies
    Ответ написан
    8 комментариев
  • Почему isc-dhcp-server не хочет работать без subnet на одном интерфейсе?

    @tamogavk
    @deni4ka
    Просто объявите subnet слушающего интерфейса, без range.
    Ответ написан
    1 комментарий
  • С чего начать изучение программирования школьнику?

    @Akela_wolf
    Extreme Programmer
    Насчет линукса. Да, на мой взгляд однозначно стоит. Опыт работы в линуксе даст тебе более глубокое понимание как функционирует операционная система, возможность заглянуть "под капот", увидеть на практике такую вещь как разные реализации одного и того же (например разные оконные менеджеры - суть у них одна, но каждый реализует это задачу разными путями). Поэтому советую что-нибудь "конфигурябельное", типа ArchLinux (Gentoo - это уже совсем-совсем хардкор, новичку с ней будет тяжко). Что касается повседневных задач - да нет там никаких непреодолимых трудностей, если не брать какую-то прям специфику. Браузер - есть. Просмотр видео, прослушивание музыки - есть. Работа с документами - есть. Работа с графикой и 3D-моделированием - есть. Игры - тоже есть, хоть иногда и с приколами (но сказано что игры не интересуют, поэтому не так важно).

    Насчет языка. Вообще язык программирования выбирают под задачу. Если хочется заниматься, например, системным программированием (драйверы, файловые системы, загрузчики, ядро ОС, виртуальные машины/гипервизоры, СУБД и пр.) - то это C/C++. Если хочется заниматься нейросетками - там хорош Питон. Фронтендом - без Javascript/Typescript сейчас никуда. Но если говорить об языке программирования общего назначения (на котором можно написать множество прикладных программ), то я рекомендовал бы следующие критерии:
    • Статически типизированный. Особенно важно, на мой взгляд, в начале обучения, так как закладывает базу - навык писать код строго. Динамически типизированные языки, такие как PHP, Python, Javascript и пр. позволяют программисту писать код "как попало", что чревато трудноуловимыми ошибками, формируют "плохие привычки", которые потом будут мешать.
    • Поощряющий декларативный (функциональный) стиль программирования. Функциональный стиль программирования сейчас набирает популярность, так как позволяет писать более сложные программы и проще тестировать их по отдельным частям.
    • Кроссплатформенность. То есть возможность создавать программы для Windows, Linux, MacOS, Android и т.д. Это не столько про язык сам по себе, сколько про его окружение - наличие кроссплатформенных библиотек и инструментов для разработки.
    • Востребованность. Ну тут все просто - учить, например, Паскаль сейчас вряд ли целесообразно - реальную разработку на нем практически не ведут. Поэтому лучше изучать что-то с чем потом будешь сталкиваться на практике (в чужих проектах) и с которым легче будет найти единомышленников чтобы совместно разрабатывать большие проекты. И, в перспективе, строить карьеру в этой области.

    Итак, смотрим что у нас есть на этот счет:
    1. C/C++. Статически типизированный и довольно строгий. Очень сложный. На нем можно писать программы в любом стиле, включая метапрограммирование. Кроссплатформенный до жути. Позволяет решать задачи, максимально близко к "железу". Востребован ограниченно. Уникальная ниша - системное программирование и программирование микроконтроллеров. В силу его очень большой сложности - лично я не рекомендую.
    2. Javascript/Typescript. Динамически типизированный (у Typescript есть статическая типизация, но с приколами унаследованными от Javascript). Поддерживает как императивное, так и декларативное программирование. В первую очередь предназначен для браузеров, хотя сейчас есть кроссплатформенная платформа node.js. Востребован в первую очередь на фронте. Так что к нему стоит сразу присоединять в плане обучения HTML/CSS и какой-нибудь фронтовый фреймворк: Angular/React/Vue и т.п. Также пригоден для написания бэкэнда (node.js), десктопных приложений (Electron), мобильных приложений (React Native). Перспективное направление, но лично я не рекомендовал бы как первый язык из-за определенного бардака в экосистеме. В этом направлении легко нахвататься "плохих привычек".
    3. С#. Статически типизированный, поддерживает декларативное программирование, имеет реализацию для Linux (Mono), но в целом заточен на Windows. Вполне востребован, в частности используется в Unity (движок для разработки игр). Насчет него не имею личного мнения, так как не использую в своей работе.
    4. Java. Статически типизированный, поддерживает декларативное программирование, запускается на всем где есть JVM (включая Android). Write once, run anywhere. Востребован в основном в суровом энтерпрайзе, в больших проектах для серьезного бизнеса. Также применяется в вебе.
    5. Kotlin. Улучшенная Java, разработка фирмы jetBrains. Статически типизированный, очень хорошо поддерживает декларативное программирование. Позволяет легко писать асинхронный код (корутины). Запускается там же где и Java (так как использует ту же JVM), плюс имеет возможность компиляции в JavaScript и в native код для Windows/Linux/MacOS. Kotlin для JVM - вполне зрелое решение, Kotlin Multiplatform - пока еще нет, но быстро развивается. Является официальным языком для разработки под Android. Востребован пока не очень (в основном в области мобильной разработки), но его популярность растет и он начинает теснить Java в её традиционном сегменте. В перспективе может стать языком способным охватить большую часть сфер прикладного программирования: backend, frontend, десктопные и мобильные приложения. На мой взгляд - перспективно.
    6. Scala. Еще одна улучшенная Java. Статически типизированный, очень хорошо поддерживает декларативное программирование. Кроссплатформенный как и Java (сейчас вроде появился компилятор в JS, как и Котлина). Сложный. Очень легко написать конструкции в которых "без поллитры не разберешься". В силу сложности востребован мало. Есть уникальные фичи, но не так много по сравнению с Котлином (большая часть реально востребованных фич Скалы в Котлине есть). Ознакомиться в перспективе стоит, рекомендовать как основной язык не буду.
    7. Haskell. Статически типизированный, декларативный язык (не просто поддерживает декларативное программирование - на нем сложно писать иначе). Кроссплатформенный. Востребован в специфических областях. С моей точки зрения - король функционального программирования и в силу этого сложный (математические абстракции в полный рост). Ознакомиться также стоит, просто чтобы почувствовать всю мощь функционального программирования - мозг переворачивает очень хорошо и позволяет глубже понимать другие языки. Как основной язык - рекомендовать не буду.
    8. Python. Динамически типизированный, поддерживает декларативное программирование, кроссплатформенный. Вполне востребован в вебе, в научных исследованиях (нейросети). Опыта работы с ним имею мало, но рекомендовать бы не стал из-за динамической типизации.
    9. PHP. Динамически типизированный, поддерживает декларативное программирование, кроссплатформенный. Весьма востребован, но практически только в вебе (разработка сайтов). Очень низкий порог вхождения, из-за чего очень много плохого кода (хотя сейчас появились достойные фреймворки - Symfony, Laravel, Doctrine и т.д.). Как язык для изучения - не рекомендую.

    Конечно есть и другие языки, которые я не упомянул в силу того что не знаком (или плохо знаком) с ними.
    Из приведенного списка я бы в первую очередь выделил C#, Typescript, Kotlin. Мой личный выбор на данном этапе карьеры - Котлин, но думать, сравнивать и выбирать, разумеется, вам.

    Еще в перспективе стоит познакомиться с такой темой как СУБД и язык запросов SQL. В вебе, как я уже писал, пригодится HTML/CSS. Ну и далее конкретные специфичные вещи, подбираемые уже под конкретную задачу.

    Теперь о книгах. Книги по языкам рекомендовать не буду. Но назову несколько книг, которые, по моему мнению, обязательно стоит прочитать любому программисту:
    1. Э. Хант, Д. Томас. Программист-прагматик
    2. Р. Мартин. Чистый код.
    3. По мере набора опыта: Р. Мартин. Чистая архитектура
    4. При желании стать профессиональным программистом: Р. Мартин. Идеальный программист
    5. Сложная, но тем не менее умная книга: С. Макконнелл. Совершенный код

    Это то что пригодится в любом случае. А дальше - все зависит от выбранного языка и области его использования.
    Ответ написан
    12 комментариев
  • Какой дистрибутив Linux подойдет для рабочей станции?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ну гента чем не устраивает? Ну, за исключением игр, конечно - игры в линухе это что-то запредельное. Номальная игра все равно не запустится, а для игры десятилетней давности достаточно VB с виндой.
    Binary-based с возможностью сборки не бывает. Бывает либо binary-based, либо source-based с возможностью установки binary packages - как в генте и FreeBSD. Binary-based - это только binary-based, даже самостоятельная сборка вручную ему противопоказана, ибо ломает список установленного софта.

    Посоветованный выше Calculate Linux - это "русская гента", одобренный Минсвязью русскоязычный Gentoo-based дистриб. Причем, управлять им можно как специфичными cl-based утилитами (сl - это от слова Calculate), так и обычными гентовскими.

    echo "FEATURES="getbinpkg" >> /etc/portage/make.conf/custom

    и гента перестает собирать пакет из исходников, если опиции сборки твой машины и хоста, на котором он был собран, не отличаются.
    Но я однажды напоролся на косяк, когда после пересборки glibc бинарные пакеты отказались запускаться и теперь первое, что я вписываю - это отключение getbinpkg :)
    Ответ написан
    Комментировать
  • Как пробросить tagged trunk vlan в гостевую машину hyper-v?

    vesper-bot
    @vesper-bot
    Любитель файрволлов
    ВМ что, роутер? Если да, то можно порт свитча перевести в trunk, иначе ставите vlan id и получаете на ВМ нетегированные пакеты из настроенного vlan. Порт перевести в транк из гуя не получится (или не знаю как, но вроде нет настроек), из powershell можно использовать коммандлет Set-VMNetworkAdapterVlan у которого есть и trunk и native vlan и allowed vlan настройки.
    Ответ написан
    Комментировать
  • Нужно ли в виртуалках создавать LVM, если я захочу увеличить объем диска?

    vasilyevmn
    @vasilyevmn
    DevOps
    Совет от человека который имеет под управлением 4 кластера на proxmox.
    Обязательно делайте LVM.
    Избавит в будущем от проблем.
    Как писали выше, докидываете в ВМ например 50G и просто в виртуалке делаете, что-то аля:

    parted /dev/sda
    resizepart 3
    pvresize /dev/sda3
    lvextend -l+100%FREE -r /dev/mapper/main-root

    Делается все на ходу за 2 минуты без остановки ВМ.
    Ответ написан
    2 комментария