LVM и головные мюсли
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-11-12 00:29:17 +03:00
parent 516c330dc2
commit 7ef1ee250f
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
7 changed files with 168 additions and 3 deletions

View File

@ -9,7 +9,7 @@ date: 2024-03-31
**Особенности:** **Особенности:**
- Для **первичного ключа** индекс создается автоматически. - Для **первичного ключа** индекс создается автоматически.
- Можно **отключить автоматическое обновление индекса** и настроить обновление вручную. - Можно **отключить автоматическое обновление индекса** и настроить обновление вручную.
- **Распухание индексов** (bloat) — это проблема увеличения размера индексов со временем, требующая переиндексации. - **Распухание индексов** ([[Раздутие таблиц|bloat]]) — это проблема увеличения размера индексов со временем, требующая переиндексации.
- [[Создание индекса в PostgreSQL]] - [[Создание индекса в PostgreSQL]]
- [[../Частичный индекс|Частичный индекс]] - [[../Частичный индекс|Частичный индекс]]
@ -24,8 +24,8 @@ date: 2024-03-31
- [[BRIN индекс в PostgreSQL|BRIN индекс]] - [[BRIN индекс в PostgreSQL|BRIN индекс]]
**Влияние обновления строки на индекс** **Влияние обновления строки на индекс**
- **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом (bloat), индекс распухает, его нужно убрать vacuum. - **Обновление индексированной колонки.** По факту мы добавляем новую запись в индекс, а старую забываем. Старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать - [[Autovacuum]].
- **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом (bloat), индекс распухает, его нужно убрать vacuum. - **Обновление не индексированной колонки.** Если строка в таблице остается на той же [[../DB page|странице бд]], то есть было место на странице, то индекс не меняется. Если строка не помещается, то добавляется новая запись в индекс, а старая остается мертвым грузом ([[Раздутие таблиц|bloat]]), индекс распухает, его нужно убрать vacuum.
*** ***
## Мета информация ## Мета информация
**Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]] **Область**:: [[../../../meta/zero/00 PostgreSQL|00 PostgreSQL]]

View File

@ -0,0 +1,34 @@
---
aliases:
- LVM
tags:
- maturity/🌱
date:
- - 2024-01-09
---
- [[Основные команды для управления LVM|Основные команды для управления LVM]]
Проверка состояния логических томов (LV)
```bash
sudo lvs -a -o +devices,lv_health_status
```
## Logical Volume
## Полезные материалы
- [Работа с LVM. Управление дисковыми носителями с помощью Logical Volume Manager](https://www.dmosk.ru/instruktions.php?object=lvm&ysclid=lr6peozovr651519872#delete)
***
## Мета информация
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
**Родитель**::
**Источник**::
**Автор**::
**Создана**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
- [[Основные команды для управления LVM]]
<!-- SerializedQuery END -->

View File

@ -0,0 +1,80 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-11-12
---
Эта заметка содержит основные команды для работы с LVM (Logical Volume Management) в Linux. Команды разделены на несколько категорий: физические тома, группы томов, логические тома, управление файловыми системами, создание снимков, а также конфигурация и обслуживание.
## Physical Volumes
- `pvcreate <device>` — инициализация физического тома для использования в LVM.
- `pvdisplay` — отображение информации о физических томах.
- `pvs` — вывод всех физических томов с краткой информацией. Объем доступного и используемого пространства.
- `pvscan` — сканирование всех дисков на наличие физических томов.
- `pvresize <device>` — изменение размера физического тома.
## Volume Groups
- `vgcreate <volume-group> <physical-volume>` — создание группы томов из одного или нескольких физических томов.
- `vgextend <volume-group> <physical-volume>` — добавление физического тома в существующую группу томов.
- `vgreduce <volume-group> <physical-volume>` — удаление физического тома из группы.
- `vgdisplay` — отображение информации о группах томов.
- `vgs` — вывод всех групп томов с краткой информацией.
- `vgscan` — сканирование всех дисков для обнаружения групп томов.
- `vgremove <volume-group>` — удаление группы томов (должна быть пустой).
- `vgrename <old-name> <new-name>` — переименование группы томов.
## Logical Volumes
- `lvcreate -L <size> -n <name> <volume-group>` — создание логического тома в группе.
- `lvextend -L <size> <logical-volume>` — увеличение размера логического тома.
- `lvreduce -L <size> <logical-volume>` — уменьшение размера логического тома.
- `lvresize -L <size> <logical-volume>` — изменение размера логического тома до заданного значения.
- `lvdisplay` — отображение информации о логических томах.
- `lvs` — вывод всех логических томов с краткой информацией.
- `lvscan` — сканирование всех дисков для обнаружения логических томов.
- `lvrename <volume-group> <old-name> <new-name>` — переименование логического тома.
### Удаление Logical Volume
Размонтировать папку от LV.
```shell
umount /folder/path
```
Откройте `/etc/fstab` и убедитесь, что нет записи для автоматического монтирования файловой системы. Если есть, удалите запись, сохраните изменения и закройте файл.
```
nano /etc/fstab
```
Также нужно убедиться, что к данной папке не присоединен docker volume.
После чего можно удалить LV
```shell
lvchange -an /dev/vgname/lvmname
lvremove /dev/vgname/lvmname
```
### Управление файловыми системами на логических томах
- `mkfs.ext4 /dev/<volume-group>/<logical-volume>` — создание файловой системы ext4 на логическом томе.
- `mkfs.xfs /dev/<volume-group>/<logical-volume>` — создание файловой системы XFS на логическом томе.
- `mount /dev/<volume-group>/<logical-volume> /mnt` — монтирование логического тома в директорию.
- `umount /mnt` — размонтирование логического тома.
## 5. Снимки (Snapshots)
- `lvcreate -L <size> -s -n <snapshot-name> <lv>` — создание снимка логического тома.
- `lvremove <snapshot-name>` — удаление снимка.
- `lvconvert --merge <snapshot-name>` — объединение снимка с оригинальным логическим томом.
## 6. Конфигурация и обслуживание LVM
- `lvchange -a y <logical-volume>` — активация логического тома.
- `lvchange -a n <logical-volume>` — деактивация логического тома.
- `vgchange -a y <volume-group>` — активация группы томов.
- `vgchange -a n <volume-group>` — деактивация группы томов.
- `vgcfgbackup <volume-group>` — создание резервной копии метаданных группы томов.
- `vgcfgrestore <volume-group>` — восстановление метаданных группы томов из резервной копии.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
**Родитель**:: [[Logical Volume Management|Logical Volume Management]]
**Источник**::
**Создана**:: [[2024-11-12]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1 @@
5860554aa3f9f9759e9335019e1fe84c

View File

@ -0,0 +1,8 @@
---
tags:
- type/zero-link
---
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Область, this.file.link) or contains(zero-link, this.file.link) -->
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Область, this.file.link) or contains(zero-link, this.file.link) -->
- [[Исторически так сложилось]]
<!-- SerializedQuery END -->

View File

@ -0,0 +1,42 @@
---
aliases:
tags:
- maturity/🌱
- content/muesli
date: 2024-11-12
---
## Анекдот
Яша с утра спросил у супруги, почему она отрезает кончики сосисок, когда готовит их. «Не знаю, меня мама так научила, спроси у неё», — отвечает супруга. Яша оказался любопытным и пошёл к тёще. Он спросил: «Мама, почему действительно вы всё время кончики у сосисок отрезаете, когда варите?»
Она говорит: «Я не знаю, меня мама так научила. Если тебе интересно, позвони ей». Ну Яша такой любопытный, пошёл звонить. Звонит, говорит: «Ида Самуиловна, это Яша, ваша внучка (моя жена) и ваша дочь (моя тёща) всё время, когда варят сосиски, отрезают кончики и говорят, что это вы их научили. В чём смысл?»
«Вы что, до сих пор варите сосиски в той моей самой маленькой кастрюлечке?»
***
В старых проектах часто можно услышать фразу: "Исторически так сложилось". Это объяснение используется, когда никто уже не помнит, почему было принято какое-то решение, но все продолжают следовать этой практике. Как и в анекдоте, причина, по которой что-то делается именно так, теряется во времени, а изначальная необходимость, возможно, давно отпала.
Такие устаревшие решения могут быть следствием технических ограничений, которые были актуальны на момент создания системы, или обусловлены привычками и отсутствием времени на пересмотр принятых решений. С течением времени кодовая база разрастается, а оригинальные мотивации забываются. В итоге разработчики продолжают следовать устаревшим практикам, не подвергая их сомнению.
Ситуации, когда решение было принято "потому что так было удобно 10 лет назад", могут сдерживать развитие проекта и приводить к трудностям в поддержке и модернизации системы.
Разработка требует регулярного переосмысления архитектурных решений и устранения наследия, которое перестало приносить пользу. Периодически задавая вопрос "Почему это сделано именно так?", можно избежать накопления технического долга и упростить жизнь будущим разработчикам.
**Как бороться с наследием прошлого**
1. **Документировать решения**: Поддержка документации помогает понимать, почему определённое решение было принято, и облегчает пересмотр устаревших подходов. Например, Architecture decision log
2. **Регулярные ревизии кода**: Периодически пересматривайте старый код, чтобы выявлять и устранять неэффективные решения.
3. **Постоянное обучение команды**: Обучение помогает разработчикам понимать современные подходы и технологии, что позволяет быстрее определять устаревшие паттерны.
4. **Открытые обсуждения**: Создайте культуру, где команда может открыто задавать вопросы о текущих решениях и предлагать улучшения. Например TechTalk
***
## Мета информация
**Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]], [[../meta/zero/00 Разработка|00 Разработка]]
**Родитель**::
**Источник**::
**Создана**:: [[2024-11-12]]
**Автор**::
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->