ZFS (on Linux) driver¶
Manila ZFSonLinux 共享驱动程序使用 ZFS 文件系统来导出 NFS 共享。使用 Linux 版本的 ZFS 编写和测试。
需求¶
可以通过
exportfs应用处理的 NFS 守护进程。ZFS 文件系统包,内核或 FUSE 版本。
要由 Manila 使用的 ZFS zpool 应该存在并按预期配置。Manila 不会更改 zpool 配置。
对于根据 manila-share 服务主机 SSH 安装的远程 ZFS 主机。
对于支持复制的 ZFS 主机
彼此之间应该使用无密码 SSH 访问。
ZFS 主机应该能够相互访问服务 IP 地址。
可能性¶
任何数量的 ZFS zpool 都可以由共享驱动程序使用。
允许为用于共享创建的 ZFS 数据集配置默认选项。
允许使用任何数量的嵌套数据集。
所有共享副本都是只读的,只有激活副本是读写。
所有共享副本都会定期同步,而不是持续同步。状态
in_sync表示上次同步成功。同步之间的时间范围等于配置全局选项replica_state_update_interval的值。驱动程序可以使用限定的额外规范
zfsonlinux:compression。它可以包含 ZFS 应用支持的任何值。但是,如果通过配置选项将其禁用,值为compression=off,则将不会使用它。
限制¶
ZFSonLinux 共享驱动程序具有以下限制
仅支持 NFS 的 IP 访问类型。
仅支持 FLAT 网络。
Promote share replica操作将切换当前secondary副本和active副本的角色。它不会使多个激活副本可用。以下项目尚未实现
SaMBa基于共享。Thick provisioning功能。
已知问题¶
Promote share replica操作将使成为辅助的 ZFS 文件系统在 NFS 级别上变为只读。在 ZFS 级别,系统将保持挂载状态 - 读写。
后端配置¶
对于使用 ZFSonLinux 驱动程序的后端,需要在 manila 配置文件中配置以下参数
share_driver= manila.share.drivers.zfsonlinux.driver.ZFSonLinuxShareDriverdriver_handles_share_servers= Falsereplication_domain= custom_str_value_as_domain_name如果为空,则将禁用复制。
如果设置,则可以作为与具有相同值的其他后端复制对等方使用。
zfs_share_export_ip= <用户可见的 ZFS 主机 IP 地址>zfs_service_ip= <ZFS 主机的服务网络接口的 IP 地址>zfs_zpool_list= zpoolname1,zpoolname2/nested_dataset_for_zpool2可以是多个 zpool。
可以包含嵌套数据集。
zfs_dataset_creation_options= <ZFS 数据集选项列表>readonly、quota、sharenfs 和 sharesmb 选项将被忽略。
zfs_dataset_name_prefix= <前缀>要在每个数据集名称中使用的前缀。
zfs_dataset_snapshot_name_prefix= <前缀>要在每个数据集快照名称中使用的前缀。
zfs_use_ssh= <布尔值>如果 ZFS 位于与 manila-share 服务相同的宿主机上,则设置为
False。如果 manila-share 服务应使用 SSH 进行 ZFS 配置,则设置为
True。
zfs_ssh_username= <ssh_username>复制操作需要。
如果将
zfs_use_ssh设置为True,则需要 SSH 到 ZFS 主机。
zfs_ssh_user_password= <ssh_user_password>ZFS 主机的
zfs_ssh_username的密码。仅当
zfs_use_ssh设置为True时使用。
zfs_ssh_private_key_path= <私钥 SSH 的路径>仅当
zfs_use_ssh设置为True时使用。
zfs_share_helpers= NFS=manila.share.drivers.zfsonlinux.utils.NFSviaZFSHelper设置 helpers 的方法与其他各种共享驱动程序类似。
至少应使用一个 helper。
zfs_replica_snapshot_prefix= <前缀>要在通过
update replica操作创建的数据集快照名称中使用的前缀。
驱动程序选项¶
配置选项 = 默认值 |
描述 |
|---|---|
[DEFAULT] |
|
|
(列表) 如果需要,在此处定义应用于每个数据集创建的选项列表。示例:compression=gzip,dedup=off。请注意,对于辅助副本,选项“readonly”将设置为“on”,对于活动副本将设置为“off”。此外,“quota”将等于共享大小。可选。 |
|
(字符串) 在每个数据集名称中使用的前缀。可选。 |
|
(字符串) 在每个数据集快照名称中使用的前缀。可选。 |
|
(字符串) 用于 ZFS 迁移的快照前缀。必需。 |
|
(字符串) 用于 ZFS 复制的快照前缀。必需。 |
|
(字符串) 要添加到面向管理员的导出位置的 IP。必需。 |
|
(字符串) 要添加到面向用户的导出位置的 IP。必需。 |
|
(列表) 指定 ZFS 存储的共享导出 helpers 列表。它应该如下所示:“FOO_protocol=foo.FooClass,BAR_protocol=bar.BarClass”。必需。 |
|
(字符串) 用于 SSH 到 ZFS 存储主机的 SSH 私钥的路径。不用于复制操作。可选。 |
|
(字符串) 用于 SSH 到 ZFS 存储主机的用户的密码。不用于复制操作。它们需要无密码 SSH 访问。可选。 |
|
(字符串) 将在 2 种情况下使用的 SSH 用户:1) 如果 manila-share 服务位于与 ZFS 存储不同的主机上,则由 manila-share 服务使用。 2) 与执行复制的其他 ZFS 后端一起使用的 manila-share 服务。预计 SSH 将基于密钥,无密码。此用户应该是无密码 sudoer。可选。 |
|
(布尔值) 远程 ZFS 存储主机名,应将其用于 SSH。可选。 |
|
(列表) 指定允许后端使用的 zpool 列表。可以包含嵌套数据集。示例:没有嵌套数据集:“zpool_name”。带有嵌套数据集:“zpool_name/nested_dataset_name”。必需。 |