Мы только что запустились. Сайт и сервис ещё дорабатываются — заранее просим прощения за возможные неточности и огрехи. Заметили ошибку или что-то работает не так? Напишите нам — быстро исправим.

← Все проекты
RU
Не только TAKT

zfs

Форк OpenZFS. Ветка по умолчанию зеркалит upstream master; собственная работа проекта лежит в отдельных ветках: прототип перестройки RAIDZ на месте и материалы, чтобы предложить её в upstream.

  • OpenZFS
  • RAIDZ
  • C
Статус
По словам самого репозитория — проверенный прототип, а не законченная функция: не готов к продакшену, формат на диске не окончательный. Проверен матрицами потери дисков, точками сбоя, KASAN и длительными прогонами; масштаб больших пулов и полный прогон ZTS ещё впереди.
Лицензия
CDDL, как в upstream OpenZFS; исключения указаны в отдельных исходных файлах.
Платформы
Linux; проверено в лабораторной ВМ Ubuntu на QEMU/KVM на сборках от zfs-2.4.4 и от текущего master.

Какую задачу решает

Если пул обслуживает работающие виртуальные машины и контейнеры, сменить избыточность RAIDZ или убрать диск сегодня можно только в окно обслуживания: перенести гостей, экспортировать пул, перестроить, вернуть всё обратно. Расширение RAIDZ в OpenZFS 2.3 добавило только онлайн-увеличение ширины. Цель этой работы — менять геометрию живого пула на месте, используя только свободное место самого пула и сохраняя снапшоты и клоны.

Основные возможности

  • zpool reparity повышает или понижает чётность RAIDZ на месте (raidz1 ↔ raidz2 ↔ raidz3); с --online датасеты остаются смонтированными, а с --async, --status и --cancel операция идёт в фоне.
  • Таблица эпох раскладки для каждого vdev под одним новым флагом функции (рабочее имя com.openzfs:raidz_parity_epochs): каждый блок читается и восстанавливается в той геометрии, в которой был записан.
  • Фиксация по принципу fail-closed: новая чётность вступает в силу, только когда перепись блоков не находит ни одного со старой; иначе проход продолжается, в том числе после сбоя.
  • Офлайн-инструменты zhack: удаление диска из RAIDZ vdev (N → N−1), перестройка со снапшотами и клонами, пересчёт контрольных сумм и пересжатие существующих данных; последние два — экспериментальные.
  • Функциональные тесты ZTS и man-страницы для новых команд; RFC и стек веток, подготовленные для ревью в upstream.

Как это работает

Каждый RAIDZ vdev верхнего уровня получает небольшую таблицу записей {start_txg, width, parity}, которая только дописывается, — той же формы, что и существующие записи расширения RAIDZ. Геометрия блока выбирается по txg его рождения, поэтому старые и новые блоки сосуществуют. Ограниченный проход, который возобновляется после сбоя, переписывает существующие блоки обычным copy-on-write. Кодирование строк RAIDZ, формат указателей блоков и ashift не меняются.

zpool reparity [--online | --async | --status | --cancel] [--target N] pool

Требования

  • Пул с RAIDZ vdev. Флаг функции несовместимый и становится активным при первой перестройке.
  • Собирается из исходников, как OpenZFS. Ветки ozfs-pr/1-parity-epochs-recon, ozfs-pr/2-reparity-command и ozfs-pr/3-reshape-toolkit основаны на master, feat/raidz-* — на zfs-2.4.4.
  • Для удаления диска и офлайн-инструментов zhack пул нужно экспортировать.

Эта страница кратко пересказывает README и документацию репозитория по состоянию на октябрь 2026 года. Первоисточник — сам репозиторий.