mirror of
https://git.digitalstudium.com/digitalstudium/digitalstudium.com
synced 2023-12-29 08:06:35 +00:00
Initial commit
This commit is contained in:
107
content/ru/linux-lifehacks/how-to-create-lvm-logical-volume.md
Normal file
107
content/ru/linux-lifehacks/how-to-create-lvm-logical-volume.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
title: "Linux: Как создать логический том LVM"
|
||||
date: "2022-05-15"
|
||||
---
|
||||
### Первый шаг: создание физического тома
|
||||
После того, как вы присоединили диск к физическому серверу или к виртуальной машине, вам нужно набрать
|
||||
команду:
|
||||
```bash
|
||||
sudo fdisk -l
|
||||
```
|
||||
<!--more-->
|
||||
чтобы убедиться, что диск распознан операционной системой, а также чтобы идентифицировать имя диска. Вывод
|
||||
команды будет примерно такой:
|
||||
```plaintext
|
||||
Disk /dev/vdb: 10 GiB, 10737418240 bytes, 20971520 sectors
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
```
|
||||
После того, как вы идентифицировали имя диска (в нашем случае это `/dev/vdb`), вы можете создать
|
||||
физический том с помощью команды:
|
||||
```bash
|
||||
sudo pvcreate /dev/vdb
|
||||
```
|
||||
Вы увидите такой вывод:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo pvcreate /dev/vdb
|
||||
Physical volume "/dev/vdb" successfully created.
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
### Второй шаг: создание группы томов
|
||||
Теперь нужно создать группу томов. Делается это такой командой:
|
||||
```bash
|
||||
sudo vgcreate {vgname} {pvname}
|
||||
```
|
||||
в нашем случае команда будет выглядеть так:
|
||||
```bash
|
||||
sudo vgcreate vg-example /dev/vdb
|
||||
```
|
||||
Вывод команды будет такой:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo vgcreate vg-example /dev/vdb
|
||||
Volume group "vg-example" successfully created
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
### Третий шаг: создание логического тома
|
||||
Создание логического тома делается такой командой:
|
||||
```bash
|
||||
sudo lvcreate --size {size} --name {lv-name} {vg-name}
|
||||
```
|
||||
В нашем случае это будет:
|
||||
```bash
|
||||
sudo lvcreate --size 5G --name lv-example vg-example
|
||||
```
|
||||
Вы увидите такой вывод:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo lvcreate --size 5G --name lv-example vg-example
|
||||
Logical volume "lv-example" created.
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
Если же вы хотите, чтобы логичекий том использовал всё свободное место в группе томов, то наберите команду:
|
||||
```bash
|
||||
sudo lvcreate --extents 100%FREE --name lv-example vg-example
|
||||
```
|
||||
### Четвёртый шаг: создание файловой системы
|
||||
Чтобы создать файловую систему xfs, наберите команду:
|
||||
```bash
|
||||
sudo mkfs.xfs /dev/vg-example/lv-example
|
||||
```
|
||||
Вывод команды будет такой:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo mkfs.xfs /dev/vg-example/lv-example
|
||||
meta-data=/dev/vg-example/lv-example isize=512 agcount=4, agsize=327680 blks
|
||||
= sectsz=512 attr=2, projid32bit=1
|
||||
= crc=1 finobt=1, sparse=1, rmapbt=0
|
||||
= reflink=1 bigtime=0
|
||||
data = bsize=4096 blocks=1310720, imaxpct=25
|
||||
= sunit=0 swidth=0 blks
|
||||
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
|
||||
log =internal log bsize=4096 blocks=2560, version=2
|
||||
= sectsz=512 sunit=0 blks, lazy-count=1
|
||||
realtime =none extsz=4096 blocks=0, rtextents=0
|
||||
Discarding blocks...Done.
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
Для создания файловой системы ext4 замените команду mkfs.xfs на mkfs.ext4
|
||||
### Пятый шаг: монтирование логического тома
|
||||
Например, вы хотите смонтировать созданный логический том в папку `/opt`. В таком случае, добавьте такую
|
||||
строку в файл `/etc/fstab`:
|
||||
```bash
|
||||
/dev/vg-example/lv-example /opt xfs defaults 0 1
|
||||
```
|
||||
После этого наберите команду:
|
||||
```bash
|
||||
sudo mount -a
|
||||
```
|
||||
Убедиться в том, что логический том успешно смонтирован, вы можете с помощью команды
|
||||
```bash
|
||||
df -h /opt
|
||||
```
|
||||
Вывод должен быть такой:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ df -h /opt/
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
/dev/mapper/vg--random-lv--random 5.0G 68M 5.0G 2% /opt
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: "Linux: Как расширить логический том LVM"
|
||||
date: "2022-05-15"
|
||||
---
|
||||
### Ситуация 1: новый диск
|
||||
#### Первый шаг: создание физического тома
|
||||
После того, как вы присоединили диск к физическому серверу или к виртуальной машине, вам нужно набрать команду:
|
||||
```bash
|
||||
sudo fdisk -l
|
||||
```
|
||||
<!--more-->
|
||||
Это нужно, чтобы убедиться, что диск распознан операционной системой, а также чтобы идентифицировать имя диска. Вывод команды будет примерно такой:
|
||||
```plaintext
|
||||
Disk /dev/vdc: 5 GiB, 5368709120 bytes, 10485760 sectors
|
||||
Units: sectors of 1 * 512 = 512 bytes
|
||||
Sector size (logical/physical): 512 bytes / 512 bytes
|
||||
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
||||
```
|
||||
После того, как вы идентифицировали имя диска (в нашем случае это `/dev/vdc`), вы можете создать физический том с помощью команды:
|
||||
```bash
|
||||
sudo pvcreate /dev/vdc
|
||||
```
|
||||
Вы увидите такой вывод:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo pvcreate /dev/vdc
|
||||
Physical volume "/dev/vdc" successfully created.
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
#### Второй шаг: расширение группы томов
|
||||
Теперь можно расширить группу томов. Делается это такой командой:
|
||||
```bash
|
||||
sudo vgextend {vg-name} {pv-name}
|
||||
```
|
||||
В нашем случае это будет:
|
||||
```bash
|
||||
sudo vgextend vg-example /dev/vdc
|
||||
```
|
||||
Вы увидите такой вывод:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo vgextend vg-example /dev/vdc
|
||||
Physical volume "/dev/vdc" successfully created.
|
||||
Volume group "vg-example" successfully extended
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
#### Третий шаг: расширение логического тома
|
||||
Расширение логического тома делается такой командой:
|
||||
```bash
|
||||
sudo lvextend --size +{size} {vg-name/lv-name}
|
||||
```
|
||||
В нашем случае это будет:
|
||||
```bash
|
||||
sudo lvextend --size +2G vg-example/lv-example
|
||||
```
|
||||
Вы увидите такой вывод:
|
||||
```plaintext
|
||||
kostya@ubuntu-21-04:~$ sudo lvextend --size +2G vg-example/lv-example
|
||||
Size of logical volume vg-example/lv-example changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
|
||||
Logical volume vg-example/lv-example successfully resized.
|
||||
kostya@ubuntu-21-04:~$
|
||||
```
|
||||
Если же вы хотите, чтобы логичекий том использовал всё свободное место в группе томов, то наберите
|
||||
команду:
|
||||
```bash
|
||||
sudo lvextend --extents +100%FREE vg-example/lv-example
|
||||
```
|
||||
#### Четвёртый шаг: расширение файловой системы
|
||||
Если у вас файловая система `xfs`, то расширение делается такой командой:
|
||||
```bash
|
||||
sudo xfs_growfs /dev/{vg-name}/{lv-name}
|
||||
```
|
||||
В нашем случае это будет:
|
||||
```bash
|
||||
sudo xfs_growfs /dev/vg-example/lv-example
|
||||
```
|
||||
В случае с файловой системой ext4 замените команду `xfs_growfs` на `resize2fs`
|
||||
### Ситуация 2: если изменился размер существующего диска
|
||||
Иногда может измениться размер существующего диска, например, в случае с виртуальной машиной. В таком случае, первый шаг будет отличаться, второй шаг выполняться не будет, а остальные шаги будут такими же, как в ситуации с новым диском, описанной выше. На первом шаге нужно будет не создать физический том, а расширить существующий. Делается это такой командой:
|
||||
```bash
|
||||
sudo pvresize /dev/DISKNAME
|
||||
```
|
||||
Например,
|
||||
```bash
|
||||
sudo pvresize /dev/vdc
|
||||
```
|
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: "Linux: как ограничить размер папки /var/log"
|
||||
date: "2022-06-06"
|
||||
---
|
||||
|
||||
Иногда папка `/var/log` увеличивается в размере настолько, что становится причиной нехватки места на диске. Как ограничить рост размера этой папки? Выполнив два шага из этой статьи, вы можете поставить размер папки `/var/log` под контроль.<!--more-->
|
||||
### Шаг 1. Ограничение размера логов journald
|
||||
Логи всех сервисов systemd складываются в папку `/var/log/journal/` сервисом `journald`. Чтобы установить предельный размер этой папки, выполните следующие команды:
|
||||
```bash
|
||||
sudo bash -c 'echo "SystemMaxUse=100M" >> /etc/systemd/journald.conf'
|
||||
sudo systemctl restart systemd-journald
|
||||
```
|
||||
Вместо размера `100M` вы можете указать любой другой размер, в единицах измерения `K, M, G, T`. После вышеуказанных команд вы можете убедиться, что размер папки `/var/log` стал иметь заданный размер с помощью команды: `du -sh /var/log/journal/`
|
||||
### Шаг 2. Ограничение количества файлов логов, ротируемых logrotate
|
||||
Logrotate каждый день совершает ротацию почти всех лог-файлов, находящихся в папке `/var/log`. Например, если я наберу команду `ls /var/log/kern*`, то я увижу, что помимо файла `/var/log/kern.log` у меня хранится ещё 4 файла, которые сохранил logrotate:
|
||||
```bash
|
||||
ls /var/log/kern*
|
||||
```
|
||||
```plaintext
|
||||
/var/log/kern.log /var/log/kern.log.2.gz /var/log/kern.log.4.gz
|
||||
/var/log/kern.log.1 /var/log/kern.log.3.gz
|
||||
```
|
||||
Чтобы ограничить количество лог-файлов, нужно отредактировать файл `/etc/logrotate.d/rsyslog`. Посмотрев содержимое файла `/etc/logrotate.d/rsyslog`, мы увидим, что дефолтное значение параметра `rotate` равно `4`:
|
||||
```bash
|
||||
cat /etc/logrotate.d/rsyslog
|
||||
```
|
||||
```plaintext
|
||||
/var/log/syslog
|
||||
/var/log/mail.info
|
||||
/var/log/mail.warn
|
||||
/var/log/mail.err
|
||||
/var/log/mail.log
|
||||
/var/log/daemon.log
|
||||
/var/log/kern.log
|
||||
/var/log/auth.log
|
||||
/var/log/user.log
|
||||
/var/log/lpr.log
|
||||
/var/log/cron.log
|
||||
/var/log/debug
|
||||
/var/log/messages
|
||||
{
|
||||
rotate 4
|
||||
weekly
|
||||
missingok
|
||||
notifempty
|
||||
compress
|
||||
delaycompress
|
||||
sharedscripts
|
||||
postrotate
|
||||
/usr/lib/rsyslog/rsyslog-rotate
|
||||
endscript
|
||||
}
|
||||
```
|
||||
Можно изменить `4` на какое-то другое значение, например, на `1`, чтобы хранился только один файл. В папке `/etc/logrotate.d/` вы найдёте также множество других конфигурационных файлов, относящихся к другим лог-файлам, там вы тоже можете изменить параметр `rotate`.
|
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: "Linux: Как настроить мониторинг с уведомлениями в Telegram"
|
||||
date: "2023-03-04"
|
||||
---
|
||||
В статье описывается, как настроить мониторинг с уведомлениями в Telergram с помощью Grafana, Prometheus, Alertmanager, Node-exporter и Cadvisor.
|
||||
### Первый шаг: Клонирование репозитория
|
||||
Зайдите на сервер или в локальный терминал и выполните следующие команды:
|
||||
```bash
|
||||
git clone https://github.com/digitalstudium/grafana-docker-stack.git
|
||||
cd grafana-docker-stack
|
||||
git checkout alertmanager
|
||||
```
|
||||
<!--more-->
|
||||
### Второй шаг: установка внешнего адреса сервера
|
||||
Откройте файл `docker-compose.yml` и в строках 22 и 38 измените адрес `127.0.0.1` на адрес того сервера, на котором вы хотите установить Prometheus.
|
||||
### Третий шаг: создание бота в Telegram
|
||||
В поиске Telegram наберите `Botfather` и перейдите по первой ссылке:
|
||||
|
||||

|
||||
|
||||
Затем нажмите `Start`:
|
||||
|
||||

|
||||
|
||||
После этого создайте бота, пользуясь инструкциями `Botfather`.
|
||||
В итоге вы должны получить сообщение с токеном API:
|
||||
|
||||

|
||||
|
||||
Скопируйте данный токен и вставьте его в строку 14 файла `configs/alertmanager.yml` в качестве значения параметра `bot_token`.
|
||||
|
||||
Затем создайте группу в телеграм и добавьте созданного бота в эту группу. В эту группу будут приходить уведомления (алёрты).
|
||||
|
||||
### Четвертый шаг: Получение id группы
|
||||
В группе, к которой вы добавили бота, напишите какую-ниюудь команду, например: `/my_id foobar`
|
||||
|
||||
Затем в браузере перейдите по ссылке
|
||||
`https://api.telegram.org/botINSERT_BOT_TOKEN_HERE/getUpdates`, заменив `INSERT_BOT_TOKEN_HERE` на токен, созданный на шаге 3.
|
||||
Вы должны получить примерно такую страницу:
|
||||
|
||||

|
||||
Если на вашей странице ничего нет, попробуйте отправьте команду `/my_id foobar` в группу ещё раз.
|
||||
|
||||
Вам нужно скопировать значение chat id с этой страницы и вставить его в строку 15 файла `configs/alertmanager.yml` в качестве значения параметра `chat_id`. Обратите внимание, что значение параметра `chat_id` должно быть без кавычек и со знаком дефиса вначале.
|
||||
|
||||
### Пятый шаг: развёртывание docker стэка
|
||||
Находясь в папке `grafana-docker-stack`, выполните следующие команды:
|
||||
```bash
|
||||
docker swarm init
|
||||
docker stack deploy -c docker-compose.yml monitoring
|
||||
```
|
||||
Подождите 5-10 минут, затем выполните команду
|
||||
```bash
|
||||
docker ps
|
||||
```
|
||||
|
||||
Вывод команды должен содержать 5 контейнеров: prometheus, grafana, alertmanager, node-exporter, grafana.
|
||||
```plaintext
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
46fba26e7234 gcr.io/cadvisor/cadvisor:v0.47.0 "/usr/bin/cadvisor -…" 5 days ago Up 5 days (healthy) 8080/tcp monitoring_cadvisor.1.q02qcn798dh0rydo1dzslylse
|
||||
f212e3c66786 prom/alertmanager:v0.25.0 "/bin/alertmanager -…" 6 days ago Up 6 days 9093/tcp monitoring_alertmanager.1.oysziztrqnur7xr0hr82avunz
|
||||
c16fb14929e2 prom/prometheus:v2.42.0 "/bin/prometheus --c…" 6 days ago Up 6 days 9090/tcp monitoring_prometheus.1.yslspi4fgjp7ic4f5e18gm99a
|
||||
9bf01ce6b7a1 grafana/grafana:9.3.6-ubuntu "/run.sh" 6 days ago Up 6 days 3000/tcp monitoring_grafana.1.mypn85x12xw37ucprr33knuwk
|
||||
58efdb46f5c3 kindest/node:v1.25.3 "/usr/local/bin/entr…" 6 days ago Up 6 days 127.0.0.1:46579->6443/tcp kind-control-plane
|
||||
ae15e453e517 prom/node-exporter:v1.5.0 "/bin/node_exporter …" 7 days ago Up 7 days 9100/tcp monitoring_node-exporter.1.uecim10ow12h1qlpox5lg0c5r
|
||||
```
|
||||
Если вы видите такой вывод, значит всё развернулось успешно. Если нет, попробуйте повторить все предыдущие шаги.
|
||||
|
||||
### Шестой шаг: проверить работоспособность
|
||||
|
||||
Зайдите по адресу [ip-адрес или доменное имя сервера]:3000
|
||||
У вас должна открыться Grafana. Введите логин `admin` и пароль `admin`. Grafana попросит сменить пароль, смените его на любой другой.
|
||||
В разделе Dashboard -> Browse -> General вы увидите 2 дашборда: Cadvisor exporter и Node Exporter Full. Откройте их и убедитесь, что всё работает.
|
||||
|
||||
## Итог
|
||||
Теперь вы можете оценивать производительность сервера через графики Grafana.
|
||||
Также вам будут приходить уведомления о проблемах с сервером в группу Telegram. Правила уведомлений можно настроить в файле `configs/prometheus/alert_rules.yml`
|
Reference in New Issue
Block a user