<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Максим Кузнецов: заметки с тегом ubuntu</title>
<link>https://maxkuznetsov.ru/tags/ubuntu/</link>
<description>Простыми словами о веб-разработке</description>
<author>Максим Кузнецов</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Максим Кузнецов</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Простыми словами о веб-разработке</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Установка и настройка Clickhouse на EC2</title>
<guid isPermaLink="false">46</guid>
<link>https://maxkuznetsov.ru/all/ustanovka-i-nastroyka-clickhouse-na-ec2/</link>
<pubDate>Mon, 13 Nov 2023 15:14:10 +0300</pubDate>
<author>Максим Кузнецов</author>
<comments>https://maxkuznetsov.ru/all/ustanovka-i-nastroyka-clickhouse-na-ec2/</comments>
<description>
&lt;p&gt;Нашёл отличный и исчерпывающий гайд по установке и подготовке Clickhouse для продакшена на AWS EC2.&lt;br /&gt;
Допустим, у нас уже есть VPC, в которую хочется добавиться сервер с CH.&lt;br /&gt;
Единственно, в качестве инстанса я взял машину попроще — m7g.large (~$60/mo) на Ubuntu и Arch64 архитектуре.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://anthonynsimon.com/blog/clickhouse-deployment/"&gt;https://anthonynsimon.com/blog/clickhouse-deployment/&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Как добавить новый сервис в systemd/systemctl и запускать его при старте  Ubuntu</title>
<guid isPermaLink="false">44</guid>
<link>https://maxkuznetsov.ru/all/ubuntu-systemd-systemctl-on-startup/</link>
<pubDate>Wed, 10 May 2023 17:35:55 +0300</pubDate>
<author>Максим Кузнецов</author>
<comments>https://maxkuznetsov.ru/all/ubuntu-systemd-systemctl-on-startup/</comments>
<description>
&lt;h3&gt;Задача&lt;/h3&gt;
&lt;p&gt;Есть docker-compose файл, поднимающий Zabbix. Есть небольшая обёртка в виде Makefile, которая позволяет запускать и останавливать docker-compose. Нужно добавить запуск этой команды при старте/рестарте системы.&lt;/p&gt;
&lt;h3&gt;Дано&lt;/h3&gt;
&lt;p&gt;Всё лежит в `/var/www/zabbix-server/`.&lt;br /&gt;
Содержание файла Makefile:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;...
docker-up:
        docker-compose up -d

docker-down:
        docker-compose stop&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Решение&lt;/h3&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Создать новый файл `vim /etc/systemd/system/zabbix.service`.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Unit]
Description=Run Zabbix Docker Containers on Startup

[Service]
RemainAfterExit=True
Restart=always
RestartSec=1
WorkingDirectory=/var/www/zabbix-server
ExecStart=/usr/bin/make docker-up
ExecStop=/usr/bin/make docker-down

[Install]
WantedBy=default.target&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;chmod 644 /etc/systemd/system/zabbix.service&lt;/li&gt;
&lt;li&gt;systemctl enable zabbix.service&lt;/li&gt;
&lt;li&gt;systemctl start zabbix.service&lt;/li&gt;
&lt;/ol&gt;
</description>
</item>

<item>
<title>Ubuntu: Running Out of Space и количество inodes</title>
<guid isPermaLink="false">43</guid>
<link>https://maxkuznetsov.ru/all/ubuntu-running-out-of-space-i-kolichestvo-inodes/</link>
<pubDate>Sun, 13 Mar 2022 04:25:22 +0300</pubDate>
<author>Максим Кузнецов</author>
<comments>https://maxkuznetsov.ru/all/ubuntu-running-out-of-space-i-kolichestvo-inodes/</comments>
<description>
&lt;p&gt;Одна из причин, почему ваш Ubuntu сервер может сигнализировать, что кончилась память, тогда как её предостаточно — слишком большое количество файлов. Каждый диск в зависимости от размера имеет ограниченное максимальное количество файлов и папок, которые вы можете создать.&lt;/p&gt;
&lt;p&gt;Проверить количество используемых inodes можно командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;root@ec2-consumer:~# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/root        2.5M  2.1M  419K   84% /
devtmpfs         482K   349  482K    1% /dev
tmpfs            484K     5  484K    1% /dev/shm
tmpfs            484K   602  483K    1% /run
tmpfs            484K     4  484K    1% /run/lock
tmpfs            484K    18  484K    1% /sys/fs/cgroup
/dev/loop1         16    16     0  100% /snap/amazon-ssm-agent/4046
/dev/loop5        11K   11K     0  100% /snap/core18/2253
/dev/nvme1n1      25M  462K   25M    2% /var/www
tmpfs            484K    22  484K    1% /run/user/0&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Видим 84% около /dev/root — процент очень большой, это свидетельствует о проблеме. Обычно должно быть не больше 50%, а 80% — это верхний предел.&lt;/p&gt;
&lt;p&gt;Причин может быть несколько, например, у вас есть какой-то скрипт, пишущий много логов или временных файлов в /tmp. В моём случае это была библиотека phrets, которая создаёт много пустых временных файлов в /tmp.&lt;/p&gt;
&lt;p&gt;Если не знаете, где превышаете лимит по количеству файлов, запустите команду (может занять несколько минут):&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;du --inodes -d 3 / | sort -n | tail&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Быстрое решение&lt;/h2&gt;
&lt;p&gt;Просто удалите лишние файлы. Это можно сделать по шаблону regexp:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;find /tmp -type f -mtime +0 -name 'phrets*' -execdir rm -- '{}' \;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Здесь &lt;tt&gt;-mtime +0&lt;/tt&gt; фильтрует все файлы, которые были созданы больше суток назад — я не хотел удалять все файлы, так как не был уверен, что библиотека phrets не использует самые свежие для чего-то нужного (хотя они все и были пустыми). Почитайте про значения параметра mtime, чтобы фильтровать как давно созданные файлы, так и недавно.&lt;/p&gt;
&lt;h2&gt;Долгое решение&lt;/h2&gt;
&lt;p&gt;Нужно увеличить количество inodes. Это крайне редкое и радикальное решение, которое хорошо описано тут — &lt;a href="https://www.ctrl.blog/entry/how-to-all-out-of-inodes.html."&gt;https://www.ctrl.blog/entry/how-to-all-out-of-inodes.html.&lt;/a&gt;&lt;/p&gt;
</description>
</item>


</channel>
</rss>