SMB 遇见 Squid:Ceph 中用于 SMB 服务管理的全新 Ceph SMB 管理器模块

Mohit Bisht, Anthony D'Atri (IBM)

SMB 遇见 Squid:Ceph 中用于 SMB 服务管理的全新 Ceph SMB 管理器模块

注意:部分描述的功能在 Squid 19.2.3 中仅部分可用。完整的支持将随 Tentacle 一起提供。

简介

SMB(服务器消息块)是一种广泛使用的网络协议,可促进网络上共享文件、打印机和其他资源。为了在 Ceph 环境中无缝集成 SMB 服务,Ceph 8.0 引入了功能强大的 SMB 管理器模块,该模块使用户能够部署、管理和控制用于访问 CephFS 的 Samba 服务。该模块提供了一个用户友好的界面,用于管理 Samba 服务和 SMB 共享的集群,并具有两种管理方法的灵活性:命令式和声明式。通过使用命令 ceph mgr module enable smb 启用 SMB 管理器模块,管理员可以有效地简化 SMB 服务操作,无论是通过命令行还是通过 YAML 或 JSON 资源描述进行编排。借助新的 SMB 管理器模块,Ceph 管理员可以轻松扩展文件服务,为 CephFS 提供强大的 SMB 访问权限,同时享受增强的控制和可扩展性。

管理 SMB 集群和共享

管理员可以使用以下方法与 Ceph Manager SMB 模块交互

  • 命令式方法:Ceph 命令与 Ceph Manager SMB 模块交互。

  • 声明式方法:YAML 或 JSON 格式的资源规范。

简单的 Ceph Squid 与 SMB 配置工作流程

命令式方法

创建 CephFS 卷/子卷

# ceph fs volume create cephfs
# ceph fs subvolumegroup create cephfs smb
# ceph fs subvolume create cephfs sv1 --group-name=smb --mode=0777
# ceph fs subvolume create cephfs sv2 --group-name=smb --mode=0777

启用 SMB 管理模块

# ceph mgr module enable smb

创建 SMB 集群/共享

# ceph smb cluster create smb1 user --define-user-pass=user1%passwd
# ceph smb share create smb1 share1 cephfs / --subvolume=smb/sv1

从 MS Windows 客户端映射网络驱动器

声明式方法

创建 CephFS 卷/子卷

# ceph fs volume create cephfs
# ceph fs subvolumegroup create cephfs smb
# ceph fs subvolume create cephfs sv1 --group-name=smb --mode=0777
# ceph fs subvolume create cephfs sv2 --group-name=smb --mode=0777

启用 SMB 管理模块

# ceph mgr module enable smb

创建 SMB 集群/共享

# ceph smb apply -i - <<'EOF'
# --- Begin Embedded YAML
- resource_type: ceph.smb.cluster
  cluster_id: smb1
  auth_mode: user
  user_group_settings:
    - {source_type: resource, ref: ug1}
  placement:
    count: 1
- resource_type: ceph.smb.usersgroups
  users_groups_id: ug1
  values:
    users:
      - {name: user1, password: passwd}
      - {name: user2, password: passwd}
    groups: []
- resource_type: ceph.smb.share
  cluster_id: smb1
  share_id: share1
  cephfs:
    volume: cephfs
    subvolumegroup: smb
    subvolume: sv1
    path: /
- resource_type: ceph.smb.share
  cluster_id: smb1
  share_id: share2
  cephfs:
    volume: cephfs
    subvolumegroup: smb
    subvolume: sv2
    path: /
# --- End Embedded YAML
EOF

从 MS Windows 客户端映射网络驱动器

基本的 SMB 管理器模块 CLI 命令

创建 SMB 集群

# ceph smb cluster create <cluster_id> {user} [--domain-realm=<domain_realm>] \
            [--domain-join-user-pass=<domain_join_user_pass>] \
	    [--define-user-pass=<define_user_pass>] [--custom-dns=<custom_dns>]

示例

Auth_Mode:User
# ceph smb cluster create smb1 user --define_user_pass user1%passwd --placement label:smb --clustering default
Auth_Mode: AD
# ceph smb cluster create smb1 active-directory --domain_realm samba.qe --domain_join_user_pass Administrator%Redhat@123 --custom_dns 10.70.44.153 --placement label:smb --clustering default

使用声明式方法创建 SMB 集群

# ceph smb apply -i [--format <value>]

示例

# ceph smb apply -i resources.yaml

创建 SMB 共享

# ceph smb share create <cluster_id> <share_id> <cephfs_volume> <path> [<share_name>] [<subvolume>] [--readonly] [--format]

示例

# ceph smb share create smb1 share1 cephfs / --subvolume=smb/sv1

列出 SMB 共享

#  ceph smb share ls <cluster_id> [--format <value>]

示例

# ceph smb share ls smb1

查看 SMB 集群详细信息

#  ceph smb show [<resource_names>]

示例

# ceph smb show ceph.smb.cluster.smb1

删除 SMB 共享

# ceph smb share rm <cluster_id> <share_id>

示例

# ceph smb share rm smb1 share1

删除 SMB 集群

# ceph smb cluster rm <cluster_id>

示例

# ceph smb share rm smb1

结论

Ceph Squid 中的 Ceph SMB 管理器模块为管理 CephFS 文件系统的 SMB 服务提供了一种创新且高效的方式。无论通过命令式还是声明式方法,用户都可以轻松创建、管理和控制 SMB 集群和共享。这种集成简化了 Samba 服务的设置,增强了可扩展性,并为管理员提供了更大的灵活性。借助能够无缝管理对 CephFS 的 SMB 访问权限,用户现在可以拥有一个简化的流程,以提供安全且可扩展的文件服务。

作者谨此感谢 IBM 对社区的支持,通过促使我们有时间创建这些帖子。