Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add data wipe #122

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions crds/lvmlogicalvolume.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ spec:
message: Value is immutable.
description: |
If true, the Logical Volume will be created with the contiguous flag. Use it carefully as LV might not be created even if there is enough space in VG.
# secureEraseForHDD:
source:
type: object
description: |
Expand Down
40 changes: 40 additions & 0 deletions docs/USAGE.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,43 @@ kubectl delete lvg %lvg-name%
> **Внимание!** Если удаляемый ресурс `LVMVolumeGroup` содержит `Logical Volume` (даже если это только `Thin-pool`, который указан в `spec`) пользователю необходимо самостоятельно удалить все `Logical Volume`, которые содержит удаляемая `Volume Group`. В противном случае ни ресурс, ни `Volume Group` удалены не будут.

> Пользователь может запретить удаление `LVMVolumeGroup` ресурса, повесив на ресурс специальную аннотацию `storage.deckhouse.io/deletion-protection`. При наличии данной аннотации контроллер не будет удалять ни ресурс, ни соответствующую `Volume Group` до тех пор, пока аннотация не будет снята с ресурса.

## Безопасность удаления данных

Удаление данных работает по-разному на жестких дисках и твердотельных накопителях. Это продиктовано различиями в принципах работы этих устройств.

Жесткий диск при записи данных в блок физически заменяет старые данные новыми. Твердотельный накопитель пишет новые данные в новый блок, а старый блок помечает для очистки. При этом блоки твердотельного накопителя имеют ограниченный ресурс циклов очистки/записи. Для продления срока службы твердотельных накопителей предусмотрена команда `discard`, которая помечает блок свободным напрямую, без записи новых данных.

> **Внимание!** Недоступность данных после `discard` зависит от физического устройства.

Для предотвращения утечки данных между виртуальными машинами через блочные устройства LVM сконфигурирован так:

* обычные тома:
* `devices/issue_discards=1` для отправки `discard` на физическое устройство, когда блоки перестают использоваться LVM, например при удалении томов. Не влияет на thin-тома, только на весь thin pool
* thin-тома:
* `allocation/thin_pool_discards="passdown"` для пересылки `discard` на устройство с thin-томов
* `allocation/thin_pool_zero=1` для зануления блоков thin-томов при первом использовании

Для жестких дисков добавлена опция `secureEraseForHDD` в `LVMLogicalVolume` и `LocalStorageClass`, которая задает процедуру очистки блоков при удалении логических томов. Опцию можно отредактировать перед удалением тома.

> **Внимание!** Эту опцию нельзя включить для thin-томов.

В результате:

* Для жестких дисков добавлена опция `secureEraseForHDD`:
* задает процедуру очистки блоков, удаляемых логических томов
* нельзя включить для thin-томов
* Для твердотельных накопителей:
* LVM пересылает `discard` с логических томов на физическое устройство (с какой версии?)
* при удалении логических томов `discard` отправляется на все занятые этими томами блоки физического устройства
* Для thin-томов:
* включена настройка LVM, гарантирующая вычитывание нулей из блоков и их областей, которые ещё не были записаны.
* при освобождении блоков через `discard` логического тома, команда пересылается на физическое устройство
* нельзя включить опцию `secureEraseForHDD`

TODO: Подсветить:

* Будет-ли ошибка при создании thin volume на HDD?
* Не все твердотельные накопители дают гарантии чтения из освобожденных блоков. Будет ошибка?
* Очистка физических устройств при удалении из Volume Group?
* С какой версии LVM пересылает дискарды с логических томов?
Loading