stuvusIT.zfs-storage

zfsストレージ

このロールはLinuxにZFSをインストールし、ファイルシステムとZVOLを構成します。
sharenfs属性を使用する構成ファイルシステムがある場合、nfs-kernel-serverがインストールされます。
zfs_save_nfs_exportsが適切に設定されている場合、NFSエクスポートは/etc/exports.d/zfs-storage-ansible.exportsに恒久的に設定されます。
最新のZFSリリースをインストールするためにJonathanFのZFS PPAが使用されます。

要件

以下のディストリビューションリリースのいずれか:

  • Debian stretch または buster
  • Ubuntu xenial, bionic, cosmic または devel

プールをタイマーを使用してスクラブするためには、systemdが必要です。
このロールを実行するマシンにはpython-jmespathが必要で、NFSの必要性を正しく判断します。

ロール変数

名前 デフォルト / 必須 説明
zfs_parent_fs すべてのファイルシステムとzvolの親ZFSファイルシステム。(オプションで全構成の先頭に追加されます)
zfs_storage_defaults {} 設定されたすべてのZFSファイルシステム/ZVOLに適用されるZFS属性の辞書
zfs_filesystems [] nameattributesの辞書で定義されたzfs_filesystemsのリスト(各項目に必須)
zfs_zpools [] name(必須)とscrub(オプション)キーを持つ辞書のリスト。scrubはブール値で、このプールのスクラブを無効にできます。
zvols [] nameattributesの辞書で定義されたzvolのリスト(各項目に必須)
zfs_default_enable_scrub True デフォルトでzpoolスクラビングを有効にするかどうか
zfs_scrub_frequency weekly zfsスクラブの頻度 - 既に実行されているスクラブは中止されます。許可されている値についてはsystemd.timeを参照してください。
zfs_kernel_module_parameters {} /etc/modprobe.d/zfs.confに設定されるZFSカーネルモジュールオプションの辞書
zfs_storage_drive_wwids [] プール内のブロックデバイスのWWID文字列のリスト。これらのデバイスのI/Oスケジューラをnoopに設定するためにUDEVルールが作成されます。これは、ZFSがドライブ全体を把握しない限り、パーティション化されたまたは暗号化されたデバイスに必要です。
zfs_save_nfs_exports True 再起動時の一貫したエクスポートのために、NFSエクスポートファイルを保存および削除(不要な場合)するかどうか

注:次のZFS属性は作成時にのみ設定できます(man zfsを参照)。
これらはファイルシステム用のutf8onlynormalizationcasesensitivity、ZVOL用のvolsizeおよびvolblocksizeです。
これらを変更しようとすると、該当するタスクは失敗します。
また、volsizeはZVOLにとって必須の属性です。

属性が定義されていない場合、ZFSのデフォルトが設定されます(すでに他のものに設定されていても)。ただし、次の4つの属性は除外されます:

  • acltype=posixacl
  • compression=on
  • relatime=on
  • xattr=sa

ZFS属性のすべてのデフォルト値はdefaultsで確認できます。

manページで説明されている実際のZFS属性に加えて、このロールは自動スナップショットを制御するための属性を設定します。これは、zfs-auto-snapshotなどのツールを使用して達成されます。
これは、すべてがデフォルトでFalseに設定されている次の変数を使用して実行されます:

ZFS属性 このロールでの変数名 説明
com.sun:auto-snapshot com_sun_auto_snapshot 現在のデータセットに対して、すべての利用可能な間隔で自動スナップショットとスナップショットのクリーニング(破棄)を有効にします(基本的に次のすべての属性がTrueに設定されているかのように機能します)。
com.sun:auto-snapshot:frequent com_sun_auto_snapshot_frequent 15分間隔でのスナップショットとクリーニングを有効にします。
com.sun:auto-snapshot:hourly com_sun_auto_snapshot_hourly 1時間ごとのスナップショットとクリーニングを有効にします。
com.sun:auto-snapshot:daily com_sun_auto_snapshot_daily 毎日ごとのスナップショットとクリーニングを有効にします。
com.sun:auto-snapshot:weekly com_sun_auto_snapshot_weekly 毎週ごとのスナップショットとクリーニングを有効にします。
com.sun:auto-snapshot:monthly com_sun_auto_snapshot_monthly 毎月ごとのスナップショットとクリーニングを有効にします。

使用例

- hosts: zfsstorage
  roles:
    - role: zfs-storage
      zfs_parent_fs: tank
      zfs_zpools:
        - name: rpool
          scrub: False
        - name: tank
          scrub: False
      zfs_scrub_frequency: monthly
      zfs_kernel_module_parameters:
        zfs_arc_max: 30064771072 # ARCを30GBまで成長させる
      zfs_storage_defaults:
        acltype: posixacl
        volsize: 50G
        quota: 50G
      zfs_filesystems:
        - name: testing
          attributes:
            quota: 200G
        - name: testing/wiki
          attributes:
            sharenfs: [email protected]
            compression: off
      zvols:
        - name: testing/dns01
          attributes:
            volsize: 100G
        - name: testing/ldap01
          attributes:

結果

名前 タイプ 属性
tank/testing ファイルシステム acltype=posixacl
tank/testing/wiki ファイルシステム acltype=posixacl, sharenfs=[email protected], compression=off, quota=50G
tank/testing/dns01 ZVOL volsize=100G
tank/testing/ldap01 ZVOL volsize=50G

rpoolはスクラブされず、tankは毎月スクラブされます。

ライセンス

この作品はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下でライセンスされています。

著者情報

プロジェクトについて

Configures ZFS filesystems and ZVOLs that can be shared via NFS

インストール
ansible-galaxy install stuvusIT.zfs-storage
ライセンス
cc-by-sa-4.0
ダウンロード
78
所有者
stuvus IT Team - Studierendenvertretung Universität Stuttgart