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. Инструкция
Просьба обратить внимание, что есть внешняя зависимость от alias.
- etcdctl
- ectl
- nectl
etcdctlDefrag --cluster
ectlDefrag --cluster
nectlDefrag --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]
Для корректной работы etcd кластера, в том числе для запуска дефрагментации, размер ОЗУ должен быть больше размера БД. В процессе своей работы, ETCD может загружать весь объем данных в оперативную память.