本章介绍如何通过 Samba/CIFS 共享导出 CephFS。可在 Windows* 客户端中使用 Samba 共享。
从 SUSE Enterprise Storage 5 开始,导出 Samba 共享被视为一项技术预览,不再受支持。
导出 CephFS 是一项预览技术,不支持该功能。要导出 Samba 共享,需要在一个集群节点上手动安装 Samba 并对其进行配置。可以通过 CTDB 和 SUSE Linux Enterprise High Availability Extension 提供故障转移功能。
请确保集群中已存在一个正常工作的 CephFS。有关详细信息,请参见第 11 章 “安装 CephFS”。
在 Salt Master 上创建一个特定于 Samba 网关的密钥环,并将其复制到 Samba 网关节点:
root@master #
ceph
auth get-or-create client.samba.gw mon 'allow r' \ osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyringroot@master #
scp
ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/
将 SAMBA_NODE 替换为 Samba 网关节点的名称。
在 Samba 网关节点上执行以下步骤。在 Samba 网关节点上安装 Samba 守护进程:
root #
zypper
in samba samba-ceph
编辑 /etc/samba/smb.conf
并添加以下段落:
[SHARE_NAME] path = / vfs objects = ceph ceph:config_file = /etc/ceph/ceph.conf ceph: user_id = samba.gw read only = no
启动并启用 Samba 守护进程:
root #
systemctl
start smb.serviceroot #
systemctl
enable smb.serviceroot #
systemctl
start nmb.serviceroot #
systemctl
enable nmb.service
本节提供一个示例来说明如何设置 Samba 服务器的双节点高可用性配置。该设置需要 SUSE Linux Enterprise High Availability Extension。两个节点分别名为 earth
(192.168.1.1
) 和 mars
(192.168.1.2
)。
有关 SUSE Linux Enterprise High Availability Extension 的详细信息,请参见 https://www.suse.com/documentation/sle-ha-12/。
此外,使用两个浮动虚拟 IP 地址可让客户端连接到服务,不管该服务在哪个物理节点上运行均如此。192.168.1.10
用于通过 Hawk2 进行集群管理,192.168.2.1
专门用于 CIFS 导出。这样,以后便可更轻松地应用安全限制。
以下过程介绍示例安装。https://www.suse.com/documentation/sle-ha-12/install-quick/data/install-quick.html 上提供了更多详细信息。
在 Salt Master 上创建一个特定于 Samba 网关的密钥环,并将其复制到上述两个节点:
root@master #
ceph
auth get-or-create client.samba.gw mon 'allow r' \ osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyringroot@master #
scp
ceph.client.samba.gw.keyringearth
:/etc/ceph/root@master #
scp
ceph.client.samba.gw.keyringmars
:/etc/ceph/
准备好 earth
和 mars
,以托管 Samba 服务:
在继续下一步之前,请确保已安装以下包: ctdb、 tdb-tools 和 samba (smb 和 nmb 资源需要)。
root #
zypper
in ctdb tdb-tools samba samba-ceph
确保服务 ctdb
、smb
和 nmb
已停止且未启用:
root #
systemctl
disable ctdbroot #
systemctl
disable smbroot #
systemctl
disable nmbroot #
systemctl
stop smbroot #
systemctl
stop nmb
在所有节点上打开防火墙的端口 4379
。这是为了使 CTDB 能够与其他集群节点通讯。
在共享文件系统上为 CTDB 锁定创建一个目录:
root #
mkdir
-p /srv/samba/
在 earth
上创建 Samba 的配置文件。这些文件稍后将自动同步到 mars
。
在 /etc/ctdb/nodes
中插入包含集群中每个节点的所有私用 IP 地址的所有节点:
192.168.1.1 192.168.1.2
配置 Samba。在 /etc/samba/smb.conf
的 [global]
部分中添加以下行。使用所选的主机名取代“CTDB-SERVER”(集群中的所有节点将显示为一个此名称的大节点,以方便操作):
[global] netbios name = CTDB-SERVER clustering = yes idmap config * : backend = tdb2 passdb backend = tdbsam ctdbd socket = /var/lib/ctdb/ctdb.socket
有关 csync2
的详细信息,请参见 https://www.suse.com/documentation/sle-ha-12/singlehtml/book_sleha/book_sleha.html#pro.ha.installation.setup.csync2.start。
安装并引导 SUSE Linux Enterprise High Availability 集群。
在 earth
和 mars
上注册 SUSE Linux Enterprise High Availability Extension。
root@earth #
SUSEConnect
-r ACTIVATION_CODE -e E_MAIL
root@mars #
SUSEConnect
-r ACTIVATION_CODE -e E_MAIL
在两个节点上安装 ha-cluster-bootstrap :
root@earth #
zypper
in ha-cluster-bootstrap
root@mars #
zypper
in ha-cluster-bootstrap
在 earth
上初始化集群:
root@earth #
ha-cluster-init
让 mars
加入该集群:
root@mars #
ha-cluster-join
-c earth
检查集群的状态。您应该会看到两个节点都已添加到集群中:
root@earth #
crm
status 2 nodes configured 1 resource configured Online: [ earth mars ] Full list of resources: admin-ip (ocf::heartbeat:IPaddr2): Started earth
在 earth
上执行以下命令,以配置 CTDB 资源:
root@earth #
crm
configurecrm(live)configure#
primitive
ctdb ocf:heartbeat:CTDB params \ ctdb_manages_winbind="false" \ ctdb_manages_samba="false" \ ctdb_recovery_lock="!/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper ceph client.samba.gw cephfs_metadata ctdb-mutex" ctdb_socket="/var/lib/ctdb/ctdb.socket" \ op monitor interval="10" timeout="20" \ op start interval="0" timeout="90" \ op stop interval="0" timeout="100"crm(live)configure#
primitive
nmb systemd:nmb \ op start timeout="60" interval="0" \ op stop timeout="60" interval="0" \ op monitor interval="60" timeout="60"crm(live)configure#
primitive
smb systemd:smb \ op start timeout="60" interval="0" \ op stop timeout="60" interval="0" \ op monitor interval="60" timeout="60"crm(live)configure#
group
g-ctdb ctdb nmb smbcrm(live)configure#
clone
cl-ctdb g-ctdb meta interleave="true"crm(live)configure#
commit
配置选项 ctdb_recovery_lock
中的二进制文件 /usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
依序包含参数 CLUSTER_NAME
CEPHX_USER CEPH_POOL
CEPHX_USER。
添加集群 IP 地址:
crm(live)configure#
primitive
ip ocf:heartbeat:IPaddr2 params ip=192.168.2.1 \ unique_clone_address="true" \ op monitor interval="60" \ meta resource-stickiness="0"crm(live)configure#
clone
cl-ip ip \ meta interleave="true" clone-node-max="2" globally-unique="true"crm(live)configure#
colocation
col-with-ctdb 0: cl-ip cl-ctdbcrm(live)configure#
order
o-with-ctdb 0: cl-ip cl-ctdbcrm(live)configure#
commit
如果 unique_clone_address
设置为 true
,IPaddr2 资源代理将向指定的地址添加一个克隆 ID,从而导致出现三个不同的 IP 地址。这些地址通常是不需要的,但有助于实现负载平衡。有关此主题的更多信息,请参见https://www.suse.com/documentation/sle-ha-12/book_sleha/data/cha_ha_lb.html。
检查结果:
root@earth #
crm
status Clone Set: base-clone [dlm] Started: [ factory-1 ] Stopped: [ factory-0 ] Clone Set: cl-ctdb [g-ctdb] Started: [ factory-1 ] Started: [ factory-0 ] Clone Set: cl-ip [ip] (unique) ip:0 (ocf:heartbeat:IPaddr2): Started factory-0 ip:1 (ocf:heartbeat:IPaddr2): Started factory-1
从客户端计算机进行测试。在 Linux 客户端上运行以下命令,以检查能否从系统复制文件以及将文件复制到系统:
root #
smbclient
//192.168.2.1/myshare