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 |
[] |
nameとattributesの辞書で定義されたzfs_filesystemsのリスト(各項目に必須) |
zfs_zpools |
[] |
name(必須)とscrub(オプション)キーを持つ辞書のリスト。scrubはブール値で、このプールのスクラブを無効にできます。 |
zvols |
[] |
nameとattributesの辞書で定義された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を参照)。
これらはファイルシステム用のutf8only、normalization、casesensitivity、ZVOL用のvolsizeおよびvolblocksizeです。
これらを変更しようとすると、該当するタスクは失敗します。
また、volsizeはZVOLにとって必須の属性です。
属性が定義されていない場合、ZFSのデフォルトが設定されます(すでに他のものに設定されていても)。ただし、次の4つの属性は除外されます:
acltype=posixaclcompression=onrelatime=onxattr=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 国際 ライセンスの下でライセンスされています。
