注意

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

SMB 服务

警告

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

部署Samba容器

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

为了托管可以访问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

服务规范选项

特定于specSMB服务部分的描述如下。

cluster_id

一个简短的名字,用于标识SMB“集群”。在这种情况下,集群只是一个管理单元,由一个或多个共享通用配置的Samba服务组成,可能不会提供实际的集群或可用性机制。

features

一系列预定义术语,用于实现特定的部署特性。空列表是有效的。支持的术语:

  • domain: 启用域成员模式

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

config_uri

一个包含(标准或事实标准)URI的字符串,该URI标识了samba-container应作为主要配置文件加载的配置源。http:, https:, rados:, and rados:mon-config-key:.

user_sources

一系列字符串,包含(标准或事实标准)URI值,这些值将用于标识认证凭据的位置。参见config_uri以了解支持的URI方案列表。

join_sources

一系列字符串,包含(标准或事实标准)URI值,这些值将用于标识将用于执行域加入的认证数据的位置。每个加入源将按顺序尝试,直到一个成功。参见config_uri以了解支持的URI方案列表。

custom_dns

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

include_ceph_users

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

cluster_meta_uri

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

cluster_lock_uri

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

cluster_public_addrs

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

address

必须的字符串。一个IP地址,具有必需的前缀长度(示例:734af8:)。此地址将分配给主机的一个网络设备,并自动管理。192.168.4.51/24). This address will be assigned to one of the host’s network devices and managed automatically.

destination

可选。字符串或字符串列表。一个destination定义系统将管理IP地址的位置。每个字符串值必须是一个网络地址(示例192.168.4.0/24)。可以提供一个或多个目标。典型情况是使用恰好一个目标,因此值可以作为字符串提供,而不是作为具有单个元素的列表。每个目标网络将映射到主机上的一个设备。运行cephadm list-networks以了解这些映射的示例。

Note

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

配置SMB服务

警告

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

创建SMB服务规范不足以在Ceph上完全运行Samba容器。创建有效的配置并将其放置在容器可以读取的位置非常重要。这些配置的完整规范不在本文档的范围内。您可以参考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监控键/值存储中的值存储。键必须按集群命名,如下所示: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)上管理配置文件留给读者作为练习。

Note

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

限制

以下是SMB服务的一些重要限制的非详尽列表:

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

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

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.