注意

本文档适用于 Ceph 的开发版本。

SMB 服务

警告

SMB 支持正在积极开发中,许多功能可能缺失或不成熟。有一个名为 smb 的 Ceph MGR 模块可用于帮助组织和管理 SMB 相关功能。除非 smb 模块被确定不适合您的需求,否则我们建议使用该模块而不是直接使用 smb 服务规范。

部署 Samba 容器

Cephadm 使用由 samba-container 项目构建的容器镜像部署 Samba 服务器。

为了托管可访问 CephFS 文件系统的 SMB 共享,请使用以下命令部署 Samba 容器

ceph orch apply smb <cluster_id> <config_uri> [--features ...] [--placement ...] ...

此命令接受许多附加参数。有关这些选项的描述,请参阅服务规范。

服务规范

可以使用规范应用 SMB 服务。以下是一个 YAML 示例

service_type: smb
service_id: tango
placement:
  hosts:
    - ceph0
spec:
  cluster_id: tango
  features:
    - domain
  config_uri: rados://.smb/tango/scc.toml
  custom_dns:
    - "192.168.76.204"
  join_sources:
    - "rados:mon-config-key:smb/config/tango/join1.json"
  include_ceph_users:
    - client.smb.fs.cluster.tango

然后可以通过运行以下命令应用规范

ceph orch apply -i smb.yaml

服务规范选项

下面描述了 SMB 服务 spec 部分特有的字段。

cluster_id

标识 SMB“集群”的短名称。在这种情况下,集群只是一个管理单元,包含一个或多个共享通用配置的 Samba 服务,并且可能不提供实际的集群或可用性机制。

features

预定义术语列表,用于启用特定的部署特性。空列表有效。支持的术语

  • domain: 启用域成员模式

  • clustered: 启用 Samba 原生集群模式

config_uri

一个字符串,包含一个(标准或事实上的)URI,用于标识 samba-container 应作为主配置文件加载的配置源。支持的 URI 方案包括 http:https:rados:rados:mon-config-key:

user_sources

字符串列表,包含(标准或事实上的)URI 值,用于标识身份验证凭据所在位置。有关支持的 URI 方案列表,请参阅 config_uri

join_sources

字符串列表,包含(标准或事实上的)URI 值,用于标识执行域加入所需的身份验证数据所在位置。每个加入源按顺序尝试,直到其中一个成功。有关支持的 URI 方案列表,请参阅 config_uri

custom_dns

IP 地址列表,将用作 Samba 容器的 DNS 服务器。此功能允许 Samba 容器与 Active Directory 集成,即使 Ceph 主机节点未绑定到 Active Directory DNS 域。

custom_ports

服务名称到端口号的映射,将覆盖用于这些服务的默认端口。服务名称包括:smbsmbmetricsctdb。如果映射中不存在某个服务名称,则将使用默认端口。例如,{"smb": 4455, "smbmetrics": 9009} 将更改 smb 用于客户端访问和指标导出器的端口,但不会更改 CTDB 集群守护程序使用的端口。

bind_addrs

对象列表,指示 SMB 和相关服务可以绑定到的 IP 地址或 IP 网络。为这些对象描述的字段是互斥的,但至少需要一个字段。字段

address

可选。表示为字符串的单个 IP 地址。例如,192.168.7.50

network

可选。表示为字符串的单个 IP 网络。网络可用于指定许多 IP 地址范围。网络字符串始终包含一个“/”字符,后跟前缀长度。例如,192.168.7.0/24

include_ceph_users

Samba 容器可以使用的 cephx 用户(又名实体)名称列表。列表中每个用户的 cephx 密钥将自动添加到容器中的密钥环中。

cluster_meta_uri

一个字符串,包含一个 URI,用于标识集群结构元数据的存储位置。如果设置了 clustered 功能,则必需。必须是 RADOS 伪 URI。

cluster_lock_uri

一个字符串,包含一个 URI,用于标识 Samba/CTDB 将存储集群锁的位置。如果设置了 clustered 功能,则必需。必须是 RADOS 伪 URI。

cluster_public_addrs

对象列表;可选。仅在使用 Samba 集群时支持。分配将由集群子系统管理并可在运行 Samba 容器的节点之间自动移动的“虚拟”IP 地址。字段

address

必需字符串。带有必需前缀长度的 IP 地址(例如:192.168.4.51/24)。此地址将分配给主机的一个网络设备并自动管理。

destination

可选。字符串或字符串列表。destination 定义系统将分配托管 IP 的位置。每个字符串值必须是一个网络地址(例如 192.168.4.0/24)。可以提供一个或多个目标。典型情况是只使用一个目标,因此值可以作为字符串提供,而不是包含单个项目的列表。每个目标网络都将映射到主机上的一个设备。运行 cephadm list-networks 查看这些映射的示例。如果未提供 destination,则使用提供的 address 值自动确定网络并将其作为 destination。

注意

如果需要在 smbd 实例之间进行集群(也称为高可用性或“透明状态迁移”),则需要功能标志 clustered。如果未指定此标志,cephadm 可能会部署多个 smb 服务器,但它们将缺乏实际高可用性集群所需的协调。当指定 clustered 标志时,cephadm 将部署额外的容器来管理这种协调。此外,必须指定 cluster_meta_uri 和 cluster_lock_uri 值。前者由 cephadm 用于向 samba 容器描述 smb 集群布局。后者由 Samba 的 CTDB 组件用于管理内部集群锁。

配置 SMB 服务

警告

SMB 的管理器模块正在积极开发中。一旦该模块可用,它将成为在 Ceph 上以端到端方式管理 Samba 的首选方法。以下讨论是为了完整性而提供的,并解释了软件层如何交互。

创建 SMB 服务规范不足以使 Samba 容器在 Ceph 上完全运行。重要的是创建有效的配置并将其放置在容器可以读取的位置。这些配置的完整规范超出了本文档的范围。您可以参考 Samba 文档以及 samba 服务器容器及其接受的配置文件

完成配置后,应将其存储在 Samba 容器可以访问的位置。在 Ceph 编排中运行 Samba 容器的推荐方法是将配置存储在 Ceph 集群中。有几种方法可以将配置存储在 ceph 中

RADOS

配置文件可以作为 RADOS 对象存储在名为 .smb 的池中。在池中应该有一个以 cluster_id 值命名的命名空间。用于标识此资源的 URI 应构造为 rados://.smb/<cluster_id>/<object_name>。示例:rados://.smb/tango/config.json

容器会自动部署 cephx 密钥,允许访问这些池和命名空间中的资源。只要使用此方案,就不需要读取对象的附加配置。

要将配置文件复制到 RADOS 池,请使用 rados 命令行工具。例如

# assuming your config file is /tmp/config.json
rados --pool=.smb --namespace=tango put config.json /tmp/config.json

MON 键/值存储

配置文件可以作为值存储在 Ceph Monitor 键/值存储中。密钥必须以集群命名,如下所示:smb/config/<cluster_id>/<name>。这将生成一个 URI,可用于标识此配置,构造为 rados:mon-config-key:smb/config/<cluster_id>/<name>。示例:rados:mon-config-key:smb/config/tango/config.json

容器会自动部署 cephx 密钥,允许访问键前缀为 smb/config/<cluster_id>/ 的资源。只要使用此方案,就不需要读取值的附加配置。

要将配置文件复制到键/值存储中,请使用 ceph config-key put ... 工具。例如

# assuming your config file is /tmp/config.json
ceph config-key set smb/config/tango/config.json -i /tmp/config.json

HTTP/HTTPS

配置文件可以存储在 HTTP(S) 服务器上,并由 Samba 容器自动读取。在 HTTP(S) 上管理配置文件留给读者自行探索。

注意

所有接受 URI 的参数都支持所有 URI 方案。每种方案都具有不同的性能和安全特性。

限制

SMB 服务的重要限制非详尽列表如下

  • DNS 是 Active Directory 的关键组件。如果正在配置 SMB 服务以进行域成员身份,则必须配置 Ceph 主机节点以解析 Active Directory (AD) 域,或者可以使用 custom_dns 选项。在这两种情况下,AD 域的 DNS 主机仍然必须可以从 Ceph 集群所在的任何网络段访问。

  • 服务必须绑定到 TCP 端口 445。在同一节点上运行多个 SMB 服务尚不支持,并将触发端口占用冲突。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入