将samba域迁移到CTDB

时间:2015-05-25 20:43:33

标签: samba migrate tdb

我正在尝试将samba域控制器(版本3.6,passdb backend = tdbsam)迁移到具有CTDB的新集群环境(相同的samba版本)。 我有一个功能性ceph存储和根据文档配置的ctdbd。

但是,所有可用的指南都适用于全新安装,我无法将当前数据迁移到CTDB中。

简单地将tdb数据库恢复到CTDB中不起作用,它以以下错误结束:

  

2015/05/25 22:25:04.849302 [5636]:无效的数据库转储版本。   文件是版本7308332182664266836,但预期版本是1

使用ltdbtool转换tdb数据库也不会带来任何乐趣。

如何将tdb samba数据库导入ctdb? 谢谢, 马可

1 个答案:

答案 0 :(得分:1)

首先要说几句警告:用CTDB集群域控制器并不常见。 Clustering / CTDB是为文件服务器制作的,文件服务器通常是域中的成员服务器。域控制器的主要目的是为客户端提供登录服务,并且通常使用不同的复制服务(例如,将数据库存储在ldap而不是TDB中)。集群域控制器可能会有问题,因为整个集群需要将自身始终作为单个服务器呈现给客户端。这可能会导致nmbd / NetBIOS名称解析出现问题。此外,一个问题是您需要在群集中确保在具有相同用户ID的所有ctdb群集节点上创建所有用户帐户。

通常,最佳做法是尽可能将文件服务器角色与域控制器角色分开。还要记住,从Samba 4.0开始,现在有一个Active Directory域控制器的功能,它在协议级别附带了用户数据库的多主复制。

所有这一切,重要的是你无法自由替换samba和ctdb版本。 Samba 3.6应该与ctdb 2.5一起使用,但是需要针对要使用的ctdb版本重新编译Samba。即如果Samba是针对旧版本的CTDB(如1.0.114.X)编译的,那么这个二进制包将无法与CTDB 2.5一起使用。

如果您有一组samba和ctdb软件包,那么将先前安装迁移到此新安装的过程取决于先前的安装是否也是CTDB集群。如果是这样,你可以做

ctdb getdbmap

在旧安装上运行

ctdb backupdb

标记为PERSISTENT的所有数据库。在新安装中,您使用

ctdb restoredb

恢复所有这些数据库。

如果以前的安装是非群集Samba,那么您使用ltdbtool的提示是正确的。你必须

  • 从旧安装中复制重要数据库,至少:

    secrets.tdb passdb.tdb winbindd_idmap.tdb group_mapping.tdb account_policy.tdb share_info.tdb

  • 使用ltdbtool

  • 将它们转换为ctdb格式
  • 确保所有节点上的ctdb都为OFF
  • 将转换后的dbs复制到节点号0上的/var/lib/ctdb/persistent/,后缀为.0的文件名,例如`/var/lib/ctdb/persistent/secrets.tdb.0'
  • 在节点0上启动ctdb
  • 在所有其他节点上启动ctdb

之后,这些数据库应该在集群上同步。