Выгрузка (экспорт) данных тома
Актуальные данные тома или данные одного из его снапшотов вычитываются целиком или частично с сетевого блочного устройства и записываются в целевой файл (или стандартный поток вывода) в одном из поддерживаемых форматов образа. Действие выполняется с помощью операции export.
До начала выгрузки данных убедитесь, что:
Северы метаданных и чанков (MDS и CS) запущены и работают.
Файл /etc/storage/mds_list.yml существует и содержит корректную информацию о серверах метаданных кластера.
Нужный том присутствует в системе (например, с помощью команды storage volume list).
При необходимости задайте другое расположение для файла с информацией о серверах метаданных (mds_list.yml) с помощью опции --membership.
Для организации безопасного совместного доступа к данным утилита sbdctl устанавливает на исходном томе разделяемую блокировку на чтение (shared read-only lease). При этом возможна параллельная работа других клиентов, использующих блокировку, разрешающая совместный доступ на чтение (например, операции sbdctl export, запущенной на другом хосте). В случае, если другой клиент установил на исходном томе блокировку, исключающую совместный доступ на чтение (например, exclusive lease), то операция завершается с ошибкой, если не указана опция --revoke-lease.
Операция sbdctl export:
sbdctl export --volume-id <volume_id> [--file-to <output_file> | --stdout] <other options>
Задайте обязательные параметры:
--volume-id volume_id или -v volume_id — задает идентификатор тома в виде 64-битного числа в шестнадцатеричной системе счисления. Префикс 0x, характерный для такой записи чисел, можно не указывать. Список доступных томов можно посмотреть с помощью команды storage volume list.
--file-to file или -o file — задает путь к файлу, в который будет записан образ необходимых данных. Если в процессе выгрузки данных или записи их на локальный диск возникает ошибка, файл удаляется.
--stdout — вместо записи в файл использует запись в поток стандартного вывода (stdout). Нельзя использовать операторы перенаправления вывода в обычный файл (>file и >>file — используйте --file-to file). Можно использовать перенаправление вывода на вход другой программы, например, с помощью оператора конвейеризации ввода-вывода, либо же перенаправлять в специальный файл символьного устройства (например, /dev/null) c помощью операторов перенаправления вывода > и >>.
Задайте необязательные параметры:
--format arg — выбирает формат файла образа тома — sbd или raw. Формат по умолчанию — sbd. В некоторых случаях формат sbd является единственным доступным.
--snapshot N — позволяет указать идентификатор снапшота для выгрузки.
--snapshot-name arg — позволяет указать понятное имя снапшота (строка) для образов в формате sbd. При использовании формата образа raw эта опция игнорируется.
--part N — задает номер части тома для частичного экспорта. Значение должно лежать в пределах от 0 до volume size / min(volume size, part size) — 1 включительно, где volume size — размер тома, а part size — значение опции --part-size.
--part-size size — задает размер части тома для частичного экспорта. Значение по умолчанию — 32М. Значение должно быть ненулевым и кратным 4 Кб. В случае, если это значение превышает размеры тома, то том экспортируется целиком. Работает только с опцией --part arg, задающей номер обрабатываемой части, в противном случае опция игнорируется. Если размер тома не делится нацело на размер части, то при экспорте последней части тома ее размер будет равен остатку от деления размера тома на размер части. Для чтения произвольного диапазона данных тома в двоичном формате используйте команду sbdctl read.
--overwrite — позволяет утилите записать данные тома, перезаписывая уже существующий файл. Без указания этой опции утилита будет сообщать об ошибке при попытке перезаписи созданного ранее файла. В случае ошибки выгрузки данных или записи на локальный диск, файл, содержащий неполные данные тома, будет удален полностью.
--write-buffer size — позволяет выбрать размер буфера в памяти для записи на локальный диск. Значение по умолчанию — 16M (16 Мб). Возможные значения — от 8k до 128M (8 Кб и 128 Мб соответственно). Слишком маленькое значение этого параметра может привести к замедлению записи на локальный диск.
--read-size size — задает размер читаемых данных на каждый запрос на чтение с сетевому блочному устройству. Значение по умолчанию — 128k — считается оптимальным. Возможные значения — от 4k to 1M, они должны быть кратны 4 Кб. Слишком большие или слишком маленькие значения этого параметра могут привести к замедлению чтения с сетевого блочного устройства.
--max-concurrent-requests N или -j N — задает максимальное количество параллельных запросов на чтение с сетевого блочного устройства. Значение по умолчанию — 8 запросов. Слишком большие или слишком маленькие значения этого параметра могут привести к замедлению чтения данных тома. Под запросами имеются в виду вызовы клиентской библиотеки. Клиентская библиотека может создавать несколько RPC вызовов на один запрос.
--sparse arg или -s arg — включение/выключение sparse режима чтения. По умолчанию этот режим включен. При этом неиспользуемые блоки интерпретируются именно как неиспользуемые блоки. Если этот режим выключен, и используется «обычное» чтение, то неиспользуемые блоки интерпретируются как последовательности нулевых байт соответствующей длины. Объем данных, передаваемых по сети, не зависит от значения этого параметра, т.к. преобразование записей о неиспользуемых блоках в последовательности нулевых байт происходит на стороне клиента.
--incremental — позволяет выполнить выгрузку инкрементального снапшота. По умолчанию выгружается полный снапшот. Для работы этой опции нужно указать валидный идентификатор снапшота с помощью опции --snapshot, а так же включить sparse чтение с помощью опции --sparse.
--verbose — выводит статистику — число выполненных запросов, количество прочитанных байт — по мере выполнения операции. Статистика печатается в стандартный поток ошибок (stderr). После окончания операции отображается подробная статистика, аналогично опции --show-stats
--show-stats — выводит в стандартный поток ошибок (stderr) подробную статистику выполнения операции после ее окончания. Опция важна для диагностики медленной работы sbdctl.
--stats-json и --format-json — вывод статистики в формате JSON.
Опциональные параметры, управляющие поведением клиентской библиотеки сетевого блочного устройства:
--client-id arg — позволяет явно указать идентификатор клиента (десятичное число). По умолчанию выбирается случайный идентификатор.
--tout N — задает таймаут для вызова клиентской библиотеки в секундах. По умолчанию — 3 секунды. Нулевое значение соответствует бесконечному таймауту.
--cs-rpc-tout N — задает таймаут для RPC-запроса в chunk server в секундах. Нулевое значение (по умолчанию) соответствует бесконечному таймауту.
--mds-rpc-tout N — задает таймаут для RPC-запроса в metadata server в секундах. По умолчанию — 10 секунд. Нулевое значение соответствует бесконечному таймауту.
--revoke-lease — позволяет отозвать активные lease volume. Необходимо использовать эту опцию крайне осторожно, так как при этом все остальные клиенты, использующие этот том, будут отключены от него. Опция бывает полезной, если клиент аварийно завершил работу, не освободив свою рабочую lease.
--membership path — задает расположение для membership файла (упомянутый выше mds_list.yml). По умолчанию используется путь /etc/storage/mds_list.yml.
Поддерживаются все указанные выше параметры управления логированием.
Суффиксы (латинские буквы) для выбора единицы измерения при указании размеров блоков данных для опций --write-buffer, --read-size, --part-size:
k или K для килобайт, при этом 1 Кб принимается равным 1024 Б;
M для мегабайт, при этом 1 Мб принимается равным 1024 Кб;
G для гигабайт, при этом 1 Гб принимается равным 1024 Мб;
T для терабайт., при этом 1 ТБ принимается равным 1024 Гб;
Суффикс килобайт (k) записывается как строчной, так и заглавной буквами, в то время как остальные — только заглавными.
sbdctl не сохраняет в заголовке образа в формате sbd имя снапшота, назначенное при его создании с помощью команды storage snap make --name. Временная метка в образе соответствует времени выгрузки снапшота, а не времени его создания, которое показывается при запуске команды storage snap list. Из-за этого при просмотре файла образа с помощью sbdctl view может наблюдаться расхождение с тем, что показывает утилита storage.
Примеры использования
Выгрузка образа в формате sbd, выбранном по умолчанию:
sbdctl export --volume-id 0x670adb3d59bff77e --file-to volume.sbdВыгрузка образа в формате raw, с перезаписью существующего файла:
sbdctl export --volume-id 670adb3d59bff77e --file-to volume.raw --format raw --overwriteВыгрузка образа в формате raw без использования sparse чтения и записи:
sbdctl export --volume-id 670adb3d59bff77e --file-to volume.raw --format raw --sparse=0Выгрузка двоичного образа тома в формате raw на стандартный вывод:
sbdctl export -volume-id 670adb3d59bff77e --format raw --stdoutВыгрузка с перенаправлением вывода на вход другой программы:
sbdctl export -v 670adb3d59bff77e -f raw --stdout | tee volume.rawВыгрузка образа в формате raw и использованием альтернативного файла со списком MDS-серверов:
sbdctl export -v 670adb3d59bff77e -o volume.raw -f raw --membership /home/user/mds_list.ymlВыгрузка образа в формате sbd с использованием последовательных чтений мегабайтных блоков с сетевого блочного устройства с таймаутом 10 секунд, и явным указанием id клиента:
sbdctl export -v 670adb3d59bff77e -o volume.sbd -j 1 --read-size 1M --client 1 --tout 10Выгрузка полного снапшота с номером 3 и сохранение в формате по умолчанию (sbd, но можно использовать и raw):
sbdctl export -v 670adb3d59bff77e --snapshot 3 -o snap.sbdВыгрузка инкрементального снапшота, используется только sbd формат:
sbdctl export -v 670adb3d59bff77e --snapshot 3 -o delta.sbd -f sbd --incrementalЧастичная выгрузка данных в формате raw (формат может быть так же и sbd). Используется размер фрагмента 32 МБ и номер фрагмента 42 — это соответствует фактическому диапазону данных [0x54000000, 0x56000000 - 1]:
sbdctl export -v 670adb3d59bff77e -o part_42.raw -f raw --part-size 32M --part 42
- Примеры использования