LINUX.ORG.RU

Сообщения ShkiperDesna

 

Что выбрать: RAID или LVM?

Форум — Linux-hardware

Здравствуйте! Мне нужно из множества мелких разных HDD (100-1000 ГБ) собрать одно удобное хранилище (а то перебрасывать данные с одного диска на другой, потому что один проект перестал вмещаться на одном диске и нужно для него что-то «сдвинуть» на другой…достало). Так как диски разношёрстные, шанс того, что хоть один да крякнет, довольно высок, следовательно нужно дублирование.

Вот к чему я пока пришёл: все диски нарезать на разделы по 100 ГБ, сделать из них дублирующие пары (чтобы разделы из каждой пары были на разных физических дисках) и тогда объединить их в один большой диск. Вопрос в том, как это провернуть: RAID 10 или RAID 1 + LVM объединение или LVM зеркалирование + LVM объединение. Так как мне наверняка потом придётся ещё добавлять ещё дисков (ребилдить массив) и часто, то, как я понимаю, RAID 10 будет не лучшим решением. Но вот что лучше: зеркалирование на RAID или зеркалирование на LVM — я не знаю.

В любом случае всё будет производиться программно. Небольшая разница в скорости между RAID и LVM меня не интересует (скорее всего будет упор в скорость USB 2, но для моих нужд и этого хватит с головой). Вопрос в надёжности этих вариантов решения и удобства в настройке.

Если кто-то имел опыт работы и с тем, и с другим, то буду рад любым советам.

 , ,

ShkiperDesna
()

Как тестировать stateful функции и не повеситься?

Форум — Development

Здравствуйте! Вопрос, собственно, как тестировать stateful функции? А то как тестировать stateless функции я знаю: вот входные данные, вот результат — и пусть тестировочный фреймворк сверяет. Но вот как тестировать функции, которые должны обращаться к бд или общаться с клиентом по сети? Как удостовериться, что функция сделает именно то, что мне нужно, а не, допустим, дропнет таблицу или ещё что? У меня не особо сложное веб-приложение, но чтобы удостовериться, что всё работает как надо, я часами сижу в дебаг моде и вручную проверяю каждый запрос и каждую переменную. И это я пока не вводил многопоточку, хотя планирую, но пока просто боюсь это дебажить.

Пж, киньте в меня мануалом по написанию автотестов для stateful. Я пытался загуглить, но мне попадаются только статьи по типу «тестировать важно, но как это делать мы не скажем». Любому совету буду благодарен.

P.S. Программирую на C++ с использованием библиотеки Boost.

 , , ,

ShkiperDesna
()

Как измерить время выполнения программы в тиках, не меняя её?

Форум — Development

Здравствуйте! Мне нужно измерить время выполнения программы для очень критической по времени среде. Но сами измерения выполняются на более мощном тестовом стенде.

Сперва я подумал на linux-утилиту time, что было бы идеально, если бы она показывала время в тиках, но она показывает время в секундах с точностью до тысячных, а поскольку на тестовом стенде процессор в несколько ГГц, даже изменение в несколько тысяч тиков будет сложно отследить таким образом.

Тогда я подумал, что можно было бы отредактировать программу, чтобы изменить точку входа на обёрточную функцию, которая сама вызовет main и зафиксирует точное время в тиках до и после выполнения main. Но с этим есть пару проблем: так не получится рассчитать время инициализации глобальных переменных и объектов классов; я не знаю, как отделить время user и sys от real (всё же на тестовом стенде много процессов); да и не факт, что компилятор что-то не переделает по другому при наличии доп. кода и другой точки входа, что повлияет на время выполнения.

Кто-нибудь знает, как замерять время в тиках?

 ,

ShkiperDesna
()

Какие нюансы стоит учитывать при скачивании сурсов ubiquity?

Форум — Linux-install

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

Но как я понимаю, подобного справочника для ubuntu нет, придётся читать сурсы, и вот в чём вопрос: достаточно ли просто скачать сурсы ubiquity определённой версии или нужно скачать ещё что-то сверху? В смысле, ubuntu ж бывает разных версий, а также ubiquity использует множество форков убунты, по типу mint, lubuntu, elementary и ещё куча сверху. Я имею ввиду, возможно разные дистро используют один и тот же установщик, но детали о системе, которую он должен установить, хранятся отдельно, от того их нужно отдельно скачать? Или же разные дистро просто модифицируют ubiquity и мне достаточно скачать сурсы нужной версии?

К слову, мне интересна сейчас Ubuntu 22.04

 ,

ShkiperDesna
()

Почему iperf3 выдаёт скорость 90 Гб/с?

Форум — Admin

Здравствуйте. В общем, нужно было проверить скорость между двумя ПК в одной сети. Я использовал iperf3 и выпал в осадок от шока:

iperf3 -c 192.168.1.103
Connecting to host 192.168.1.103, port 5201
[  5] local 192.168.1.103 port 34812 connected to 192.168.1.103 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  10.1 GBytes  87.2 Gbits/sec    0   3.68 MBytes       
[  5]   1.00-2.00   sec  10.2 GBytes  87.2 Gbits/sec    0   3.68 MBytes       
[  5]   2.00-3.00   sec  10.1 GBytes  86.9 Gbits/sec    0   3.68 MBytes       
[  5]   3.00-4.00   sec  10.2 GBytes  87.2 Gbits/sec    0   3.68 MBytes       
[  5]   4.00-5.00   sec  10.1 GBytes  87.0 Gbits/sec    0   3.68 MBytes       
[  5]   5.00-6.00   sec  10.2 GBytes  87.3 Gbits/sec    0   3.68 MBytes       
[  5]   6.00-7.00   sec  10.2 GBytes  87.5 Gbits/sec    0   3.68 MBytes       
[  5]   7.00-8.00   sec  10.2 GBytes  87.4 Gbits/sec    0   3.68 MBytes       
[  5]   8.00-9.00   sec  10.2 GBytes  87.3 Gbits/sec    0   3.68 MBytes       
[  5]   9.00-10.00  sec  10.2 GBytes  87.5 Gbits/sec    0   3.68 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   102 GBytes  87.3 Gbits/sec    0             sender
[  5]   0.00-10.04  sec   102 GBytes  86.9 Gbits/sec                  receiver

iperf Done.

Я бы понял скорость порядка 1 Гб/с, т.к. многое сделал для качественного соединения, но 90?! Откуда у меня может быть такая скорость? Может, я просто не правильно понял вывод программы, всё же этой утилитой пользуюсь крайне редко.

P.S. На границе с провайдером стоит 1 Гб/с роутер, а ниже него всё подключено через 8-жильные кабеля, 1 Гб/с свичи и точки доступа Aruba IAP-215, т.е. вся домашняя сеть в одном широковещательном домене. В результате у меня стабильные ±500 Мб/с, обещанные провайдером.

P.P.S. Тестирование проводилось через Wi-Fi.

 , ,

ShkiperDesna
()

Почему дрова закрыты?

Форум — Linux-hardware

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

И тут возник вопрос: а почему дрова делают закрытыми? Я бы понял, если бы за дрова брали деньги, или открытие кода создало бы риск, что какие-то платные функции взломают, или ещё что. Но нет, абсолютное большинство дров можно абсолютно бесплатно получить под шинду (в закрытом виде) и компания-производитель ничего не выигрывает и не проигрывает от распространения дров.

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

 , ,

ShkiperDesna
()

Почему e-sim не добавят в каждый телефон простым обновлением ОС?

Форум — Mobile

Здравствуйте! Я человек больше связанный серверами и десктопами, и в мобилах не очень шарю, так что бейте меня «тапками», но с инфой. Просто я подумал, а почему не введут пресловутые e-sim в качестве какого-то модуля Linux или что-то вроде? Я могу ошибаться, но вроде как sim-карты — это простейшие микроконтроллеры с функцией асимметричной подписи для установления связи с мобильным оператором. На что-то подобное способен практически любой браузер, не говоря о чём-то большем. Почему это не внедрят в какой-то модуль и не распространят на все Android и другие мобилы на базе Linux? Есть ли в телефонах, что нынче выпускаются с e-sim что-то особенное, чего в обычных телефонах нету?

 ,

ShkiperDesna
()

Как обучиться логике?

Форум — Talks

Здравствуйте! Моя работа не совсем программист, но программировать умею. И многие друзья-родственники просят обучить их программированию. Обычно я отказываю, но если всё же соглашаюсь, то встречаю проблему, что у многих напрочь отсутствует умение в логику. Даже простые алгоритмы по-типу суммы последовательности целых чисел — мало того, что они не могут до них додуматься, так ещё приходится объяснять по часу, что уж говорить о алгоритмах сложнее… А как сам обучался уже не помню, давно это было…

Может, кто-то знает, как обучиться логике новичку?

Перемещено hobbit из general

 

ShkiperDesna
()

Используется не тот интерфейс при получении IP от DHCP-сервера на CentOS 8

Форум — Admin

Здравствуйте! Пытаюсь настроить DHCP-сервер на CentOS 8 Steam. Поставил ось, настроил статический IP, поставил пакет dhcp-server, вбросил в конфиг

option domain-name    "hara.loc";
option domain-name-servers 8.8.8.8;
default-lease-time 60;
max-lease-time 600;


subnet 192.168.1.0 netmask 255.255.255.0 {
    range dynamic-bootp 192.168.1.128 192.168.1.159;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.254; # да, странный IP для ворот, но таков уж есть
}

выключил DHCP на роутере, переполучаю IP: в GUI настройки сетей на клиенте получил: IP-адрес 192.168.1.128, DNS 8.8.8.8, маршрут по умолчанию 192.168.1.254. Ура. Пытаюсь кое-что загуглить, но страничка не грузится и пишет, что не получилось получить IP-адрес www.google.com. Проверяю:

nslookup www.google.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53

** server can't find www.google.com: SERVFAIL

Думаю, может google отпал, мало ли, проверяю пингом, но получаю такую картину:

ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 169.254.7.246 icmp_seq=1 Destination Host Unreachable
From 169.254.7.246 icmp_seq=2 Destination Host Unreachable
From 169.254.7.246 icmp_seq=3 Destination Host Unreachable
From 169.254.7.246 icmp_seq=4 Destination Host Unreachable

Странно, ведь пишет, что получил IP 192… Ищу этот:

ip a | grep 169.254.7.246 -B2
4: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 0e:c9:ba:2e:78:76 brd ff:ff:ff:ff:ff:ff
    inet 169.254.7.246/16 brd 169.254.255.255 scope link bridge0:avahi

Удалил у бриджа IP командой ip, пробую снова:

ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 169.254.1.79 icmp_seq=1 Destination Host Unreachable
From 169.254.1.79 icmp_seq=2 Destination Host Unreachable
From 169.254.1.79 icmp_seq=3 Destination Host Unreachable
From 169.254.1.79 icmp_seq=4 Destination Host Unreachable

А это ещё что за IP-шник?

ip a | grep 169.254.1.79 -B2
10: vboxnet0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 169.254.1.79/16 brd 169.254.255.255 scope link vboxnet0:avahi

Почему из всех интерфейсов выбирает 169.254…? Когда пробую указать интерфейс, то всё работает отлично

ping -I wlp1s0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.1.128 wlp1s0: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=23.9 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=25.7 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=28.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=24.4 ms

Тогда я выключил сервак с DHCP, включил снова DHCP на роутере, и всё получилось как следует: соединение шло сразу по 192.168.1.254, ничего не висло, в общем, красота. Что такого я не так указал в конфиге, что оно ищет тридесятый маршрут, только не тот, что по DHCP указан?

 ,

ShkiperDesna
()

Не получается добавить беспроводной адаптер в мост

Форум — Admin

Здравствуйте! Мне понадобилось подключить виртуальную машину KVM к хостовой сети, будто мой хостовой комп и гостевая система через некий виртуальный свич включены в одну сеть.

Я написал

sudo brctl addbr bridge0
sudo brctl addif bridge0 enp0s31f6 # enp0s31f6 — это Ethernet-адаптер моего компьютера

А затем в virt-manager выбрал сеть bridge0 для нужной машины.

И это идеально сработало для меня: обе машины (хостовая и гостевая) оказались в одной сети и получали IP из одного DHCP.

Но вот только у меня ноутбук и бòльшую часть времени он подключён по Wi-Fi. Я написал

sudo brctl addif bridge0 wlp0s1 # добавляем беспроводной адаптер в мост

Но в ответ я получил следующее:

can't add wlp1s0 to bridge bridge0: Operation not supported

Кто-нибудь стыкался с подобным? Не подскажете, в какую сторону рыть?

 , , ,

ShkiperDesna
()

Как настроить VPN для некоторых IP-адресов при помощи iptables?

Форум — Admin

Здравствуйте!

( Немного о моей мотивации )

Короче говоря, провайдер мой выполняет блокировку просто по IP-адресам. Вот я и подумал нациганить где-то бесплатный VPN, например SSH-туннель, и настроить брандмауэр таким образом, чтобы запросы, направленные на IP-адреса из определённого списка, переводить на VPN, а всё остальное отправлять обычным образом. А как у счастливого владельца Linux Mint, у меня предустановлен iptables, вот и хочу сделать всё через него.

Я на 99.9% уверен, что идея моя отнюдь не нова и кто-то уже так делал. Но то ли мои запросы в гугл кривые, то ли никто не написал об этом нормальную статью. Если у вас найдётся статейка либо вы можете поделиться небольшой инструкцией, как сделать подобный перевод трафика к определённым IPшкам, буду весьма благодарен.

 , , , ,

ShkiperDesna
()

Как сделать вебморду виртуалке?

Форум — Web-development

Здравствуйте! Есть у меня на домашнем сервере виртуалка (KVM), на ней RDP интерфейс, так что я могу пробиться через NAT при помощи SSH-туннеля и подключиться к ней с линуха без проблем. Но на работе у меня шиндовс, и устроить SSH-туннель сложно и требует доп. софта, который на рабочем компе устанавливать нежелательно.

Следовательно, вопрос: можно ли поднять сервер в домашней сети, который предоставит доступ к RDP-экрану с браузера? (а там за проброс портов на шлюз и за защиту я улажу) Если да, какие средства для этого обычно используются?

 , , ,

ShkiperDesna
()

Как использовать компьютер в качестве микрофона для Android

Форум — Desktop

Тема того, как использовать телефон в качестве микрофона для ПК, исписана до дыр, но вот как напротив использовать ПК в качестве микрофона для телефона я информации не нашёл. Вернее, была кое-какая информация о приложении Google Voice, но из-за региональных ограничений я не смог установить его, а тем более проверить.

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

P.S. Система из Linux Mint 20.3 Cinnamon и Android 10 в исполнении Samsung.

 , ,

ShkiperDesna
()

Почему программ для Mac гораздо больше, чем для Linux?

Форум — Talks

Здравствуйте! Меня уже давно мучает вопрос, почему многие производители ПО имеют версию для Mac, но не имеют версию для Linux? В смысле, Mac OS (Unix) и Linux (GNU), несмотря на «бунтарское» отношение названий, являются практически родственниками. По крайней мере, они между собой ближе, чем к тому же Windows. Так почему куча софта имеют версии для Windows и Mac OS, но не имеют версии для Linux? Я сам конкретно под Mac никогда не разрабатывал, неужто там такая пропасть в адаптации Mac-программы для пингвина?

Перемещено hobbit из general

 , , ,

ShkiperDesna
()

Как отключить запрос пароля для графических sudo приложений

Форум — Desktop

Здравствуйте! Нужно, чтобы при попытке сделать привилегированные действия не запрашивался пароль. Я добавил в sudoers user ALL=(ALL:ALL) NOPASSWD:ALL, но это повлияло только на консоль: при попытке использовать условный GParted всё ещё показывается это окошко с запросом пароля. Можно ли это исправить, или проще сидеть под root?

Система Linux Mint Cinnamon Edition 20.3

P.S. Да знаю я, что делать такие попущения в безопасности несекюрно, а сидеть под root так трижды опасно, но тут человек, который попросту не догадается до действий, что снесут систему, закатал жуткую истерику, ведь нужно было установить программу при помощи Mint’овского графического пакет-менеджера, а пароль (1111) она, видите ли, забыла.

 

ShkiperDesna
()

Как сделать live-образ, с предустановленным ПО

Форум — General

Здравствуйте! Мне часто приходится загружаться с live-образа. Однако, так как для работы мне нужно специфичное ПО, не входящее в базовую конфигурацию (build-essential, vs code, zoom, …), то каждый запуск начинается со скачивания пакетов с браузера и apt update && apt install ... ~/Downloads/*.deb. Вот я и подумал, что можно как-то «вшить» ПО, или сделать свой образ на базе готового, но все мануалы, что я нагуглил – это мануалы по пользованию dd или графических аналогов. Пожалуйста, киньте мануалом, или хоть более подходящим запросом для гугления.

P.S. Я использую Mint Cinnamon.

 , ,

ShkiperDesna
()

Подключение к Windows по SSH. X11

Форум — General

Здравствуйте! Так как мой ноут сгорел, пришлось перебраться на калькулятор более слабую машину. Так как она едва справляется с «офисными» задачами, я подумал, что можно делегировать часть работы на другую машину в локальной сети. Под другой машиной я имею ввиду компьютер на Windows без возможности перевести на Linux.

В общем, есть ли способ открывать графические приложения удалённо (как например при помощи SSH X11Forwarding). Я пробовал использовать это с портированным в компоненты Windows сервером на базе OpenSSH, но уже при добавлении соответствующих директив сервер отказывается запускаться.

 , , ,

ShkiperDesna
()

Почему сложность не удваивается

Форум — Science & Engineering

Почему при складывании сложностей, они не складываются?

Взять например функцию f, со сложностью O(N). Тогда коды

for i in range(5):
    f(n)
f(n)

тоже будут иметь сложности O(N) и O(N). Но при этом второй код будет примерно на 400% быстрее в сравнении с первым. Как по мне, весьма впечатляющее ускорение. А может быть и куда больше. Но сложность вообще игнорирует это.

В то же время, код time.sleep(1e+1000000 ** 1e+1000000 ** 1e+1000000) будет иметь ту же сложность, что и 1 * 1 (то бишь O(1)), но разница во времени выполнения просто огромна.

В чём вообще тогда суть сложности?

 

ShkiperDesna
()

qBittorrent. Раздавать, даже если не скачано полностью

Форум — General

Вот бывает такое, что у тебя есть 99,9% от какой-то раздачи, а последний владелец 100% раздачи вышел из сети. И вот ты мог бы раздавать то, что уже есть, но qBittorrent не будет начинать раздачу, пока все 100% не будут скачаны. Возможно, есть какой-то способ заставить Кьюбея раздавать всё, даже если не скачано?

 , ,

ShkiperDesna
()

Немного флуда о тонких клиентах, смарт-картах и администрировании вообще

Форум — Admin

Здравствуйте. В общем, подумал я о том, что, вместо того, чтобы обслуживать каждую машину по-отдельности, можно всё «серьёзное» оборудование сбить в один мощный сервер, а отдельным пользователям раздать какие-то дешёвки, на вроде Raspberry Pi, для создания тонких клиентов. Идея неплохая, можно сказать, проверенная годами, меньше возни по-поводу каждой отдельной машины, абсолютная взаимозаменяемость клиентских машин и т.д.. Один раз настроил, одну машину обслуживаешь – кайф (пять минут на установить PXE-загрузку на мелкашах + несколько доп. пунктов даже не считаются). Но есть одна маленькая проблема – проблема разграничения доступа. Во-первых, кто-либо мажет, например, запустить майнер или заразить систему вирусом; во-вторых, раз всем так просто пересесть за другой компьютер и войти в свой аккаунт, то почему кто-то другой не может сесть за случайный компьютер и взломать акк директора, например (мы же все знаем, насколько надёжными являются пароли четыре единицы пользователей); а в-третьих, как позволить пользователям устанавливать желаемые пакеты? Ну, с первым проще всего (по крайней мере, в теории): создать для каждого пользователя cgroup с ограничениями по ресурсам и запускать сеансы и прочие процессы из под этих cgroup. Со вторым сложнее, моя идея – добавить на мелкаши по адаптеру для смарт-карт, и настроить систему следующим образом: когда вставляется карта доступа происходит запрос на подписание рандомного токена; проводится проверка на то, чьим ключом был подписан токен; если подписатель опознан, запрашивается пароль (да, дополнительно) (и да, логина не нужно); после авторизации будет проводится регулярные запросы на подписание новых и новых токенов; если токен не был подписан или был подписан другой парой ключей, немедленно производится выход из сеанса пользователя и снижение квоты вычислительных ресурсов cgroup пользователя до нуля. И третье: вместо того, чтобы всем делать общий $PATH, всем сделать по отдельной папке ~/.local/bin и туда хардлинкить всё, что пользователь захочет «установить» себе (разумеется, во имя безопасности, папку создадим под root и без права записи пользователем. Если он захочет установить что-то, он использует API и подключится к сервису (программы разработаем отдельно, возможно замаскируем под apt какой-нибудь или другой известный менеджер пакетов)).

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

 , , ,

ShkiperDesna
()

RSS подписка на новые темы