ServerAdmin.ru
28.8K subscribers
293 photos
34 videos
13 files
2.62K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
Небольшая полезная утилита из мира Linux - split. С ее помощью можно любой файл разделить на части. Бывает попадаются больше логи, которые хочется посмотреть в удобном редакторе или быстро грепнуть, но из-за того, что файл большой, работать с ним неудобно. Быстро делим его пополам и смотрим по отдельности каждую часть.
split -n 2 file.txt

Можно на 4 части поделить:
split -n 4 file.txt

Split автоматически укажет случайные имена для новых файлов, но можно их задать по маске, например file- :
split -n 4 file.txt file-

Получим такую картину:
ls | grep file
file-aa file-ab file-ac file-ad

Так же текстовые файлы удобно делить по строкам. Например, разбить на части по 1000 строк:
split -l 1000 /var/log/nginx/access.log

Дополнительно split умеет делить на файлы по размеру, менять длину суффикса на другое количество символов (в дефолте два), а так же менять его с буквенного на числовой. Все это быстро в man глянуть можно.

Так же с помощью split удобно делить больше архивы на части, особенно если не помнишь ключи для разбивки архива самим архиватором. Делим:
split -n 2 archive.tar.gz archive-

Склеиваем обратно:
cat archive-* >> archive.tar.gz

Или сразу же распаковываем:
cat archive-* | tar xzvf -

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

Split обычно есть во всех системах по умолчанию. Идет в составе базовых системных утилит.

#bash
​​Думаю всем хорошо знакомы объектные хранилища S3. В наше время они активно используются. Изначально подобное хранилище разработал Amazon, но сейчас его api для работы с хранилищем поддерживает огромное количество продуктов и облаков.

Если вам нужен свой сервер хранения S3 рекомендую попробовать MinIO:

https://github.com/minio/minio

Очень простой и бесплатный продукт. На linux запустить его можно вот так:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

То есть это просто один бинарник. Далее идёте в веб интерфейс и тестируете - http://ip-adress:9000
На самом сервере файлы хранятся в сыром виде, как есть. То есть он работает поверх обычной файловой системы.

Точно так же MinIO запускается под Windows. Насколько я знаю, это хранилище используется под капотом многих продуктов, таких как Gitlab, Freenas, TrueNAS. Может кто-то еще. Конечно, у сервиса есть масса настроек, необходимых для промышленной эксплуатации. То, как запустил его я, просто для тестов, чтобы посмотреть, как работает и что это такое в принципе.

Подобное хранилище более удобная замена smb и nfs, но, конечно, не во всех случаях. В S3 обычно заливают статику крупных веб проектов или бэкапы. Я тоже там храню одну из копий бэкапов. Покупаю S3 сразу как сервис, потому что выгодно экономически.

#хранение #backup #S3
Чет у меня тут наболело с этим ямлом. В голове родился мем. Нарисовал, как умею 😎

#юмор
​​Давно хотел обсудить волнующую меня тему, но все откладывал и откладывал, потому что казалась не слишком интересной. Но всё же не выдержал и решил написать. Еще в бытностью мою офисным администратором и сотрудником тех. поддержки, никак не мог понять, почему пользователи так часто обманывают.

Звонит кто-нибудь и жалуется на что-то. Спрашиваешь его, перезапускали программу, перезагружали компьютер? Отвечает, что да, конечно. Подключаешься к нему и видишь, что он этого не делал. Говоришь ему об этом, а он знай своё, перезагружал и всё, ничего не знаю. Детский сад прям. Я обычно с такими не спорил. Не видел смысла.

Такое поведение в быту характерно для женщин, не признают свои косяки до последнего. А вот для офисных сотрудников нет половых различий. Врут на эту тему одинаково мужчины и женщины. Может, конечно, сейчас мужчины стали как женщины, а так как в быту с мужчинами я не живу, не могу оценить их поведение в этих условиях.

Недавно читал очень любопытное и тревожное исследование. Изучали гормональный фон мужчин и женщин, в том числе в подростковом возрасте. Наблюдается чёткая тенденция роста мужских гормонов у женщин и женских гормонов у мужчин. Некоторые подробности. Если в 25 лет женщина еще не рожала, то в среднем уровень мужского гормона у неё в 3 раза выше нормы. Дальнейшее зачатие будет уже проблемным. А у какой-то значительной части мальчиков подростков (точно не запомнил цифру, 60% вроде), гормональный фон по женскому гормону соответствует третьему месяцу беременности женщины. Сильное превышение.

Активно идёт усреднение пола. Может быть в этом дело? Как думаете?

#мысли
​​Есть любопытная программа для управления компьютером удаленно через браузер - DWService.

https://www.dwservice.net

Отличает ее то, что она полностью бесплатна. Работает примерно так же, как и все подобные программы. Ставите на компьютер серверную часть приложения (агент), а в качестве клиента выступает браузер. Поддерживаются все популярные системы - Win / Lin / Mac.

Для того, чтобы подключаться к компьютерам, необходимо зарегистрироваться (нужен только email), чтобы иметь доступ в личный кабинет. А уже оттуда идет подключение к вашим компьютерам.

Я немного потестировал программу. Не скажу, что всё понравилось. Просто пример. Если запускаете агента без установки, то для подключения вам нужно передать код агента и пароль. Так вот, их нельзя скопировать. А код состоит из 11 цифр. Я не понял, в чём тут смысл. Почему нет возможности его скопировать.

Если устанавливаете агента на постоянку, то такой проблемы нет. В личном кабинете добавляете нового агента, получаете код установки. Затем на компьютере ставите агент, указываете код установки, и он привязывается к вашему личному кабинету. После этого вы можете подключаться через браузер, зайдя в ЛК.

Помимо доступа к экрану, есть возможность передавать файлы, посмотреть системные ресурсы, процессы, службы, логи. Можно отдельно запустить удаленную консоль. Программа не умеет подключаться в rdp сессию, как к примеру платный аналог getscreen.me, о котором я упоминал ранее. По крайней мере я не понял, как это сделать. Если я подключен по rdp, то данная программа подключает меня к консоли ПК. Если логинюсь, rdp сессию отключает.

В целом, она работает примерно так же, как и все остальные программы подобного рода, но при этом полностью бесплатна в том числе для коммерческого использования. Исходный код агента есть на github: https://github.com/dwservice/agent

Мне неизвестен полностью бесплатный аналог со схожим функционалом. Так что продукт заслуживает внимания. Не нужно обходить какие-то ограничения и что-то думать с лицензиями. Можно поставить и спокойно использовать на работе.

#remote #программа
​​Меня один человек попросил помочь найти установочный диск Debian старой версии. Конкретно 10.1. Я сначала удивился, что он сам не справился с этой задачей. Куча же зеркал Debian по миру раскиданы.

Сначала пошел на mirror.yandex.ru, так как обычно оттуда всё качаю и использую этот репозиторий в системе. Но там оказывается только последняя актуальная версия системы.

Сходил на официальный сайт Debian, там тоже только последняя актуальная версия доступна для загрузки. Для более старых стоит пометка:

We don't store/serve the full set of ISO images for all architectures, to reduce the amount of space taken up on the mirrors. You can use the jigdo tool to recreate the missing ISO images instead

Честно говоря, вообще не знаю, то такое jigdo tool. Разбираться с ней только ради того, чтобы скачать старый образ не хотелось. В итоге просто загуглил нужное имя файла и нашел зеркало, где лежат все старые образы последних двух версий Debian 9 и 10 - https://ftp.cae.tntech.edu/

Я не знаю, насколько можно доверять этому репозиторию. В связи с этим вопрос. А где вы достаёте старые версии Debian, если они вам нужны? У меня такой задачи никогда не стояло. Обычно беру самую свежую и нет проблем. Тем не менее, понимаю, что есть ситуации, где может понадобиться конкретная версия системы. Не думал, что это такая большая задача, сохранить где-то 10 iso образов хотя бы текущего релиза.

С Centos таких проблем никогда не было. Идешь на https://vault.centos.org/ и там всё есть.

#debian
Рассказываю про очередную утилиту для бэкапов - rsnapshot.

https://github.com/rsnapshot/rsnapshot

Эта штука мне реально понравилась, я ее потестировал и стал внедрять. Буду пользоваться. Ставится из стандартных реп. В Centos из epel поставил, в ubuntu, debian в системных есть.

Под капотом там обычный rsync и обвязка на perl. Если не вдаваться в подробности, то rsnapshot умеет копировать файлы с помощью rsync, то есть обладает полностью всем его функционалом. Дополнительно в нём реализовано хранение инкрементных бэкапов и автоматическое ротирование. То есть всё то, что я обычно колхозил на bash, уже наколхозили за меня на perl.

Инкрементные бэкапы делаются с помощью hard link. Копируются только изменившиеся файлы, а остальные добавляются с помощью ссылок. Таким образом, если вы каждый день будете делать бэкапы, они у вас будут лежать каждый в своей папке как-будто там полная копия файлов, но на деле там только измененные файлы и хард линки на прошлый бэкап, если эти же файлы там уже есть.

Не скажу, что подход с ссылками прям очень удобный, так как занимаемое место и изменения не очень удобно смотреть, но тем не менее, это просто и быстро работает.

Так же rsnapshot умеет автоматически ротировать бэкапы. Можно задать в параметрах хранить 7 дневных бэкапов, 4 недельных и 12 месячных. Ну и запускать бэкап с соответствующими ключами. Rsnapshot будет автоматически удалять дневные бэкапы старше 7-и дней и двигать по цепочке все остальные. 7-й дневной бэкап превращается в недельный, 4-й недельный в месячный и т.д. То есть реализован привычный конвейер. Дневные, недельные и месячные интервалы придумал я. Настроить и обозвать вы их можете сами как угодно, это всё настраивается.

Файлы хранятся в исходном виде, как есть. Можно копировать, смотреть, проверять. В общем, мне понравилось. Думаю, что буду активно пользоваться.

#backup
​​На днях вышел первый релиз форка RHEL - Rocky Linux, который теоретически может заменить Centos. Я лично собираюсь использовать его и дальше поясню почему.

На сегодняшний день мне известны следующие форки RHEL:
🔹 Oracle Linux - https://www.oracle.com/ru/linux/
🔹 Rocky Linux - https://rockylinux.org
🔹 VzLinux - https://vzlinux.org
🔹 AlmaLinux - https://almalinux.org
🔹 Springdale Linux - https://puias.math.ias.edu

Я отдаю предпочтение именно Rocky Linux, потому что организация вокруг него строится только для развития самой системы. Все остальные форки выпущены коммерческими организациями. Как известно, любая коммерческая организация нацелена на максимальное извлечение прибыли.

Сейчас у этих компаний всё хорошо с деньгами. Кто-то пытается увеличить свою известность за счет дистрибутива, так как ниша освободилась после новостей Red Hat. Нет гарантий, что в будущем, после того, как дистр наберет популярность его не начнут как-нибудь монетизировать.

Другой сценарий - коммерческая организация может обанкротиться или быть куплена кем-то другим. В данной истории я больше доверяю организационной структуре, которую строят вокруг Rocky Linux. Хотя понимаю, что у нее тоже есть свои риски. На текущий момент заявлена поддержка этой системы со стороны крупных it вендоров.

Я отдаю себе отчет в том, что не разбираюсь в юридических тонкостях и организационной структуре Rocky Enterprise Software Foundation. Это мое чисто субъективное мнение, основанное только на вере и небольшой интуиции. Какому дистрибутиву отдать предпочтение, решать вам. Думаю, большинство переедет на Oracle Linux.

Если к концу года с Rocky Linux всё будет в порядке, перееду на него всеми своими Centos 8. Утилита для смены системы уже готова, можно тестировать.

#rockylinux
Жара продолжается. Кондер в одной из серверных на производстве не вытягивает нагрузку. Но в целом ничего страшного. Там триггеры на 50 и 55 градусов стоят. И такое каждое лето бывает.

Причём температура дисков сильно зависит от самого сервера и его внутреннего устройства. У каких-то харды греются меньше, у каких-то больше. И всё это в рамках одной стойки. Тут в стойке 7 серверов, но маячат в мониторинге только 2.

По моему опыту, всё, что ниже 60, можно игнорировать, если нет простых решений проблемы. Я раньше суетился по этому поводу, тикеты в ТП писал, если в арендуемых дедиках температура дисков поднималась, но меня всегда футболили, если она не выходила за параметры рабочей температуры, указанной в документации к диску. На hdd там потолок обычно 60 градусов.

А вы какие триггеры по температуре ставите? Для cpu я обычно 90 ставлю, для hdd 55-60. Всё, что ниже, игнорирую. Хотя могу поставить пороги и ниже, чтобы примерно понимать по оповещениям, что там за ситуация на условно проблемных серверах.

#железо
​​Очередной пост на тему bash и работы в консоли. Думаю, это будет полезный для многих материал. Я собрал консольные утилиты и команды, которые использую для того, чтобы определить, кто и как нагружает CPU и Память в Linux. Традиционно напоминаю, что это не сборник лучших решений и инструментов. Это просто мой личный опыт. Не обязательно, что я всё делаю правильно и оптимально.

Сколько памяти занимает процесс. На примере mysqld.
ps -o vsz,rss,cmd --pid $(pgrep mysqld)

Список процессов с сортировкой по нагрузке на CPU.
ps aux --sort -pcpu

Этот список можно ограничить только десятью самыми прожорливыми процессами.
ps aux --sort=-pcpu,+pmem | head -n 11

Список процессов с сортировкой по занимаемой памяти.
ps aux --sort -rss
ps aux --sort -vsz

Наблюдаем через top за конкретным процессом.
top -c -p $(pgrep -d',' -f mysqld)

Информация о загрузке каждого ядра процессора. Утилита mpstat входит в состав пакета sysstat. Обычно в системных репах она есть.
mpstat -P ALL

Загрузка процессора в %. Этой простой метрики очень не хватает в Linux, особенно когда переходишь с Windows. Все колхозят на свой лад, чтобы получить эту метрику. Вот 2 варианта, которые есть у меня. При грубой прикидке, результат получается близкий к реальности.
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}'

awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else print ($2+$4-u1) * 100 / (t-t1) "%"; }' <(grep 'cpu ' /proc/stat) <(sleep 1;grep 'cpu ' /proc/stat)

Текстовый вывод нагрузки на процессор в консоль. Ингода бывает удобно выводить с каким-то интервалом информацию о нагрузке в консоль. Например, делать это в течении 60 секунд с интервалом в секунду можно с помощью sar, которая тоже есть в sysstat
sar 1 60

Определить, кто родитель процесса. Например, если указать pid worker процесса nginx, команда ниже покажет pid процесса master. В случае с nginx это не имеет большого смысла, но иногда нужно.
ps -o ppid= -p 5606

Посмотреть информацию о процессоре.
lscpu

В завершении скажу про полезную репу, которую я регулярно использую при анализе загрузки систем - https://github.com/brendangregg/perf-tools Там много полезных утилит. В контексте данной заметки для анализа процессов я использовал утилиту execsnoop.

Следующая подборка будет на тему анализа нагрузки на дисковую подсистему. Думаю, это будет поинтереснее. Изначально хотел всё в одной сделать, но потом понял, что лучше разделить, чтобы в избранное можно было по тематике разнести.

#bash
​​Я уже давно слышал, что Microsoft разрабатывал свой пакетный менеджер для Windows систем. Аналог apt, dnf и прочих пакетных менеджеров в Linux. Теперь дошли руки попробовать его. Называется winget. Скачать можно с github:

https://github.com/microsoft/winget-cli/releases

А дальше примерно всё как в Linux. Список пакетов, доступных для установки можно посмотреть так:
winget install

Дальше смотрите, что вам нужно установить и ставите (консоль запускаем от админа):
winget install SublimeHQ.SublimeText.4

Установил себе текстовый редактор Sublime 4.

Идея очень крутая. Пока я так понял это всё еще тестируется и дорабатывается. Но если в скором времени весь софт можно будет ставить через этот пакетный менеджер, то будет очень удобно. После установки системы нужно будет сделать что-то примерное такое:

winget install 7Zip KeePass Telegram Firefox Todoist Winbox

Попробовал поставить еще несколько программ. Все круто, поставилось. Мне очень понравилось.

#windows
​​Оказывается, для Clonezilla существует обычный GUI в виде Rescuezilla. Этот продукт делает полностью совместимый с Clonezilla формат образов, но работает на базе Ubuntu и LXDE.

https://github.com/rescuezilla/rescuezilla
https://rescuezilla.com/

Для тех кто не в курсе, Clonezilla это аналог коммерческих продуктов для снятия образов дисков и систем для бэкапа или переноса на другое железо, таких как Acronis True Image, Norton Ghost и т.д.

Clonezilla имеет консольный интерфейс для тру линуксоидов и любителей генту с арчем, а Rescuezilla более человеческий GUI для тех, кто привык тыкать мышкой.

Я сам неоднократно использовал Clonezilla для переноса системы с железа в виртуалку или между разными гипервизорами. Продукт хороший и известный, рекомендую, если еще не знакомы с ним.

Думаю, что в следующий раз, когда понадобится, предпочту GUI консоли. Так же одной из фишек Rescuezilla является то, что она может очень легко монтировать файлы резервных копий Clonezilla и получать к ним доступ.

#backup
​​Успех в делах обычно состоит из мелочей, но если на них обращать внимание и не пускать на самотёк, то результат придёт быстрее. Покажу на нескольких примерах, хотя в том или ином виде я их уже упоминал в других заметках.

Я почти всегда пишу документацию, объединяю её со списком выполненных задач, прикладываю все учётные записи, которые использовал в работе и отправляю заказчику, даже если он сам этого не просит. Большинство не просят всё это вместе, так как им зачастую не интересно с этим разбираться. Даже учётки не всегда спрашивают, особенно от сервисов, с которыми напрямую не взаимодействуешь. Например, пароли mysql.

Так же всегда отвечаю на письма, когда их получил. Таким образом подтверждаю, что информация прочитана. Когда что-то делаю, не ленюсь уведомлять о ходе процесса и само собой, всегда сразу говорю, если сроки затягиваются. То есть банально не пропадаю и информирую людей.

Еще простой пример не совсем из IT. Мне постоянно рекламодатели присылают тексты для публикаций. Я всегда их вычитываю, исправляю все огрехи в форматировании, добавляю абзацы, иногда немного emoji и т.д. Обязательно проверяю все ссылки и метки. Были случаи, когда ссылки не работали. Для платной рекламы это полный провал. При этом вижу эти же тексты в других каналах в том виде, как они были получены, со всеми опечатками и сломанным форматированием. Так же не раз видел мои доработанные посты на других каналах. Рекламодатель брал мои правки и дальше уже распространял свой текст с ними.

У меня уходит не так много времени всё это делать, но такой подход располагает, запоминается и к тебе с большей вероятностью придут снова.

Подобное отношение стараюсь распространять на все дела. Чуть-чуть личного внимания уделить не так трудно, даже если от тебя этого не требуется. Но в конечном итоге это выливается в гораздо большие приобретения, по сравнению с затраченным временем.

#мысли
​​Один из читателей сайта к статье о настройке proxmox написал комментарий по переносу виндовых виртуалок с hyperv на proxmox. Мне показалась информация полезной, поэтому оформляю в заметку и делюсь с вами. Самому тоже приходилось делать такие переносы, но инструкцию не составлял.

Для начала надо перенести vhdx образы на proxmox и сконвертировать в нужный вам формат. Например в qcow2:
qemu-img convert -O qcow2 /path/to/vhdx/VM.vhdx /path/to/qcow2/vm.qcow2

Далее создаём новую виртуалку, добавляем ей диск минимального размера (VirtIO SCSI). Он нужен будет позже, чтобы установить virtio драйвера на диск в систему. Добавляем к этой виртуалке сконвертированный диск как ide и делаем его загрузочным. Так же добавляем cd-rom и подключаем к нему virtio-win.iso последней версии. В настройках Hardware -> Bios меняем с дефолтного SeaBios на OVMF (UEFI).

Запускаем виртуалку. Должна загрузиться. Ставим все драйвера, в том числе на диск, а так же qemu-guest-agent. Выключаем.

Далее либо через правку конфига vm в консоли меняете путь от virtio диска минимального размера на рабочий, либо через веб интерфейс отцепляете оба диска и обратно подключаете системный диск как VirtIO SCSI. На этом всё.

Скорее всего прямо сейчас вам эта инструкция нее нужна, но если в будущем может пригодиться, не забудьте сохранить.

#hyperv #proxmox
​​Любопытный проект на github для совместной работы в консоли - TermPair.

https://github.com/cs01/termpair

Идея такая. Ты запускаешь у себя в консоли сервер:
termpair serve --port 8000

Дальше можно расшарить консоль:
termpair share --port 8000

Вы получите ссылку вида:
http://ip-server:8000/?terminal_id=fd96c0f8476872950e19c

Можно подключаться через браузер и смотреть, что происходит в консоли, либо управлять ей. Очевидно, что для доступа через интернет нужен либо белый ip, либо придётся пробрасывать порт через nat. Клиентов может подключиться сколько угодно.

Можно расшарить консоль и через внешний хост. Для этого надо будет воспользоваться каким-то внешним сервером. Например, вот так:
termpair share --host "https://chadsmith.dev/termpair/" --port 443

Сразу получите внешнюю ссылку и через браузер окажетесь в консоли.

Программа написана на python, так что поставить можно через pip:
pip install termpair

Перед установкой обновите pip до последней версии. У меня сначала не прошла установка из-за каких-то проблем с криптографией. Когда обновил pip, все прошло успешно.

Гифка с демонстрацией работы - https://raw.githubusercontent.com/cs01/termpair/master/termpair_browser.gif

#утилита
​​Расскажу своими словами про типы дисков в Proxmox, доступные по дефолту после установки для использования в виртуальных машинах.

Этот вопрос очень часто задают. Я не могу сказать, что обладаю экспертными знаниями по этой теме, но в своё время специально интересовался и составил для себя представления в каком случае какой из типов дисков выбирать.

RAW. Самый простой формат. Данные хранятся как есть, без дополнительной обработки и добавления служебной информации. Информацию в таком формате могут называть сырыми данными. По идее, это формат с максимальным быстродействием. При создании диска выделяется сразу же весь объем. Формат является универсальным для большинства популярных гипервизоров.
Максимальная простота и производительность среди образов в виде файла.
Универсальный формат с поддержкой в большинстве гипервизоров.
Легкость переноса виртуальной машины на другой сервер. Достаточно просто скопировать файл.
Не поддерживает снепшоты ни в каком виде.
Занимает сразу все выделенное пространство на диске, даже если внутри виртуальной машины место будет свободно. Из-за отсутствия фрагментации в некоторых случаях это может оказаться плюсом.

QCOW2. Родной формат для гипервизора QEMU. Расшифровывается как Copy-on-write. Этот формат позволяет создавать динамические диски для виртуальных машин, а так же поддерживает снепшоты. Теоретически, скорость работы будет хоть и не сильно, но уступать RAW (на ~10%), так как появляются накладные расходы формата.
Поддержка снепшотов и динамических дисков. Как следствие - более удобное управление дисковым пространством.
Легкость переноса виртуальной машины на другой сервер. Достаточно просто скопировать файл.
Более низкая производительность, по сравнению с другими типами образов.

LVM. Использование lvm томов в виде дисков виртуальных машин. Такой диск будет блочным устройством и теоретически должен работать быстрее всех остальных типов, так как нет лишней прослойки в виде файловой системы. На практике эту разницу с raw не разглядеть и не замерить. Я на тестах не замечал.
Снэпшоты средствами самого lvm, с них легко снять бэкап без остановки виртуальной машины.
Максимальное быстродействие.
Более сложное управление по сравнению с дисками в виде отдельных файлов.
Более сложный перенос на другой сервер.

У каждого типа есть свои преимущества и недостатки. Lvm проще всего бэкапить, так как есть снепшоты из коробки, но им сложнее всего управлять. Для того, кто хорошо знаком с lvm, это не проблема, если сталкиваешься первый раз, то возникает много вопросов. У raw нет снепшотов, лично для меня это большой минус, я этот формат редко использую. Если нет максимальной нагрузки на дисковую подсистему, то QCOW2 мне кажется наиболее удобным вариантом.

#proxmox #kvm
​​Я наконец-то нашел нормальную и удобную замену Evernote - сервису для хранения заметок. Использовал его очень долго, последние лет 6-7 точно, а скорее всего дольше. Принял решение его заменить после того, как где-то пол года назад они выкатили новое приложение, которое просто жутко тормозит. Пользоваться стало некомфортно. Запускается долго, интерфейс неотзывчивый, повисает.

Я долго терпел, так как заметок много, переносить лень. Пробовал несколько других приложений подобного рода, но не очень нравились. Их тестирование отнимает время. Больше всего понравился микрсофтовский OneNote. Некоторое время им пользовался, но в итоге отказался. Интерфейс и возможности слишком простые, плюс, не хотелось привязываться к Microsoft.

В итоге остановился на бесплатном приложении Joplin - https://joplinapp.org. Привлекло меня там вот что:
1️⃣ Внешний вид очень похож на Evernote, так что не придётся привыкать.
2️⃣ Полностью бесплатный и кроссплатформенный.
3️⃣ Возможность использовать в качестве хранилища заметок локальную директорию. Я её расположил на яндекс диске и получил свои заметки на разных устройствах.
4️⃣ Есть возможность зашифровать все заметки. Я это сделал.
5️⃣ Поддерживается импорт блокнотов из Evernote. Я собрался с духом, привёл там всё в порядок и перенёс в Joplin.

Приложение, увы и ах, написано на богомерзком Electron, жрёт кучу памяти и весит 150 мегабайт. К сожалению, нативных приложений в этой сфере я вообще не видел, кроме OneNote. Он меня этим и привлек - шустрый и легковесный. Тем не менее Joplin работает значительно быстрее Evernote и негативных эмоций в работе не вызывает.

Помимо указанных ранее программ пробовал Notion, Trello (хотя он не совсем для заметок). Мне не понравились, так как показались перегруженными функционалом. Мне достаточно обычного текстового формата с минимальным форматированием. Markdown полностью устраивает, который реализован в Joplin.

Одной из фишек Joplin является то, что он все заметки хранит в текстовых файлах в формате markdown. Их прямо из программы можно открывать внешним текстовым редактором. Это удобно. Плюс, есть консольная версия для linux. С заметками можно работать через консоль. Вряд ли мне это понадобится, но тем не менее, интересно.

#программа #полезное
​​Продолжаю рубрику костылей и велосипедов на bash. Сегодня расскажу, как я анализирую нагрузку на дисковую подсистему через консоль. Как обычно напоминаю, что это не набор лучших практик. Это мой субъективный опыт.

Сводная информация по нагрузке на диск. Использую iostat из пакета sysstat. Каждые 2 секунды вывожу информацию в консоль:
iostat -xk -t 2
С помощью этого вывода можно бегло оценить, что в целом происходит с каждым конкретным диском.

Дисковая активность всех процессов. Использую pidstat. Каждую секунду вывожу в консоль информацию о дисковой активности всех процессов.
pidstat -d 1

Дисковая активность конкретного процесса.
pidstat -p PID -d 1
Напоминаю, что PID процесса можно посмотреть командой pgrep:
pgrep php-fpm

Что пишет процесс.
strace -e trace=write -p PID

Анализ I/O дисков, в том числе latency. Я уже упоминал в прошлой заметке репозиторий https://github.com/brendangregg/perf-tools. Утилита iosnoop показывает нагрузку на диск, в том числе latency. Больше примеров тут.
./iosnoop
./iosnoop -p PID

Список удаленных открытых файлов. Еще одна полезная команда, которая позволяет решить популярную проблему, когда казалось бы места свободного должно быть много, но его реально нет. Принудительно удален какой-то открытый файл, поэтому место не освободилось.
lsof +L1
lsof | grep '(deleted)'

Список открытых файлов в конкретной директории.
lsof +D /var/log

Так же есть аналог топа - iotop. С его помощью можно в реальном времени посмотреть дисковую активность.

И еще отдельно упомяну утилиту dstat (dnf install dstat). Мне нравится её вывод (см. скриншот) по общей загрузке системы, в том числе и дисков. Все популярные метрики:
dstat -tldnpms 10
Только диски по read_bytes / write_bytes (нагрузка на "железо")
dstat --top-bio
Диски по rchar/wchar (нагрузка на "по", т.е. включая обращения ко всяким виртуальным ФС):
dstat --top-io

#bash
​​Есть в линуксе полезный архиватор - pigz (Parallel Implementation of GZip). На мой взгляд, он не очень известный. Редко его вижу где-то в статьях или чьих то скриптах. Сам я его использую постоянно. Главная его особенность - он жмёт всеми ядрами. Большинство привычных консольных архиваторов жмут только одним ядром. Когда архивируете большие объемы, разница в скорости огромная.

С установкой pigz проблем нет, живёт в стандартных репах популярных дистрибутивов. Использовать, как это обычно бывает в линукс, можно разными способами.

Одиночный файл:
pigz -c filename > /tmp/filename.gz
Распаковываем:
unpigz filename.gz

Либо сразу дамп базы:
pg_dump -U postgres base | pigz > /tmp/base.sql.gz

Жмём директорию:
tar cf - directory | pigz - > directory.tar.gz
Распаковываем:
cat directory.tar.gz | unpigz - | tar xf -

Жмём несколько файлов по маске:
find /data -type f -name *filemask* -exec pigz -c '{}' \;
Распаковываем:
find /data -type f -name *filemask.gz -exec unpigz '{}' \;

Для архивации больших дампов баз данных очень актуально. На серваках с БД обычно много ядер. Если жать только одним, это может длиться слишком долго. Pigz жмёт огромные дампы на максимальной скорости, которую могут обеспечить все ядра процессора.

#утилита
​​Приветствую, дорогие читатели. Хочу с вами обсудить любопытную тему, которая однажды меня удивила и заинтересовала. Звучит она так: "Как точно узнать дату установки системы Linux". Когда передо мной впервые встал этот вопрос, я был удивлен, что невозможно получить однозначный ответ. По крайней мере я не понял, как это сделать.

В Windows с этим нет проблем. Система хранит дату своей установки. А вот в Linux я такого не увидел. Пришлось использовать косвенные признаки, чтобы определить дату установки. Вот способы, что используя я. Они связаны с созданием файловой системы.

Дата и время установки ОС Linux из свойств файловой системы:
tune2fs -l $(df / | tail -1 | cut -f1 -d' ') | grep created
Способ не сработает, если корень / стоит на lvm. Можно взять раздел /boot, если он не на lvm. Либо использовать следующий способ.

Узнаем дату установки ОС Linux из даты создания самого старого каталога в файловой системе:
ls --time-style=long-iso -clt / | tail -n 1 | awk '{ print $7, $6}'

Способ тоже не 100%, так как не факт, что эту дату создания не поменяли каким-то образом. Хотя на практике, если специально этого никто не делал, то даты на основе создания файловой системы актуальны.

Можно еще посмотреть на дату создания директории /lost+found.
ls -ld /lost+found/

Для rpm дистрибутивов есть более простой способ:
rpm -qi basesystem | grep Install
Но данный пакет может быть удален или переустановлен. Хотя кто подобным занимается?

А как вы определяете дату установки системы?

#полезное #bash
Вчера прилетела новость об обновлении десктопных приложений от Onlyoffice. Решил рассказать про эти редакторы документов в формате Microsoft Office и не только. Думаю, найдётся немало людей, которые про них не слышали. Речь вот о чём - https://www.onlyoffice.com/ru/desktop.aspx

Это опенсорсные редакторы документов для работы офлайн. Я их иногда сам использую, когда надо быстренько куда-то поставить софт для просмотра офисных документов. Приложения немного тормозные, но на вопрос отвечают. Регулярно в них работать я бы наверное не стал, а для редкого использования в самый раз.

У меня была подробная статья по разворачиванию сервера документов для работы online от этой же команды - https://serveradmin.ru/ustanovka-i-nastrojka-onlyoffice/ Продукт неплохой, присмотритесь, если вам нужен подобный функционал.

#программа