Disk
Описание
Disk - постоянное хранилище.
На диске лежат:
-
файлы ОС,
-
приложение,
-
логи,
-
данные БД,
-
индексы,
-
бэкапы,
-
временные файлы.
Связанные темы:
WAL, Checkpoint и восстановление
Что важно у диска
-
место, GB/TB,
-
IOPS - сколько операций чтения/записи,
-
throughput - сколько MB/s,
-
latency - как быстро отвечает диск,
-
надёжность,
-
тип: HDD, SSD, NVMe, сетевой диск.
Много места не значит быстрый диск.
Куда тратится диск
-
таблицы БД,
-
индексы,
-
WAL/журналы транзакций,
-
temp files от сортировок,
-
логи приложения,
-
Docker images,
-
backups,
-
артефакты сборки.
VM
В VM диск часто виртуальный.
Физически он может быть:
-
на том же сервере,
-
на SAN/NAS,
-
в облачном volume.
Проблема:
-
в VM видно "диск есть",
-
но реальная скорость зависит от хранилища под ним.
Kubernetes
У pod есть временная файловая система.
Если pod умер, временные данные могут пропасть.
Для важных данных нужен:
-
Persistent Volume,
-
StatefulSet,
-
backup,
-
понятная политика хранения.
БД в Kubernetes можно запускать, но нужно аккуратно:
-
storage class,
-
latency диска,
-
backup/restore,
-
обновления,
-
anti-affinity,
-
мониторинг.
Bare metal
Bare metal - физический сервер без слоя VM.
Плюсы:
-
меньше накладных расходов,
-
понятнее где диск,
-
можно получить максимум I/O.
Минусы:
-
сложнее быстро масштабировать,
-
сложнее переносить,
-
отказ железа сильнее влияет.
Как оптимизировать
-
не хранить лишние логи бесконечно,
-
чистить старые Docker images,
-
разделять данные и бэкапы,
-
следить за WAL/temp files,
-
проверять медленные запросы через Explain,
-
добавлять индексы осознанно: индекс ускоряет чтение, но занимает диск и замедляет запись,
-
для БД выбирать SSD/NVMe, если много random I/O.