mrlesmithjr.zfs
目录 通过 DocToc 生成
ansible-zfs
在 Linux 上安装和配置 ZFS (http://zfsonlinux.org/)
要求
至少需要一个未使用的物理硬盘来创建 ZFS 池
Vagrant
使用 Vagrant 创建测试环境
vagrant up
这将启动一个包含一些 ZFS 卷和 iSCSI 设备的服务器... 您可以从客户端节点查看/使用 iSCSI 卷...
vagrant ssh client
sudo iscsiadm -m discovery -t st -p 192.168.202.201
sudo iscsiadm -m node --login
现在您应该在客户端有 /dev/sdb 和 /dev/sdc,可以格式化和挂载。
sudo fdisk -l
磁盘 /dev/sdb: 1073 MB, 1073741824 字节
34 个扇区,61 个磁道,1011 个气缸,总共 2097152 个扇区
单位 = 每个 512 字节的扇区
扇区大小 (逻辑/物理): 512 字节 / 512 字节
读写大小 (最小/最佳): 512 字节 / 512 字节
磁盘标识符: 0x00000000
磁盘 /dev/sdb 不包含有效的分区表
磁盘 /dev/sdc: 2147 MB, 2147483648 字节
67 个扇区,62 个磁道,1009 个气缸,总共 4194304 个扇区
单位 = 每个 512 字节的扇区
扇区大小 (逻辑/物理): 512 字节 / 512 字节
读写大小 (最小/最佳): 512 字节 / 512 字节
磁盘标识符: 0x00000000
磁盘 /dev/sdc 不包含有效的分区表
vagrant@client:~$ sudo fdisk /dev/sdb
设备既不包含有效的 DOS 分区表,也不包含 Sun、SGI 或 OSF 磁盘标签
正在创建一个新的 DOS 磁盘标签,磁盘标识符为 0xa1af287f。
更改将在内存中保持,直到您决定写入它们。
之后,当然,之前的内容将无法恢复。
角色变量
---
# ansible-zfs 的默认文件
# 定义是否创建 ZFS 文件系统
zfs_create_filesystems: false
# 定义是否创建 ZFS 池
zfs_create_pools: false
# 定义是否创建 ZFS 卷
zfs_create_volumes: false
zfs_debian_package_key: http://zfsonlinux.org/4D5843EA.asc
zfs_debian_package_url: http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux
zfs_debian_package_version: 6
zfs_debian_package: "zfsonlinux_{{ zfs_debian_package_version }}_all.deb"
zfs_enable_auto_snapshots: true
# 定义是否安装 iscsitarget 以提供 iSCSI 卷
zfs_enable_iscsi: false
# 定义是否安装 NFS 内核服务器以提供 NFS
zfs_enable_nfs: false
# 定义是否应用 zfs_performance_tuning 中定义的参数
zfs_enable_performance_tuning: false
# 定义是否安装和配置 Samba
zfs_enable_samba: false
# 定义加密文件系统的密钥是否在启动时加载
zfs_autoload_encryption_keys: false
# 要管理的文件系统
zfs_filesystems: []
# - name: nfs
# pool: tank
# atime: off
# compression: lz4
# logbias: latency
# primarycache: all
# quota: 3G
# recordsize: 16K
# sharenfs: on
# snapdev: visible
# snapdir: visible
# state: present
# 定义是否管理 ZFS 的安装,包括更新。
zfs_install_update: true
# 定义是否启用 iscsitarget 服务
zfs_iscsistarget_enable: "{{ zfs_enable_iscsi }}"
# 在反向中定义您的 FQDN...(local.vagrant)
zfs_iscsistarget_iqn: iqn.2001-04.org.example
zfs_iscsistarget_max_sleep: 3
zfs_iscsistarget_options: ""
zfs_iscsitarget_target_portals:
# 定义监听 iSCSI 连接的 IP 地址 | ALL (默认) | cidr (x.x.x.x/xx) | 如果定义 cidr 则禁止全部
- ALL
# 定义 ZFS 文件系统挂载点的权限是否管理
zfs_manage_filesystem_permissions: false
zfs_performance_tuning:
- param: zfs_prefetch_disable
value: 1
- param: zfs_txg_timeout
value: 5
- param: zfs_arc_max
value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.5) | round | int }}"
- param: zfs_arc_meta_limit
value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.125) | round | int }}"
- param: zfs_arc_min
value: "{{ (ansible_memtotal_mb | int * 1024 * 1024 * 0.0625) | round | int }}"
# 定义要管理的 zpool
zfs_pools: []
# 定义全局 scrub cron 作业参数。仅在 `zfs_enable_monitoring` 设置为 True 时应用。
zfs_pools_scrub_cron:
minute: 0
hour: 0
day: *
month: *
weekday: sun
zfs_ubuntu_ppa: ppa:zfs-native/stable
# 定义要管理的块设备卷
zfs_volumes: []
# - name: backups
# pool: tank
# volsize: 1G
# state: present
zfs_enable_monitoring: False
# 以百分比计算。
zfs_monitoring_capacity_threshold: 80
# 以天计算。
zfs_monitoring_scrub_max_age: 8
zfs_monitoring_email_dest: root@localhost
依赖
无
示例剧本
GitHub
---
- name: 在 Linux 上安装 ZFS
hosts: all
become: true
vars:
- zfs_iscsistarget_iqn: iqn.2001-04.local.vagrant # 在反向中定义您的 FQDN...(local.vagrant)
- zfs_iscsitarget_target_portals:
- 192.168.202.0/24
- zfs_enable_iscsi: true
- zfs_enable_nfs: true
roles:
- role: ansible-zfs
tasks:
```yaml
#### Galaxy
```yaml
---
- name: 在 Linux 上安装 ZFS
hosts: all
become: true
vars:
- zfs_iscsistarget_iqn: iqn.2001-04.local.vagrant # 在反向中定义您的 FQDN...(local.vagrant)
- zfs_iscsitarget_target_portals:
- 192.168.202.0/24
- zfs_enable_iscsi: true
- zfs_enable_nfs: true
roles:
- role: mrlesmithjr.zfs
tasks:
高级示例 ZPool 创建
zfs_pools: # 定义要管理的 zpool
- name: 'SSD-TANK'
action: 'create'
options: # 创建时设置永久选项
ashift: 13
compression: 'lz4'
devices:
- 'ata-INTEL_SSDSC2BW240A4_CVDA352100YL2403GN'
- 'ata-INTEL_SSDSC2BW240A4_BTDA329505KM2403GN'
type: 'raidz2'
state: 'present'
# 更多的池创建...
许可证
BSD
作者信息
Larry Smith Jr.
- @mrlesmithjr
- http://everythingshouldbevirtual.com
- mrlesmithjr [at] gmail.com
安装
ansible-galaxy install mrlesmithjr.zfs许可证
mit
下载
513.6k
拥有者
Sharing practical insights on virtualization, cloud, automation, and DevOps to help others build, automate, and innovate with confidence.
