Что мы делаем в IT
383 subscribers
138 photos
1 video
1 file
185 links
Решение практических задач, возникающих при работе администратора ПК
Download Telegram
Контейнерим без всяких Dockerfile.
Создаём контейнер docker compose и запускаем в нём команды:
services:
my-service:
image: alpine
volumes:
- ./init.sh:/init.sh
command:
- sh
- -c
- |
touch /app/file.txt
echo "Hello" >> /app/file.txt
tail -f /dev/null
/init.sh

#linux #docker #compose #bash
Узнаём про GitHub Actions.
Это такая штука, которая работает похоже на Docker Compose, запускается на серверах гитхаба.
Можно запускать по разным триггерам и что-то там исполнять.
Как-то так:
Регистрируемся на GitHub.
Создаём репозиторий.
Грузим туда свои скрипты.
Создаём файлик .github/workflows/action.yml с нужными нам командами.
Он будет где-то как-то запускаться и что-то делать.
Выдуманный пример:
name: пишу_что_хочу

on:
schedule:
- cron: "0 0 * * *"

jobs:
my_job:
runs-on: ubuntu-latest
steps:
- name: делаю_что_хочу
run: |
apt update && apt-upgrade -y
apt install python3 -y
chmod +x ./my_script1.sh | ./my_script1.sh
python3 ./send_telegramm.sh "OK"

Есть ограничения.
#linux #github #actions #yml #schedule #cron #bash
Пляшем с бубном вокруг микротиков.
Имеем:
MikroTik: CRS510-8XS-2XQ (ROS 7.17) х2
Сетевухи: Intel E810-XXV на сервере с Debian 12 х2
DAC патчкордики на 25G: XS+DA0003

Берём патч-корд, соединяем 2 сервера между собой - линк 25 Гбит
Берём этот-же патч-корд, соединяем 2 микротика между собой - линк 25 Гбит
Берём этот-же патч-корд, соединяем сервер и микротик - линка вообще нет 🤦

Обновление микротиков/прошивок/драйверов ничего не меняет 🤦

В итоге помогает настройка "FEC mode" (Forward Error Correction) на интерфейсе микротика.
Можно ставить fec91 (лучше) или fec74, без разницы, главное не auto и не off.
По умолчанию auto и оно как-то не может согласоваться...
#mikrotik #lan #sfp #dac #ethernet #fec #E810 #switch
Создаём резервную копию сайта, к хостингу которого есть доступ по SSH.
На хостинге нужно добавить ключи и создать файл private/.my.cnf:
[mysqldump]
password=PAROL

Скрипт резервного копирования:
#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
DAY=`date +%Y-%m-%d`

ssh -p8228 -i .ssh/id_rsa akkauntname@akkauntname.xosting.ru 'tar -cjf - httpdocs/' > /mnt/backup/site_httpdocs_${DAY}.tar.bz2
ssh -p8228 -i .ssh/id_rsa akkauntname@akkauntname.xosting.ru 'mysqldump --defaults-extra-file=private/.my.cnf -h akkauntname.mysql.xosting.ru -u akkauntname --all-databases' > /mnt/backup/site_mysql_${DAY}.dump

#linux #backup #web #site #hosting #ssh #tar #mysqldump #httpdocs #www
Настраиваем агрегирование каналов.
Это объединение нескольких сетевых карт в один канал связи.
Называется LAG (Link Aggregation) или bonding.
Должно поддерживаться (и тоже быть настроено) на коммутаторе.
Со стороны Debian настраиваем как-то так:
Устанавливаем что надо:
apt install bridge-tools ifenslave vlan

Подключаем модуль:
echo "8021q" >> /etc/modules
modprobe 8021q

Пишем конфиг сети:
vim /etc/network/interfaces
auto eno1
iface eno1 inet manual

auto eno2
iface eno2 inet manual

auto bond0
iface bond0 inet manual
bond-slaves eno1 eno2
bond-primary eno1
bond-miimon 100
bond-downdelay 300
bond-updelay 700
bond-mode 802.3ad
bond-xmit-hash-policy layer2+3
bond-lacp-rate 1

auto br_LAN
iface br_LAN inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports bond0
bridge_stp off
bridge_fd 0

Можно ещё VLAN добавить:
auto bond0.10
iface bond0.10 inet manual

auto br_VLAN10
iface br_VLAN10 inet manual
address 10.10.1.100
netmask 255.255.255.0
gateway 10.10.1.1
bridge_ports bond0.10
bridge_stp off
bridge_fd 0

Со стороны коммутатора объединяем порты в LAG.
Получаем скорость соединения, равную сумме скороcтей портов.
#linux #network #interfaces #bond #bonding #lag #eth #bridge
Управляем частотой процессора.
Включать и выключать ядра уже умеем.
А ещё можно частоту ограничивать.
Устанавливаем:
apt install cpupower -y

Задаём минимальную частоту 3 Ггц, а максимальную 4 Ггц на все ядра:
for i in `seq \`nproc --all\``; do (cpufreq-set -c `expr $i - 1` -d 3000000 -u 4000000) done;

#linux #cpu #cpupower #cpufreq
Тестируем overhead ввода/вывода от QEMU-KVM.
По CPU разница незначительна, по этому тестируем IO.
Железо:
Supermicro X11SRM-VF
Intel(R) Xeon(R) W-2255 CPU @ 3.70GHz
256 Гб - Samsung M393AAG40M32-CAE DDR4 3200 MT/s
960 Гб - Intel(R) SSDPF2KX960HZ

🐧 Debian 12 без виртуализации.
Дисковые операции:
fio --loops=3 --size=4000m --filename=/root/fiotest.tmp --stonewall --ioengine=libaio --direct=1 --name=Seqread --bs=1m --rw=read --name=Seqwrite --bs=1m --rw=write --name=512Kread --bs=512k --rw=randread --name=512Kwrite --bs=512k --rw=randwrite --name=4Kread --bs=4k --iodepth=1 -rw=randread --name=4Kwrite --bs=4k --iodepth=1 -rw=randwrite --name=4kQD32read --bs=4k --iodepth=32 --rw=randread --name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite
...
Run status group 0 (all jobs):
READ: bw=2088MiB/s (2189MB/s), 2088MiB/s-2088MiB/s (2189MB/s-2189MB/s), io=11.7GiB (12.6GB), run=5747-5747msec
Run status group 1 (all jobs):
WRITE: bw=1631MiB/s (1710MB/s), 1631MiB/s-1631MiB/s (1710MB/s-1710MB/s), io=11.7GiB (12.6GB), run=7359-7359msec
Run status group 2 (all jobs):
READ: bw=954MiB/s (1001MB/s), 954MiB/s-954MiB/s (1001MB/s-1001MB/s), io=11.7GiB (12.6GB), run=12575-12575msec
Run status group 3 (all jobs):
WRITE: bw=1630MiB/s (1709MB/s), 1630MiB/s-1630MiB/s (1709MB/s-1709MB/s), io=11.7GiB (12.6GB), run=7362-7362msec
Run status group 4 (all jobs):
READ: bw=52.2MiB/s (54.7MB/s), 52.2MiB/s-52.2MiB/s (54.7MB/s-54.7MB/s), io=11.7GiB (12.6GB), run=230074-230074msec
Run status group 5 (all jobs):
WRITE: bw=173MiB/s (182MB/s), 173MiB/s-173MiB/s (182MB/s-182MB/s), io=11.7GiB (12.6GB), run=69182-69182msec
Run status group 6 (all jobs):
READ: bw=1240MiB/s (1300MB/s), 1240MiB/s-1240MiB/s (1300MB/s-1300MB/s), io=11.7GiB (12.6GB), run=9677-9677msec
Run status group 7 (all jobs):
WRITE: bw=613MiB/s (642MB/s), 613MiB/s-613MiB/s (642MB/s-642MB/s), io=11.7GiB (12.6GB), run=19591-19591msec
...

Доступ к RAM:
sysbench memory --memory-block-size=1K --memory-total-size=128G run
...
82240.97 MiB transferred (8223.02 MiB/sec)
...

Устанавливаем QEMU-KVM
🐧 создаём VM с той-же Debian 12:
128 Гб - RAM
200 Гб - NVME LVM Virtio
20 ядер CPU (все)
Дисковые операции:
...
Run status group 0 (all jobs):
READ: bw=1776MiB/s (1863MB/s), 1776MiB/s-1776MiB/s (1863MB/s-1863MB/s), io=11.7GiB (12.6GB), run=6755-6755msec
Run status group 1 (all jobs):
WRITE: bw=1545MiB/s (1620MB/s), 1545MiB/s-1545MiB/s (1620MB/s-1620MB/s), io=11.7GiB (12.6GB), run=7768-7768msec
Run status group 2 (all jobs):
READ: bw=684MiB/s (717MB/s), 684MiB/s-684MiB/s (717MB/s-717MB/s), io=11.7GiB (12.6GB), run=17547-17547msec
Run status group 3 (all jobs):
WRITE: bw=1237MiB/s (1297MB/s), 1237MiB/s-1237MiB/s (1297MB/s-1297MB/s), io=11.7GiB (12.6GB), run=9698-9698msec
Run status group 4 (all jobs):
READ: bw=34.5MiB/s (36.1MB/s), 34.5MiB/s-34.5MiB/s (36.1MB/s-36.1MB/s), io=11.7GiB (12.6GB), run=348082-348082msec
Run status group 5 (all jobs):
WRITE: bw=114MiB/s (120MB/s), 114MiB/s-114MiB/s (120MB/s-120MB/s), io=11.7GiB (12.6GB), run=104967-104967msec
Run status group 6 (all jobs):
READ: bw=870MiB/s (912MB/s), 870MiB/s-870MiB/s (912MB/s-912MB/s), io=11.7GiB (12.6GB), run=13797-13797msec
Run status group 7 (all jobs):
WRITE: bw=741MiB/s (777MB/s), 741MiB/s-741MiB/s (777MB/s-777MB/s), io=11.7GiB (12.6GB), run=16185-16185msec
...

Доступ к RAM:
  71862.74 MiB transferred (7183.35 MiB/sec)

Итого:
Явно есть снижение производительности, местами даже больше 10%
#linux #qemu #kvm #benchmark #fio #sysbench #vm #hypervisor
А теперь Windows.
🪟 создаём в QEMU-KVM VM с Windows Server 2022 Std:
128 Гб - RAM
200 Гб - NVME LVM Virtio
20 ядер CPU (все)
Дисковые операции (CrystalDiskMark 3.0.4):
...
Sequential Read : 1490.866 MB/s
Sequential Write : 1627.465 MB/s
Random Read 512KB : 670.195 MB/s
Random Write 512KB : 1242.653 MB/s
Random Read 4KB (QD=1) : 16.159 MB/s [ 3945.1 IOPS]
Random Write 4KB (QD=1) : 24.455 MB/s [ 5970.3 IOPS]
Random Read 4KB (QD=32) : 438.947 MB/s [107164.9 IOPS]
Random Write 4KB (QD=32) : 469.231 MB/s [114558.3 IOPS]
...

Доступ к RAM (первый попавшийся https://www.techspot.com/downloads/6767-gfx-memory-speed-benchmark.html):
Write: 7812 MB/s
Read: 7094 MB/s

🪟 Всё форматируем и ставим на железо Windows Server 2022 Std.
Дисковые операции:
...
Sequential Read : 1345.191 MB/s
Sequential Write : 1820.444 MB/s
Random Read 512KB : 863.656 MB/s
Random Write 512KB : 1779.349 MB/s
Random Read 4KB (QD=1) : 54.113 MB/s [ 13211.3 IOPS]
Random Write 4KB (QD=1) : 295.387 MB/s [ 72116.1 IOPS]
Random Read 4KB (QD=32) : 796.202 MB/s [194385.2 IOPS]
Random Write 4KB (QD=32) : 607.659 MB/s [148354.2 IOPS]
...

Доступ к RAM:
Write: 6968 MB/s
Read: 9425 MB/s

Итого:
Некоторые параметры (по тестам) быстрее в VM 🤷
#windows #qemu #kvm #benchmark #CrystalDiskMark #vm #hypervisor
А теперь 1С.
Тест Гилёва.
На виртуалке c Windows Server 2022 Std (которая на Debian):
1C 8.3.20.2180
MSSQL 2022
TPC = 11.31
G1C:
размер строки: 448
макс скорость 1 поток: 56839
рекомендуемое количество пользователей: 161
макс скорость: 421417

Windows Server 2022 Std на железе:
1C 8.3.20.2180
MSSQL 2022
TPC = 49.5
G1C:
размер строки: 496
макс скорость 1 поток: 150999
рекомендуемое количество пользователей: 77
макс скорость: 425403


Виртуализация позволяет добавить больше пользователей в 1С 😅
#windows #qemu #kvm #1c #gilev #benchmark #CrystalDiskMark #vm #hypervisor
Связываем подсети с MTU 1500 и подсети с MTU 9000 (Jumbo Frames) на MikroTik.
Нужно применить политику change-mss (Maximum Segment Size) к chain forward:
/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=1460 passthrough=yes comment="Clamp MSS to 1460"

И разрешить ICMP Fragmentation Needed:
/ip firewall filter add chain=forward protocol=icmp icmp-options=4:0 action=accept comment="Allow Fragmentation Needed"

И весь трафик, который будет проходить через микротик, будет иметь MSS 1460 (MTU 1500).
А внутри своих подсетей устройства будут общаться по своему MTU.
#mikrotik #lan #network #mtu #mss #mangle
Передаём текст из консоли на смартфон через QR-code.
Вдруг понадобится подключиться по IPMI к серверу на Linux через браузер в RDP и из Console Redirection передать конфиг на смартфон...
Для этого на сервере нужно установить qrencode:
apt install -y qrencode

и сгенерировать код из нужного нам файла:
qrencode -t ansiutf8 < /etc/hosts

На Andriod нужно приложение, которое покажет содержимое QR-кода, например SecScanQR (https://f-droid.org/ru/packages/de.t_dankworth.secscanqr/).
Оттуда код сканируем, содержимое копируем и т.д.
Ещё есть ПО для передачи чего угодно через QR, правда не в консоли, а в web https://github.com/LucaIaco/QRFileTransfer
#linux #qrencode #android #secscanqr
Тестируем скорость всяких SSD и NVME.
Используем CrystalDiskMark 3.0.4 x64 (C) 2007-2015 hiyohiyo

Intel Optane DC P4800X SSDPE21K750
           Sequential Read :  2121.302 MB/s
Sequential Write : 1979.068 MB/s
Random Read 512KB : 1890.932 MB/s
Random Write 512KB : 1756.941 MB/s
Random Read 4KB (QD=1) : 59.171 MB/s [ 14446.1 IOPS]
Random Write 4KB (QD=1) : 136.661 MB/s [ 33364.4 IOPS]
Random Read 4KB (QD=32) : 989.891 MB/s [241672.7 IOPS]
Random Write 4KB (QD=32) : 776.843 MB/s [189659.0 IOPS]

Test : 1000 MB [D: 0.0% (0.2/698.6 GB)] (x5)
Date : 2025/02/06 11:27:53
OS : Windows Server Server Standard (full installation) [10.0 Build 20348] (x64)

Intel D5-P5530 SSDPF2KX960HZ
           Sequential Read :  1270.424 MB/s
Sequential Write : 1799.990 MB/s
Random Read 512KB : 787.261 MB/s
Random Write 512KB : 1800.055 MB/s
Random Read 4KB (QD=1) : 29.749 MB/s [ 7263.0 IOPS]
Random Write 4KB (QD=1) : 127.534 MB/s [ 31136.3 IOPS]
Random Read 4KB (QD=32) : 891.028 MB/s [217536.1 IOPS]
Random Write 4KB (QD=32) : 626.764 MB/s [153018.5 IOPS]

Test : 1000 MB [C: 7.7% (69.0/894.1 GB)] (x5)
Date : 2025/02/06 11:33:11
OS : Windows Server Server Standard (full installation) [10.0 Build 20348] (x64)

Intel D3-S4520 SSDSC2KB019TZ
           Sequential Read :   482.400 MB/s
Sequential Write : 450.226 MB/s
Random Read 512KB : 322.773 MB/s
Random Write 512KB : 409.941 MB/s
Random Read 4KB (QD=1) : 15.327 MB/s [ 3741.9 IOPS]
Random Write 4KB (QD=1) : 19.211 MB/s [ 4690.2 IOPS]
Random Read 4KB (QD=32) : 267.589 MB/s [ 65329.2 IOPS]
Random Write 4KB (QD=32) : 317.451 MB/s [ 77502.7 IOPS]

Test : 1000 MB [E: 0.0% (0.2/1788.5 GB)] (x5)
Date : 2025/02/06 11:49:45
OS : Windows Server Server Standard (full installation) [10.0 Build 20348] (x64)

KingSpec NX-128
           Sequential Read :   980.741 MB/s
Sequential Write : 543.515 MB/s
Random Read 512KB : 688.477 MB/s
Random Write 512KB : 538.312 MB/s
Random Read 4KB (QD=1) : 9.512 MB/s [ 2322.3 IOPS]
Random Write 4KB (QD=1) : 71.670 MB/s [ 17497.5 IOPS]
Random Read 4KB (QD=32) : 218.762 MB/s [ 53408.7 IOPS]
Random Write 4KB (QD=32) : 173.883 MB/s [ 42451.8 IOPS]

Test : 1000 MB [C: 75.4% (75.5/100.1 GB)] (x5)
Date : 2025/02/06 11:47:10
OS : Windows 10 Enterprise [10.0 Build 22621] (x64)

Patriot Burst 128ГБ
           Sequential Read :   269.418 MB/s
Sequential Write : 293.103 MB/s
Random Read 512KB : 235.615 MB/s
Random Write 512KB : 284.295 MB/s
Random Read 4KB (QD=1) : 22.093 MB/s [ 5393.9 IOPS]
Random Write 4KB (QD=1) : 61.822 MB/s [ 15093.3 IOPS]
Random Read 4KB (QD=32) : 215.859 MB/s [ 52699.9 IOPS]
Random Write 4KB (QD=32) : 108.392 MB/s [ 26462.8 IOPS]

Test : 1000 MB [G: 84.9% (84.9/100.0 GB)] (x5)
Date : 2025/02/06 12:18:28
OS : Windows 10 Enterprise [10.0 Build 22621] (x64)

#hardware #ssd #nvme #optane #benchmark #CrystalDiskMark
Отключаем энергосбережение на сервере для 1С.
Сервер (с Intel Optane):
2 × Intel Gold 6526Y
16 × DDR5 32GB RDIMM 4800 2Rx8
Далее -> далее -> готово -> тест Гилёва:
TPC: 23.26
G1C:
Размер строки (КБ): 736
Макс. скорость 1 поток (КБ/с): 44,673
Рекомендуемое количество пользователей (примерно): 56
Максимальная скорость (КБ/с): 130,762

Долой энергосбережение -> тест Гилёва:
TPC: 70.42 👀
G1C:
Размер строки (КБ): 496
Макс. скорость 1 поток (КБ/с): 165,994
Рекомендуемое количество пользователей (примерно): 42 🤦‍♂️
Максимальная скорость (КБ/с): 416,640

#hardware #1c #benchmark
Копируем очень много мелких файлов в windows.
Почему-то стандартным копированием это очень долго.
Хотя сами microsoft уже неизвестно когда изобрели утилиту RichCopy для быстрого многопоточного копирования и даже с GUI.
На столько давно, что теперь скачать можно с архива.
Работает отлично, но пользователям решили оставить последовательное копирование, пусть страдают...
#windows #copy #RichCopy #microsoft
Оборачиваем трафик OpenVPN в SSH.
Нужно:
OpenVPN сервер по протоколу TCP на Linux.
Доступ к серверу по SSH
OpenVPN for Android
ConnectBot
Инструкция с картинками:
В конфиге меняем IP сервера на:
remote 127.0.0.1 1194

В приложении OpenVPN for Android добавляем ConnectBot в список исключений
В приложении ConnectBot делаем проброс порта с localhost 1194 на сервер 1194
#linux #android #openvpn #connectbot #ssh
Убираем почтовые ящики из карантина Exchange.
На сервере кончилось место...
И некоторые ящики Exchange попали в карантин 🤷
Для удаления ящиков из карантина делаем что-то такое:
Подключиться на сервер с ролью mailbox, открыть реестр, зайти по пути:
HKLM\SYSTEM\CCS\Services\MSexchangeIS\{Servername}\Private-{dbguid}\Quarantined Mailboxes\

и удалить {Mailbox guid}
После этого необходимо перезапустить службу Microsoft Exchange Information Store.

Что бы узнать {guid} почтового ящика, необходимо выполнить команду
Get-MailboxStatistics -identity "<mail>" | FL

Что бы узнать {guid} почтовой базы, необходимо выполнить команду
Get-MailboxDatabase -Identity "<database name>" | fl GUID

#windows #exchange #regedit #guid #mailbox
Скачиваем Windows ISO.
Вот тут https://massgrave.dev/genuine-installation-media
Без всяких там "далее -> далее -> готово", а по прямой ссылке с микрософта.
Можно сразу вставлять нужную в "Download from URL" в Proxmox VE.
#windows #iso #url #download #wget #curl
Настраиваем MLAG (Multi-chassis Link Aggregation Group) на MikroTik.
Для отказоустойчивой отказоустойчивости.
Конфиг на серверах примерно такой https://t.me/everydayanykey/431
Конфиг на микротиках примерно такой:
/interface bridge
add name=br_SRV vlan-filtering=yes
/interface ethernet
set [ find default-name=sfp28-1 ] fec-mode=fec91 l2mtu=9084 mtu=9000
set [ find default-name=sfp28-2 ] fec-mode=fec91 l2mtu=9084 mtu=9000
set [ find default-name=sfp28-3 ] fec-mode=fec91 l2mtu=9084 mtu=9000
set [ find default-name=sfp28-7 ] l2mtu=9084 mtu=9000
set [ find default-name=sfp28-8 ] l2mtu=9084 mtu=9000
/interface vlan
add interface=br_SRV name=vlan1 vlan-id=1
add interface=br_SRV name=vlan10 vlan-id=10
add interface=br_SRV name=vlan99 vlan-id=99
/interface bonding
add mode=802.3ad mtu=9000 name=MLAG_Peer slaves=sfp28-8,sfp28-7 transmit-hash-policy=layer-2-and-3
add mlag-id=9 mode=802.3ad name=ether1_po9 slaves=ether1,sfp28-6 transmit-hash-policy=layer-2-and-3
add mlag-id=1 mode=802.3ad mtu=9000 name=sfp28-1-po1 slaves=sfp28-1 transmit-hash-policy=layer-2-and-3
add mlag-id=2 mode=802.3ad mtu=9000 name=sfp28-2-po2 slaves=sfp28-2 transmit-hash-policy=layer-2-and-3
add mlag-id=3 mode=802.3ad mtu=9000 name=sfp28-3-po3 slaves=sfp28-3 transmit-hash-policy=layer-2-and-3
/interface bridge mlag
set bridge=br_SRV peer-port=MLAG_Peer
/interface bridge port
add bridge=br_SRV interface=MLAG_Peer pvid=99
add bridge=br_SRV interface=ether1_po9 pvid=10
add bridge=br_SRV interface=sfp28-1-po1 pvid=10
add bridge=br_SRV interface=sfp28-2-po2 pvid=10
add bridge=br_SRV interface=sfp28-3-po3 pvid=10
/interface bridge vlan
add bridge=br_SRV tagged=MLAG_Peer untagged=ether1_po9,sfp28-1-po1,sfp28-2-po2,sfp28-3-po3 vlan-ids=1
add bridge=br_SRV tagged=br_SRV untagged=MLAG_Peer vlan-ids=99
add bridge=br_SRV tagged=MLAG_Peer,br_SRV vlan-ids=10
/ip address
add address=10.99.99.1/30 interface=vlan99 network=10.99.99.0
add address=192.168.1.1/24 interface=vlan10 network=192.168.1.0

#mikrotik #lan #network #bond #lag #mlag #aggregation
daffin-ru-proxmox-proxmox.pdf
3.9 MB
Настраиваем кластер Proxmox.
Инструкция https://daffin.ru/proxmox/proxmox/
В общем клац, клац, далее, далее, готово.
#linux #proxmox #cluster #ha #ceph