Linux 0.8.0 上の ZFS のリリース、Linux カーネル用の ZFS の実装

約XNUMX年の開発期間を経て 提示された 解放する Linux 上の ZFS 0.8.0、Linux カーネルのモジュールとしてパッケージ化された ZFS ファイル システムの実装。 このモジュールは、2.6.32 から 5.1 までの Linux カーネルでテストされています。 すぐに使えるインストールパッケージが近日公開予定 準備されます Debian、Ubuntu、Fedora、RHEL/CentOS などの主要な Linux ディストリビューション用。 ZFS on Linux モジュールは、Debian、Ubuntu、Gentoo、Sabayon Linux、および ALT Linux ディストリビューションにすでに含まれています。

Linux 上の ZFS の一部として、ファイル システムの操作とボリューム マネージャーの機能の両方に関連する ZFS コンポーネントの実装が準備されています。 特に、SPA (ストレージ プール アロケーター)、DMU (データ管理ユニット)、ZVOL (ZFS エミュレート ボリューム)、および ZPL (ZFS POSIX レイヤー) のコンポーネントが実装されています。 さらに、このプロジェクトは、Lustre クラスター ファイル システムのバックエンドとして ZFS を使用する機能を提供します。 このプロジェクトの作業は、OpenSolaris プロジェクトからインポートされたオリジナルの ZFS コードに基づいており、Illumos コミュニティからの改善と修正によって強化されています。 このプロジェクトは、米国エネルギー省との契約に基づき、リバモア国立研究所の従業員の参加により開発されています。

コードは無料の CDDL ライセンスの下で配布されますが、GPLv2 と互換性がありません。GPLv2 ライセンスと CDDL ライセンスの下でコードを混合することは許可されていないため、Linux 上の ZFS を Linux カーネルのメイン ブランチに統合することはできません。 このライセンスの非互換性を回避するために、製品全体を、コアとは別に提供される個別にロード可能なモジュールとして CDDL ライセンスに基づいて配布することが決定されました。 ZFS on Linux コードベースの安定性は、Linux の他のファイル システムと同等であると評価されています。

主な変更点:

  • ファイル システムとパーティションのレベルで保存されたデータの暗号化の組み込みサポートが追加されました。 デフォルトの暗号化アルゴリズムは aes-256-ccm です。 「zfs load-key」コマンドは、暗号化キーをロードするために提案されています。
  • 「zfs send」および「zfs accept」コマンドの実行時に暗号化されたデータを転送する機能が実装されました。 「-w」オプションを指定すると、プール内ですでに暗号化されているデータが中間の復号化を行わずに、そのまま他のプールに転送されます。 このようなコピーでは、データは送信者のキーによって保護されたままとなるため、信頼できないシステムへのバックアップにこのモードを使用できます (受信者が侵害された場合、攻撃者はキーなしではデータにアクセスできません)。
  • 個別およびミラーの一部として接続されたストレージ プールからプライマリ ドライブを削除するためのサポートが追加されました。 削除は「zpool delete」コマンドで行います。 削除プロセスでは、除外されたドライブからプール内の残りのプライマリ ドライブにデータがコピーされます。
  • プールの現在の状態を保存し、保存された時点へのさらなる変更をロールバックする機能を備えた「zpool Checkpoint」コマンドが追加されました (プール全体のスナップショットが作成されます)。 この機能は、通常の状態では元に戻せない変更 (新しい ZFS 機能のフラグのアクティブ化やデータのクリアなど) につながる、潜在的に危険な複雑な管理作業を実行するプロセスで役立ちます。
  • プール内で使用されているドライブに、使用されなくなったセクターを通知する「zpoolrim」コマンドが追加されました。 TRIM 動作を利用することで SSD の効率を高め、性能の低下を防ぐことができます。 新しい「autotrim」プロパティは、TRIM コマンドを送信する継続的なバックグラウンド プロセスを有効にするために提案されています。
  • すべての未割り当てのディスク領域を初期化する「zpool initialize」コマンドを追加しました。これにより、最初のアクセス時にパフォーマンスが低下することなく、すぐに使用できるようになります (たとえば、VMware VMDK などの仮想化ストレージをホストする場合)。
  • 以前に利用可能であったユーザーおよびグループレベルのクォータに加えて、アカウンティングおよびプロジェクトレベルのクォータのサポートが追加されました。 本質的に、プロジェクトは、別個の識別子 (プロジェクト ID) に関連付けられたオブジェクトの別個の空間です。 バインディングは、「chattr -p」操作または属性の継承によって定義されます。 プロジェクト管理については、「zfs project」コマンドと「zfs projectspace」コマンドが提供され、プロジェクトの作成を管理し、プロジェクトのディスク容量制限を設定できます。
  • ZFS でのさまざまな作業を自動化する Lua スクリプトを作成する機能が追加されました。 スクリプトは、「zpool プログラム」コマンドを使用して、特別に隔離された環境で実行されます。
  • 新しいライブラリが実装されました pyzfs、Python アプリケーションから ZFS を管理するための安定した API を提供します。 このライブラリは libzfs_core のラッパーであり、同一の関数セットを提供しますが、より近い Python 型を使用します。
  • arcstat、arcsummary、および dbufstat ユーティリティは、Python 3 と互換性があります。 arcstat.py、arc_summary.py、および dbufstat.py ユーティリティは、「.py」拡張子のないバージョンに名前変更されました。
  • Linux Direct IO (O_DIRECT) カーネル インターフェイスのサポートが追加されました。これにより、バッファリングやキャッシュのバイパスを行わずにデータにアクセスできるようになります。
  • 導入されたパフォーマンスの最適化:
    • 「scrub」コマンドと「resilver」コマンドの作業は、XNUMX つのフェーズに分割されたことにより高速化されました (メタデータのスキャンと、ディスク上のデータを含むブロックの位置の特定に別のフェーズが割り当てられ、シーケンシャル データを使用してさらに検証できるようになりました)読む);
    • 割り当てクラスのサポートが追加されました。
      比較的小さな SSD をプールし、メタデータ、DDT データ、小さなファイル ブロックなど、一般的に使用される特定のタイプのブロックのみを保存するために使用できるようにします。

    • 次のような管理コマンドのパフォーマンスが向上しました。
      「zfs list」と「zfs get」は、その操作に必要なメタデータをキャッシュします。

    • 各メタスラブ グループに対して個別のアロケータ プロセスを実行することにより、ブロック割り当て操作の並列化のサポートが追加されました。 従来のシステムではパフォーマンスが 5 ~ 10% 向上しますが、大規模システム (8 GB SSD 128 基、24 コア NUMA、256 GB RAM) では、ブロック割り当て操作の増加が 25% に達する可能性があります。
    • 「resilver」コマンドの遅延実行の可能性を追加しました (ドライブ構成の変更を考慮してデータ分散を再構築します) - 新しい操作の開始時に前のコマンドがまだ完了していない場合、新しいハンドラーはその後にのみ実行を開始します。前のものが終了しました。
    • ZIL (ZFS Intent Log) に最適化が追加され、ストレージによってまだ処理中のブロックが存在する場合でもブロックの作成と処理が可能になりました。
    • システム内のパーティション (zvol) の登録時間が短縮されました。 プールに多数のパーティションが含まれている場合、「zpool import」を実行するとすぐにそれらのパーティションが使用できるようになりました。
    • Intel QAT (Quick Assist Technology) チップを使用した SHA256 ハッシュのハードウェア アクセラレーション計算と AES-GSM 暗号化操作のサポートが追加されました。 Intel C62x チップセットと CPU Atom C3000 のハードウェア アクセラレーションのサポートが追加されました。

出所: オープンネット.ru

コメントを追加します