Data Domain:如何对 Boostfs 安装、配置和装载问题进行故障处理
Summary: 本文可帮助用户识别和解决一些典型的 BOOSTFS 安装和配置问题。
Symptoms
BOOSTFS 是可能安装在某些操作系统中的软件组件,它提供了在不使用任何特定备份应用程序的情况下运行 BOOST 备份到 Data Domain 的能力,同时利用使用支持 BOOST 的备份应用程序(如 Netbackup、Networker 和 Avamar)附带的一些功能。
有关更多“切中要害”的安装和利用率详细信息,请查看 Data Domain:DataDomain BOOST FS 的加速配置步骤和详细信息 知识库文章。
但是,本知识库文章包含配置和使用 BOOSTFS 时可能发现的一些典型问题,以便客户快速了解这些典型错误、错误消息以及解决方法。典型的此类错误包括“无法将 Boostfs 安装到 Linux 服务器上”、“Boostfs 装载失败并显示错误”或“备份或还原失败并显示错误”等。
Resolution
1.安装 BOOST FS 软件
时缺少所需的依赖项如果在客户端 Linux 操作系统中安装提供的 BOOSTFS 软件 RPM 失败,请首先确定 BOOSTFS 软件所需的软件包依赖项:
# rpm -qpR DDBoostFS-1.0.0.1-539441.rhel.x86_64.rpm 保险丝 >= 2.8 fuse-libs >= 2.8 /bin/sh /bin/sh /bin/sh /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(压缩文件名) <= 3.0.4-1
在上面的示例中,软件包要求安装 FUSE(USEr 空间中的文件系统)二进制文件和库(BOOSTFS 基于 Linux 的 FUSE),以及任何提供 shell (sh) 和默认 RPM 库的软件包。因此,此 BOOSTFS 软件包应正常安装在运行“rpm”的 Linux 系统中。
2.无法挂载 /mnt/mountpoint/:意外错误
尝试通过 BOOSTFS 在 Linux 客户端本地装载远程 DD 存储单元时,您可能会收到上述错误。查看 Linux 客户端中的 BOOSTFS 日志文件。例如,在下面的第一个示例中,密码箱文件不包含主机 dd2500-abc.datadomain.com 的条目:
# less /opt/emc/boostfs/log/ddboostfs_0_0.log Jul 29 03:45:25 22795 3267069888 [E] bfs_lockbox_get_user_info:无法在配置文件 /opt/emc/boostfs/lockbox/boostfs.lockbox 中找到密钥条目 dd2500-abc.datadomain.com:LSU2。找不到请求的密码箱条目。 Jul 29 03:45:25 22795 3267069888 [E] bfs_conn_lookup: connection lookup failed for node 0 file /.boostfs_sysinfo.(0 个连接) Jul 29 03:45:25 22795 3267069888 [I] bfs_node_lookup: 无法获取文件 /.boostfs_sysinfo 的连接 Jul 29 03:45:25 22795 3267069888 [E] bfs_initialize_mntopts: initialization failed
在这种情况下,解决方案是为要在本地装载的目标 DD 主机和存储单元添加密码箱条目。语法类似于以下示例:
# /opt/emc/boostfs/bin/boostfs lockbox set -u sysadmin -d dd2500-abc.datadomain.com -s LSU2 输入存储单元用户密码: 再次输入存储单元用户密码以确认: 密码箱条目集
在本地 BOOSTFS 客户端日志中可以看到的另一个可能的错误是无法从客户端解析 DD 主机名,例如:
# less /opt/emc/boostfs/log/ddboostfs_0_0.log Jul 29 04:05:50 22882 3322156992 [E] bfs_conn_open: connect failed (0 connections):5037 Jul 29 04:05:50 22882 3322156992 [E] bfs_conn_lookup: connection lookup failed for node 0 file /.boostfs_sysinfo.(0 个连接) Jul 29 04:05:50 22882 3322156992 [I] bfs_node_lookup: 无法获取文件 /.boostfs_sysinfo 的连接 Jul 29 04:05:50 22882 3322156992 [E] bfs_initialize_mntopts: initialization failed
在这种情况下,解决方案是将静态 hosntame 添加到 Linux 客户端的 /etc/host 文件的 IP 映射,或者在正在使用的 DNS 服务器中配置映射。
3.装载点 /mnt/mountpoint 为非空。
BoostFS 不能装载到非空装载点。请尝试在空装载点装载。
上述消息表示指定的挂载点 (/mnt/mountpoint) 不能用于显示远程 DD 存储单元,因为该挂载点之前不能装载另一个文件系统,也不能包含任何内容。/mnt/mountpoint/ 必须是 Linux 客户端中空且未使用的目录。如果路径已有装载,则必须指定其他装载点。例如:
# 挂载 /dev/mapper/vg00-lv_root on / type ext4 (rw) /dev/sda1 on /boot type ext4 (rw) BoostFS on /mnt/mountpoint type fuse.boostfs (rw,nosuid,nodev)
在这种情况下,远程 DD 存储单元已装载在 /mnt/mountpoint/ 下,因此无法在同一目录中再次装载。
4.DDBoostfs 装载挂起(可能需要 10 分钟以上才能返回)
当 Linux 客户端与目标 DD 设备之间的防火墙丢弃到 TCP 端口 111 和 2049 的流量时,可能会发生这种情况。确保 Linux 客户端可以到达 DD 到 TCP 端口 111 和 2049,然后重试,例如:
# /opt/emc/boostfs//bin/boostfs mount -d dd2500.domain.com -s LSU2 /mnt/mountpoint/
在这种情况下,您会在 Linux 客户端 BOOSTFS 日志中看到以下示例:
# less /opt/emc/boostfs/log/ddboostfs_0_0.log Jul 27 06:34:53 32762 3724339136 [E] bfs_conn_open: connect failed (0 connections):5037 Jul 27 06:34:53 32762 3724339136 [E] bfs_conn_lookup: connection lookup failed for node 0 file /.boostfs_sysinfo.(0 个连接) Jul 27 06:34:53 32762 3724339136 [I] bfs_node_lookup:无法获取文件 /.boostfs_sysinfo 的连接 Jul 27 06:34:53 32762 3724339136 [E] bfs_initialize_mntopts: initialization failed
5.尝试访问或列出装载点下的内容时不允许操作
# ls -l /mnt/mountpoint/ ls: reading directory .:不允许操作 共 0 条
问题可能是与远程 DD 端口 111 和 2049 没有 TCP 连接,或者密码箱身份验证已以某种方式过期。确保 Linux 客户端仍可在指定端口上访问 DD,然后再次尝试为远程 DD、存储单元和 BOOST 用户设置密码箱。
6.使用 kerberos 身份验证时,对 或 存储单元的访问不足。
# boostfs mount -s LSU3 -d dd2500.domain.com /mnt/mountpoint/ 对存储单元 LSU3 的访问权限不足
对密码箱使用 Kerberos 身份验证时,出错的最可能原因是 kerberos 身份验证票证已过期。从 Linux 检查提到的票证,如下所示:
# /opt/emc/boostfs/bin/boostfs kerberos query -s LSU3 -u username 客户端主体:username@DOMAIN.COM 有效起始时间:Tue Aug 23 11:02:49 2016 到期:Tue Aug 23 21:01:07 2016 续订截止时间:Tue Aug 30 11:02:49 2016 服务主体:krbtgt/DOMAIN。COM@DOMAIN.COM
在 DDR 上,验证为存储单元分配的 BOOST 用户是否与设置密码箱和装载 BOOSTFS 时 Linux 客户端上的用户匹配(AD 用户名和存储单元用户名必须完全相同):
# ddboost storage-unit show Name Pre-Comp (GiB) Status User Report Physical Tenant-Unit 大小 (MiB) --------------- -------------- ------ -------- --------------- ----------- LSU3 0.0 RW 用户名 - - --------------- -------------- ------ -------- --------------- -----------
还要注意确认 DD、Linux 客户端和 Kerberos 服务器 (AD) 中的日期/时间相隔不超过 5 分钟,否则可能会出现由于时间不一致而导致票证过期的问题。
下面是一个示例,如果时间相差超过 5 分钟,我们将在 DD 日志中看到的内容:
# log watch debug/ddfs.info 08/23 18:52:09.654 (tid 0x7f738141fb00): nfs3 接受 3000004b6 552 从 10.64.229.125:55042 08/23 18:52:09.660 (tid 0x7f738140c890):[dd_rpc2_nfs x3000004b6] dd_rpc_gss_print_error:117 - 事件 gss_error,gss_accept_sec_context失败:maj = 0xd0000,min = 0x96c73a25 08/23 18:52:09.660 (tid 0x7f738140c890):[dd_rpc2_nfs x3000004b6] dd_rpc_gss_print_error:126 - 事件 gss_error,未指定的 GSS 故障。 次要代码可能会提供更多信息 08/23 18:52:09.660 (tid 0x7f738140c890):[dd_rpc2_nfs x3000004b6] dd_rpc_gss_print_error:141 - 事件gss_error,时钟偏移太大 08/23 18:52:09.660 (tid 0x7f738140c890):[dd_rpc2_nfs x3000004b6] dd_rpc_gss_accept:217 - 事件 gss_accept_failed,maj = 851968,min2529638949 08/23 18:52:09.660 (tid 0x7f73814233f0): nfs3 destroyed tcp 3000004b6
这些是 BOOSTFS Linux 主机日志:
# less /opt/emc/boostfs/log/ddboostfs_0_0.log Aug 23 18:04:39 1044 2019465280 [E] bfs_conn_open: connect failed (0 connections):5075 Aug 23 18:04:39 1044 2019465280 [E] bfs_conn_lookup: connection lookup failed for node 0 file /.boostfs_sysinfo.(0 个连接) Aug 23 18:04:39 1044 2019465280 [I] bfs_node_lookup:无法获取文件 /.boostfs_sysinfo 的连接 Aug 23 18:04:39 1044 2019465280 [E] bfs_initialize_mntopts: initialization failed
7. 使用 Kerberos 身份验证的 Boostfs 装载失败,并显示以下错误“无法访问密码箱或找不到密码箱条目”
# /opt/emc/boostfs/bin/boostfs mount -s LSU3 -d dd2500.domain.com /mnt/mountpoint/ 无法访问密码箱或找不到密码箱条目
如果您打算在 “/opt/emc/boostfs/etc/boostfs.conf” 中使用 BOOSTFS 配置选项,请验证文件中的 “[global]” 设置,并确保它没有被注释掉(为了使任何全局选项起作用,关键字 “[global]” 必须取消注释)。默认情况下,此关键字会被注释。
BOOSTFS “/opt/emc/boostfs/etc/boostfs.conf” 配置文件的示例内容:
# 不允许在选项值对后添加注释。 # ############################################################################# [全球] # Data Domain 主机名或 IP 地址 # data-domain-system=dd2500.domain.com
您将在 Linux 客户端 BOOSTFS 日志中看到的输出示例:
# less /opt/emc/boostfs/log/ddboostfs_0_0.log Aug 24 08:23:35 27227 3565582272 [E] bfs_lockbox_get_user_info:无法在配置文件 /opt/emc/boostfs/lockbox/boostfs.lockbox 中找到密钥条目 dd2500-rtp2.techsupp.local:LSU3。找不到请求的密码箱条目。 Aug 24 08:23:35 27227 3565582272 [E] bfs_conn_lookup: connection lookup failed for node 0 file /.boostfs_sysinfo.(0 个连接) Aug 24 08:23:35 27227 3565582272 [I] bfs_node_lookup:无法获取文件 /.boostfs_sysinfo 的连接 Aug 24 08:23:35 27227 3565582272 [E] bfs_initialize_mntopts: initialization failed
此外,该错误可能是由于在 Linux 客户端“mount”命令中使用了不同的主机名、存储单元名称或 BOOST 用户名(与用于设置密码箱的主机名、存储单元名称或 BOOST 用户名对应于目标 DD)所致。确保 DD、BOOSTFS 密码箱和“mount”命令中的所有名称都匹配。
8. 尝试设置“boostfs”用户凭据失败,并显示以下错误 :
bfs_krb5_err_handler:Kerberos 错误:-1765328360 [ERROR_MESSAGE=获取初始凭据失败。]
无法设置 Kerberos 凭据
1。通过使用 Active Directory 用户凭据
登录 DC 来验证 Active Directory 用户凭据是否正确 2.验证 Linux 客户端和 Kerberos 服务器上的时间间隔不超过 5 分钟。Kerberos 身份验证要求时钟时间间隔不超过 5 分钟。
9.在 Linux 客户端中挂载 BOOSTFS 时,以错误“fusermount: mount failed:Operation not permitted.”
这可能是由于多种原因造成的。“fusermount”是底层 Linux 命令,最终使用 FUSE 在 Linux 客户端命名空间本地装载 DD BOOST 存储单元。这样做需要特殊权限。这就是为什么“fusermount”是 Linux 客户端中的 SUID 二进制文件的原因:
# ls -l /usr/bin/fusermount -rwsr-xr-x。1 root root 38680 May 11 2019 /usr/bin/fusermount
作为 SUID 二进制文件意味着无论用户尝试装载存储单元,“fusermount”都将以“root”权限运行。如果“fusermount”不是 suid 到 root,则可能只有 Linux 客户端 root 用户才能装载远程 BOOST 存储单元。如果在 /etc/fstab 下设置挂载,这可能不会有问题,但是当挂载由非 root 用户完成时,这不会有问题。
10.BOOSTFS 装载正常,但尝试访问装载点处的存储单元内容失败并显示权限错误
使用 DataDomain“boostfs”命令或 /etc/fstab(甚至是 CLI 中的“mount.fuse”)手动装载存储单元时,默认的底层 FUSE 实施仅允许对装载 BOOSTFS 的 Linux 客户端用户 ID 访问文件。因此,如果以 root 用户身份进行装载,则只有 root 用户可以访问文件。如果以用户“postgres”身份进行装载(用于备份 PostgreSQL 数据库),则只有此用户有权访问文件。
如果出于不同的原因,需要其他用户能够从 Linux 云访问已装载存储单元中的文件,则可能需要调整 /etc/fuse.conf。在此处查看更多详细信息:
http://manpages.ubuntu.com/manpages/bionic/en/man8/mount.fuse.8.html
您需要在 /etc/fuse.conf 中设置以下选项:
user_allow_other
允许非 root 用户指定 allow_other 或 allow_root 装载选项(请参阅
下文)。
然后在挂载 BOOST 存储单元时,从命令行使用以下命令:
allow_other
此选项将覆盖限制用户访问文件的安全措施
装载文件系统。 因此,所有用户(包括 root)都可以访问这些文件。 这
默认情况下,选项仅允许 root 用户使用,但可以通过以下方式删除此限制
上述配置选项 (user_allow_other)。
Additional Information
1.在 boostfs 配置文件中可以定义的挂载点部分的最大数量是多少?
boostfs.conf 文件的装载点部分对装载数量没有限制。
# 挂载点部分用 [mountpoint] 标签分隔 # # [/path/to/mount] # [/mnt/bofs] # Data Domain 主机名或 IP 地址 # data-domain-system=dd2500-1.yourdomain.com # 存储单元 # storage-unit=su-name # storage unit username # storage-unit-username=sysadmin # 要挂载到的存储单元中的子目录 # directory-name=path/to/subdir
2.默认情况下,Networker 支持 BOOSTFS,并且可以处理动态装载以执行某些任务和备份
即使 Networker 是启用了 BOOST 的备份应用程序,它在安装 BOOSTFS 的 Linux 客户端系统上也支持 BOOSTFS。设置 BOOSTFS 密码箱后,从 Linux 客户端命令行获取的一个 NW 备份示例如下(PostgreSQL 备份):
# nsroappbackup -z /nsr/apps/config/backup_postgresql.cfg 174908:(pid 16487):将备份数据保存在池“DB”中。 175019:(pid 16487):在主机“dd.example.com”上收到介质管理绑定信息。 174910:(pid 16487):连接到主机“dd.example.com”上的 nsrmmd 进程。 + /usr/pgsql-11/bin/pg_dump --file=/nsr/apps/tmp/e3106c82_294324_16487/dump.sql --format=plain 使用返回值 0 继续处理。 + /bin/cp /data/postgresql.conf /nsr/apps/tmp/e3106c82_294324_16487/ 使用返回值 0 继续处理。 时间“01/04/20 15:40:36”的存储集“PostgreSQL_postgres_backuppostgre_full”中的文件为: 大小: Name: 2645 dump.sql 24000 postgresql.conf 2 文件 26645 字节 备份命令“/nsr/apps/config/scripts/backup-postgre-dbon1-full.sh”已成功完成。 备份已成功完成。
配置备份作业后,还可以从 NW GUI 中启动它,并在该位置监视进度。当完成 NW 发出的装载时,工程将显示如下所示的日志条目:
Apr 1 15:20:49 dd.example.com ddfs[17040]:注意:ddboost-client.example.com-49808<>:Boostfs:Apr 1 15:22:52.395 16275 704915520 [I] DDBoost Plugin Version is:[7.0.0.0.633508] Apr 1 15:20:49 dd.example.com ddfs[17040]:注意:ddboost-client.example.com-49808<>:Boostfs:Apr 1 15:22:52.395 16275 704915520 [I] BoostFS Version info:[BOOSTFS:7.0.0.0-633922 FUSE:2.9.7] Apr 1 15:20:49 dd.example.com ddfs[17040]:注意:ddboost-client.example.com-49808<>:Boostfs:Apr 1 15:22:52.395 16275 704915520 [I] bfs_lib_init:挂载 dd.example.com:LSU_NAME on /mnt/mountpoint