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

Как посмотреть и изменить свойства датасета

Когда использовать​

Когда вопрос касается конкретного диска виртуальной машины, а не пула целиком: какая на нём компрессия, сколько он занимает на самом деле, сколько места держат его снимки, включена ли дедупликация. Диск виртуальной машины лежит в датасете пула, и свойства ZFS читаются и правятся именно на уровне датасета.

Второй повод — сменить алгоритм компрессии у отдельного диска, не трогая остальные. Например, поднять степень сжатия на датасете с холодными данными.

Инструкция не подходит для изменения размера диска и для операций со снимками: это операции уровня виртуальной машины. Через свойства датасета их не заменить.

Предусловия​

  • чтение свойств — роль администратора ВЦОД (Виртуальный Центр Обработки Данных) и выше, и только для датасетов своего ВЦОД;
  • правка свойств — та же роль администратора ВЦОД и выше, тоже внутри своего ВЦОД; глобальная роль работает с датасетами любого ВЦОД;
  • в кластере включена фича filesystem_options — без неё свойства датасета недоступны;
  • алгоритмы zstd и zstd-fast доступны, когда в кластере включена фича zstd_enabled;
  • версия vStack Center — 3.0.5.

Шаги​

Шаг 1. Откройте свойства датасета​

  1. Откройте виртуальную машину: Virtual Data Centers → нужный ВЦОД → Virtual Machines → машина. Из кластера тот же список открывается пунктом All Virtual Machines.
  2. Прокрутите страницу машины до раздела Disks. Таблица показывает диски машины: Name, Slot, Disk size (GB), Sector size, IOps limit, MBps limit.
  3. В строке нужного диска раскройте меню действий и выберите Filesystems.

Откроется форма свойств датасета этого диска. В шапке — GUID диска, дата создания и полное имя датасета вида pool-a/vm-100-disk-0: по нему видно, в каком пуле лежит диск.

Если пункта Filesystems в меню нет, в кластере выключена фича filesystem_options.

Шаг 2. Прочитайте свойства​

Форма собрана блоками.

БлокЧто в нём
Size, Reservationзаявленный размер тома и резерв под него; у диска виртуальной машины размер из этой формы не меняется
Compressionалгоритм сжатия и его уровень, рядом значения Compressratio и Refcompressratio
CachePrimarycache и Secondarycache — что кешируется
Прочие свойстваChecksum, Dedup, Copies, Logbias
Usedзанятое место с разбивкой: Usedbydataset, Usedbychildren, Usedbyrefreservation, Usedbysnapshots, Logicalused
Остальные поляAvailable, Refreservation, Referenced, Logicalreferenced, Written, Volblocksize

Читайте форму так. Size — заявленный размер тома, то есть то, что видит гостевая система. Used — сколько датасет занимает в пуле сейчас, и оно меньше заявленного размера до тех пор, пока гость не записал весь диск. Usedbysnapshots показывает долю, которую держат снимки; сами снимки перечислены в разделе Snapshots страницы машины. Если диск в пуле «весит» больше, чем данные внутри гостя, разница почти всегда лежит в этих полях. Compressratio показывает, что дало сжатие.

Полный состав свойств датасета разобран в справочнике.

Шаг 3. Смените компрессию​

  1. В блоке Compression выберите алгоритм: on, off, lz4, gzip, lzjb, zle, а в кластере с включённой фичей zstd_enabled — ещё zstd и zstd-fast.
  2. Для gzip, zstd и zstd-fast задайте уровень рядом с алгоритмом: gzip — от 1 до 9, zstd — от 1 до 19, zstd-fast — значение из своего набора. Меньшее значение означает быстрее, большее — плотнее.
  3. Нажмите Apply. Кнопка активна только тогда, когда в форме есть изменения.
  4. Дождитесь уведомления о том, что файловая система изменена.

Отправляются только изменённые свойства, остальные форма не переписывает. Принадлежность датасета к ВЦОД проверяется до записи и до обращения к узлу: чужой датасет отклоняется на входе, изменения при этом не применяются нигде.

Смена компрессии действует вперёд: уже записанные блоки остаются в старом формате, новый алгоритм применяется к новой записи. Поэтому Compressratio после правки двигается постепенно, а не сразу.

Переключатель Readonly в этой же форме переводит датасет в режим только чтения. Рядом с ним стоит предупреждение о влиянии на производительность — это не косметика, а рабочее ограничение.

Проверка результата​

Закройте форму и откройте Filesystems у того же диска снова.

Ожидаемо: в блоке Compression стоит новый алгоритм, полное имя датасета в шапке то же. Значение Compressratio в этот момент ещё отражает старые данные — это нормально.

Если не получилось​

Пункта Filesystems в меню диска нет. В кластере выключена фича filesystem_options; при обращении к API она отвечает кодом -87, «Filesystems methods has not been enabled». Обхода нет: пока фича не включена, свойства датасета недоступны.

Форма недоступна, поля заблокированы, кнопки Apply нет. Роли не хватает. Чтение и правка свойств открыты администратору ВЦОД и выше; запрос без этого права отклоняется с кодом -403, «Access denied». Пользователь ВЦОД получает -403 и на чтение.

Форма не открывается, датасет не найден (-58 на чтении, -88 на записи, «Dataset does not exist at users scope»). Датасет либо не существует, либо принадлежит другому ВЦОД. Один ответ на два случая — это защита: существование чужого датасета не раскрывается. Обход — проверьте, что открываете диск машины своего ВЦОД; датасеты других ВЦОД доступны только глобальной роли.

Форма открылась, но свойства не пришли (-57 на чтении, -86 на записи, «param guid has bad value»). Тот же ответ закрывает и негодный идентификатор диска, и сбой связи с узлом. Обновите страницу машины и проверьте, отвечает ли узел, который обслуживает пул этого датасета.

У строки датасета в базе пусто имя (-53 и -83, «Unable to locate the dataset»). Строку датасета диспетчер нашёл, поле имени у неё пустое, и до узла запрос не доходит. Удалённый диск отвечает кодом -58 или -88, потому что строки в базе уже нет.

Пулу датасета не назначен обслуживающий узел (-54 и -84, «Unable to locate the pool of the dataset»). Строку пула диспетчер нашёл, поле текущего узла у неё пустое, и ретранслировать запрос некуда. Посмотрите Current node этого пула в таблице ZFS pools. Как её открыть, разобрано в «Как посмотреть пулы кластера».

См. также​

Методы API​

Операции этой страницы в API: filesystems-get, filesystems-set — см. Справочник API.