Файлы блоков LVM/RAID0 будут размещать на 3 типах физических устройств
Шпиндельный диск HDD с интерфейсом SATA
Твердотельное хранилище SSD с интерфейсом SATA
NVME с интерфейсом M2
Для перемещения блоков LVM/RAID0 необходимо остановить VG, удалить виртуальные устройства, перенести файлы, создать устройства, запустить VG по следующему сценарию
Ниже будут показаны три комбинации конфигураций, в каждой конфигурации по два скриншота замеров производительности диска на котором размещёны блоки LVM/RAID0 и замер производительности LVM/RAID0
Первая, самая медленная, конфигурация: здесь блоки raid размещаются на SSD с интерфейсом SATA
средняя скорость чтения с SSD/SATA диска 540Мб/с
Вторая конфигурация: здесь блоки raid размещаются на обычном шпиндельном SATA диске
Средняя скорость чтения SATA 144Мб/с
Последняя, самая быстрая конфигурация: здесь блоки raid размещаются на скоростном NVME установленнам через переходник в слот PCI-Express
Средняя скорость чтения NVME 2,7Гб/м
Вывод: с помощью LVM/Raid можно получить повышение производительности цифрового хранилища.
Получается, можно взять обычный шпиндельный SATA диск, разделить его на 4 раздел, на их основе создать LVM/RAID0 и получить увеличение скорости чтения в несколько раз
даже звучит дико
сводная таблица, в кавычках количество разделов используемых в LVM/RAID0
# перейти в директорию с сертифкатами
cd /usr/local/share/ca-certificates
# скачать корневые сертификаты минцифры РФ
wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt
# обновить список доверенных сертификатов операционной системы
update-ca-certificates --verbose
MSI SPATIUM M480 [S78-440L490-P83] 1Тб nvme PCI-E 4.0 x4 устанавливается в M2_1
11999
устанавливается в M2_1 (процессорный)
Apacer AST280 [AP120GAST280-1] 120 ГБ SATA 3
1398 за 2 штуки
Corsair rm650
AMI BIOS7D42vBA
2022-11-11
Ubuntu 22.04
Из особенностей:
все порты и устройства запускаются из коробки, разумеется для Nvidia необходимо ставить фирменный драйвер
периодически подвисает Wifi, модуль успешно сканирует сети и пытается подключиться, но подключение не происходит. не помогает ни смена Wifi точки, ни смена дистрибутива, какая то авппратная проблема и проявляется периодически, в остальное время Wifi работает
первый слот m2 на материнской плате предназначен только для NVME дисков, обычный SATA3.m2 там работать не будет
система охлаждения сильно избыточная, так как ни каким тестами и стрестестами, а так же их комбинациями не удалось разогреть CPU выше 60 градусов
оперативная память переключается на частоты выше 5Ггц в биосе с помощью XMP профилей
при передачен звука через HDMI если вслушиваться то слышен высокочастотный "призвук"
для данного процессора можно использовать специальные, адаптированные linux-ядра (моложе 5.18), которые будут эффективно управлять распределением нагрузки между производительными ядрам и энергоэффективными, для Ubuntu есть репозитори и скрипт для установких новых ядре, но они отказываются загружаться по причине не соответствия каким то подписями и вообще новые ядра начинают весить более 700Мб
Для наглядности приведу три картики илюстрирующих процесс "оцифровки звука"
на частоте 44,1 килогерца, за одну секунде будет получено данных -- 44100 * ширину слова АЦП/ЦАП, например при ширине АЦП 32 бита, за одну секунду будет получено 172 килобайта данных
на частоте 88,2 килогерца, за одну секунде будет получено данных -- 88100 * ширину слова АЦП/ЦАП, например при ширине АЦП 32 бита, за одну секунду будет получено 344 килобайта данных
на частоте 384 килогерца, за одну секунде будет получено данных -- 384000 * ширину слова АЦП/ЦАП, например при ширине АЦП 32 бита, за одну секунду будет получено 1,5 мегабайта
Соответственно, чем выше частота дискретизации и длиннее шина офицровки, тем больше накапливается данных и тем большего качества записывается или воспроизводится звук, тем больше получаются размеры аудио-файлов и большая нагрузка необходима для обработка такого объёма данных
Последняя картинка наглядно поясняет чем отличается цифровой звук от настоящего
# создаёт виртуальный Диск и отображает имя файла виртуального диска, в моём случае /dev/loop15
# список разделов можно посмотреть вот так sudo fdisk -l /dev/loop15
sudo mount /dev/loop15p2 /mnt
# монтирует второй раздел виртуальный диска в директорую /mnt/
# тут какие то работы с данными образами
В инфраструктуре Flask есть фреймворк flask_restful для реализации Rest API и последние несколько лет там начались проблемы с развитием, в результате чего появилось несколько форков. В частности я решил попробовать построить один проект на flask_restx.
В этой заметке я буду описывать, что из этого вышло и насколько это решение хорошо для использования
С помощью RESTX я реализовал следующие API
авторизация на основе JWT токен
обновление JWT токена с помощью Refresh токента
получение и редактирование профиля пользователя
создание точки загрузки файла
загрука файла частями (chunks)
просмотр списка загруженных файлов
просмотр свойств файла по ID
Выглядит хорошо и лаконично, вот например API получения списка публикаций пользователя
Но если смотреть в целом, то приходится для каждой модели базы писать модель сериализации
А ещё больше напрягло то, что фреймворк просто не предлагает ни какого способа пагинации. То-есть, API легко отдаёт всю выборку, а для того чтобы отдать сред выборки в стиле Django, необходимо руками высчитать total и сломать весь красивый механизм marshal_with
Так же, нет интеграции со sqlalchemy, конечно можно найти способ
но как по мне конструкция ModelX.query.filter(**kwargs).all() выглядит так себе
docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient USERNAME > USERNAME.ovpn
И всё, можно пользоваться
Чтобы в дальнейшем сохранилась возможность генерировать новые ключи необходимо восстанавливать значение export OVPN_DATA="ovpn-data-example" и использовать passkey использованный для генерации корневого сертификата
Посмотреть статус OpenVPN сервера можно вот так
docker exec -it funny_varahamihira ovpn_status
Если необходимо запустить VPN клиента на постоянной основе, например на ubuntu сервере, то необходимо сгенерировать ключ для этого сервера, скопировать его в директорию /etc/openvpn/client.conf
При сборке на свежей системе может возникнуть ошибка
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with Angie by using --with-pcre=<path> option.
Эта ошибка проявляется если сборщик не может найти библиотку перловых регулярных выражений, решается проблема легко