Выпуск ZFSonLinux 0.6.5, реализации ZFS для ядра Linux
В рамках ZFSonLinux подготовлена реализация компонентов ZFS, связанных как с работой файловой системы, так и с функционированием менеджера томов. В частности, реализованы компоненты: SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) и ZPL (ZFS POSIX Layer). Дополнительно проектом обеспечена возможность использования ZFS в качестве бэкенда для кластерной файловой системы Lustre. Наработки проекта основаны на оригинальном коде ZFS, импортированном из проекта OpenSolaris и расширенном улучшениями и исправлениями от сообщества Illumos. Реализованная в ZFSonLinux версия пула и файловой системы совместима с ZFS из состава Illumos и FreeBSD. Проект развивается при участии сотрудников Ливерморской национальной лаборатории по контракту с Министерством энергетики США.
Код распространяется под свободной лицензией CDDL, которая несовместима с GPLv2, что не позволяет добиться интеграции ZFSonLinux в состав основной ветки ядра Linux, так как смешивание кода под лицензиями GPLv2 и CDDL недопустимо. Для обхода данной лицензионной несовместимости было решено распространять продукт целиком под лицензией CDDL в виде отдельно загружаемого модуля, который поставляется отдельно от ядра. Стабильность кодовой базы ZFSonLinux оценивается как сопоставимая с другими ФС для Linux.
Основные изменения:
- Обеспечение совместимости с ядрами Linux 4.1 и 4.2. В качестве минимально поддерживаемой версии заявлено ядро Linux 2.6.32;
- Поддержка временных опций монтирования (Temporary Mount Properties), задаваемых на этапе выполнения команды "zfs mount" (например, "zfs mount-o remount,noatime раздел");
- Возможность доступа к снапшотам в директории .zfs/snapshot через NFS;
- Реализация новых флагов подключаемой функциональности (feature flags):
- large_blocks - позволяет использовать наборы данных (dataset), с размером блока больше 128 Кб. Его можно выставить в диапазоне от 512 байт до 16 Мб (максимальный размер блока ограничивается лимитом zfs_max_recordsize, который по умолчанию установлен в 1 Мб). При использовании больших блоков следует иметь в ввиду, что при использовании механизма COW (Copy on Write) изменение даже одного байта в блоке приведёт к перезаписи на новое место всего блока. Большие блоки также могут привести к повышению задержек при вводе/выводе.
- filesystem_limits - для задания ограничений на файловую систему и снапшоты, например, для определённой области в ФС можно выставить лимит на число создаваемых снапшотов;
- Проведена оптимизация производительности:
- В zvol пропускная способность увеличена более чем на 50%, а задержки сокращены на 20%.
- В zil для ядер Linux до выпуска 2.6.40 задержки сокращены в 10 раз.
- На 5-10% улучшена производительность пулов, заполненных на 90%.
- Сокращено время удаления очень больших файлов;
- Увеличена эффективность кэширования за счёт уменьшения конкуренции блокировок.
- Улучшена эвристика управления размером кэша.
- Ускорено высвобождение отданных под кэш буферов при непредвиденной нехватки памяти.
- Возможность оценки размера отправляемого потока при использовании закладки (bookmark) в качестве источника;
- Размер зарезервированного дискового пространства увеличен с 1.6% до 3.3% от общего размера пула (изменить можно опцией spa_slop_shift);
- Административным командам разрешено использовать зарезервированное дисковое пространство;
- Возможность отправки из ZEDLET-ов (FS Event Daemon Linkage for Executable Tasks) уведомлений на email и через сервис pushbullet;
- В vdev_id.conf добавлена опция 'slot' для указания используемого номера слота;
- В команду "zpool export" добавлена опция "-a" для размонтирования и экспорта всех импортированных пулов;
- В команду "zpool iostat" добавлена опция "-y" для пропуска первого набора загрузочной статистики;
- В zdb добавлена возможность открытия корневого набора (root dataset), вывода числа связанных блоков (ganged blocks), показа детальной информации по объектам ("zdb -ddddd");
- В команде "zstreamdump -d" обеспечен показ содержимого блоков;
- Загрузка модулей ZFS теперь осуществляется при помощи systemd или скриптов sysv init. Отныне модули нужно загружать явно - запуск утилит zfs/zpool не приводит к автоматической загрузке модулей (старое поведение можно вернуть через установку переменной окружения ZFS_MODULE_LOADING=yes, которая будет удалена в одном из будущих выпусков);
- Унифицированы скрипты инициализации для SYSV и Gentoo OpenRC. Ранее доступная функциональность разнесена по скриптам zfs-import, zfs-mount, zfs-share и zfs-zed, что позволяет отдельно контролировать каждый компонент;
- В качестве предлагаемого по умолчанию метода сжатия задействован lz4;
- Использование операций mkdir/rmdir/mv в директории .zfs/snapshot по умолчанию запрещено и требует явного включения через опцию zfs_admin_snapshot.
Источник: http://www.opennet.ru/opennews/art.shtml?num=42948
|
0 | Tweet | Нравится |
|