Перейти к основному содержимому

5.1.5.4.2. Дефрагментация

Дефрагментация – это процесс физического восстановления дискового пространства после уплотнения. Хотя уплотнение и удаляет логически старые ревизии, фактическое дисковое пространство не освобождается автоматически, из-за особенностей работы нижележащей базы данных (BoltDB в etcd).

5.1.5.4.2.1. Как работает

  • Дефрагментация выполняется вручную, с помощью команды etcdctl defrag или через API.

  • ETCD считывает активные данные и записывает их в новую базу данных, игнорируя пустое пространство, оставшееся от удаленных ревизий.

  • После перезаписи старая база данных заменяется новой, и неиспользуемое дисковое пространство возвращается операционной системе.

5.1.5.4.2.2. Предпосылки

  • Из-за особенностей BoltDB, даже после удаления данных, физическое пространство не освобождается автоматически.

  • Для эффективного использования дискового пространства и предотвращения его исчерпания, требуется периодическая дефрагментация.

  • Дефрагментация может улучшить производительность ввода-вывода за счет упорядочивания данных и уменьшения размеров файлов базы данных.

5.1.5.4.2.3. Инструкция

warning

Просьба обратить внимание, что есть внешняя зависимость от alias.

etcdctlDefrag --cluster
Вывод команды

При удачном выполнении команды получим следующего вида сообщение.

Finished defrag --clustermenting etcd member[https://master-1.my-first-cluster.example.com:2379]
Finished defrag --clustermenting etcd member[https://master-2.my-first-cluster.example.com:2379]
Finished defrag --clustermenting etcd member[https://master-3.my-first-cluster.example.com:2379]
warning

Для корректной работы etcd кластера, в том числе для запуска дефрагментации, размер ОЗУ должен быть больше размера БД. В процессе своей работы, ETCD может загружать весь объем данных в оперативную память.