Пометка участков тома как не используемых
Диапазоны целевого тома могут быть помечены как неиспользуемые с помощью операции unmap блочного устройства. Это действие выполняется с помощью операции trim.
До начала убедитесь, что:
Северы метаданных и чанков (MDS и CS) запущены и работают.
Файл /etc/storage/mds_list.yml существует и содержит корректную информацию о серверах метаданных кластера.
Нужный том присутствует в системе и диапазон для записи данных не выходит за его границы.
Для организации безопасного совместного доступа к данным утилита sbdctl устанавливает на целевом томе эксклюзивную блокировку (exclusive lease). При этом параллельная работа любых других клиентов с этим томом невозможна. В случае, если другой клиент уже установил блокировку на целевом томе, то операция завершается с ошибкой (при условии, что не указана опция --revoke-lease). Аналогично write текущая реализация trim гарантирует только изоляцию от других клиентов. Но атомарность и консистентность записи при этом уже не гарантируются, т.к. в случае ошибки диапазон может быть помечен как неиспользуемый лишь частично, и откатить такую операцию не получится. При этом данные на целевом volume могут стать логически неконсистентными с точки зрения других клиентов. В таком случае операцию можно запустить повторно с теми же самыми параметрами.
Операция sbdctl trim:
sbdctl trim --volume-id <volume_id> --offset <offset> --trim-size <size> <other options>
Обязательные параметры:
--volume-id volume_id или -v volume_id — задает идентификатор тома в виде 64-битного числа в шестнадцатеричной системе счисления. Префикс 0x, характерный для такой записи чисел, можно не указывать.
--offset offset или -o offset — задает смещение начала помечаемого диапазона в байтах. Указывается в виде 64-битного числа в шестнадцатеричной системе счисления. Префикс 0x, характерный для такой записи чисел, можно не указывать.
--trim-size size или -s size — задает длину диапазона, который будет помечен как неиспользуемый. Для этой опции можно использовать размерные суффиксы.
Необязательные параметры:
--batch-size N — задает максимальное количество параллельно выполняющихся запросов к CS. Каждый такой запрос соответствует операции unmap для некого поддиапазона, длина которого зависит от текущей схемы кодирования. Допустимый диапазон значений — от 1 до 1024 включительно. При использовании больших значений N может потребоваться указать увеличенное значение тайм-аута клиентской библиотеки с помощью опции --tout.
--show-stats — выводит в стандартный поток ошибок (stderr) подробную статистику выполнения операции после ее окончания.
--stats-json и --format-json — вывод статистики в формате JSON.
Также поддерживаются все указанные параметры, управляющие логированием и параметры, управляющие поведением клиентской библиотеки сетевого блочного устройства. Oни являются опциональными и имеют такую же семантику, как и в случае операций export и import.
В случае, если смещение и/или размер не выравнены по границе блока, то это приводит к тому, что блоки в начале и/или конце диапазона помечаются как неиспользуемые лишь частично. Физически это приводит к тому, что соответствующие участки блоков заполняются нулями, но блок не помечается, как неиспользуемый. В отличие от sbdctl read и sbdctl write, у параметра offset нет значения по умолчанию.
Примеры использования
Пометить первые 100 мегабайт тома как неиспользуемые:
sbdctl trim --volume-id 0x670adb3d59bff77e --offset 0 --trim-size 100M
Пометить диапазон от 4 до 6 Гб как неиспользуемый:
sbdctl trim -v 0x670adb3d59bff77e -o 0x100000000 -s 2G
Пометить диапазон от 4 до 6 Гб как неиспользуемый с большим размером батча:
sbdctl trim -v 0x670adb3d59bff77e -o 0x100000000 -s 2G --batch-size 1024 --show-stats
- Примеры использования