forked from vitalif/vitastor
35 lines
2.3 KiB
Markdown
35 lines
2.3 KiB
Markdown
|
[Документация](../../README-ru.md#документация) → [Конфигурация](../config.ru.md) → Метаданные образов в etcd
|
|||
|
|
|||
|
-----
|
|||
|
|
|||
|
[Read in English](inode.en.md)
|
|||
|
|
|||
|
# Метаданные образов в etcd
|
|||
|
|
|||
|
Список образов хранится в etcd в ключах `/vitastor/config/inode/<pool>/<inode>`.
|
|||
|
|
|||
|
Вы можете даже создавать образы вручную:
|
|||
|
|
|||
|
```
|
|||
|
etcdctl --endpoints=<etcd> put /vitastor/config/inode/<pool>/<inode> '{"name":"<name>","size":<size>[,"parent_id":<parent_inode_number>][,"readonly":true]}'
|
|||
|
```
|
|||
|
|
|||
|
Например:
|
|||
|
|
|||
|
```
|
|||
|
etcdctl --endpoints=http://10.115.0.10:2379/v3 put /vitastor/config/inode/1/1 '{"name":"testimg","size":2147483648}'
|
|||
|
```
|
|||
|
|
|||
|
Если вы зададите parent_id, то образ станет CoW-клоном, т.е. все новые запросы записи пойдут в новый инод, а запросы
|
|||
|
чтения будут проверять сначала его, а потом родительские слои по цепочке вверх. Чтобы случайно не перезаписать данные
|
|||
|
в родительском слое, вы можете переключить его в режим "только чтение", добавив флаг `"readonly":true` в его запись
|
|||
|
метаданных. В таком случае родительский образ становится просто снапшотом.
|
|||
|
|
|||
|
Таким образом, для создания снапшота вам нужно просто переименовать предыдущий inode (например, из testimg в testimg@0),
|
|||
|
сделать его readonly и создать новый слой с исходным именем образа (testimg), ссылающийся на только что переименованный
|
|||
|
в качестве родительского.
|
|||
|
|
|||
|
vitastor-cli и драйвера K8s, OpenStack и т.п. также хранят обратный маппинг в ключах `/vitastor/index/image/<name>`
|
|||
|
в JSON-формате: `{"id":<inode>,"pool_id":<pool>}` и счётчики ID `/vitastor/index/maxid/<pool>` в виде просто чисел
|
|||
|
для упрощения генерации ID новых образов.
|