Netbackup 8.1: bparchive 成功备份文件,但无法删除

问题现象:

Netbackup 8.x的版本中,使用bparchive对一个绝对路径中含有link(软链接)的目录进行bparchive归档操作,可以备份成功,但是备份成功之后该目录无法被删除。 如果bparchive的对象是一个文件,即使文件的绝对路径中包含软链接,那该文件是没问题的,备份完后可以正常删除。 

该问题在Netbackup 7.x版本中并不存在。我认为这是Netbackup产品设计的一个缺陷

问题重现:

以下的测试中,/tmp/lns0728是指向/tmp/0728的一个链接,那么使用bparchive归档表现如下:

  • 目录/tmp/lns0728/dirA 有问题
  • 目录/tmp/0728/dirA 没问题
  • 文件/tmp/lns0728/dirA/fileA 没问题
  • 文件/tmp/0728/dirA/fileA 没问题
HOST01:/tmp # mkdir 0728
HOST01:/tmp # ln -s /tmp/0728 /tmp/lns0728
HOST01:/tmp # ls -l lns0728
lrwxrwxrwx 1 root root 9 Jul 28 10:56 lns0728 -> /tmp/0728
HOST01:/tmp # cd lns0728
HOST01:/tmp/lns0728 # pwd
/tmp/lns0728
HOST01:/tmp/lns0728 # mkdir dirA
HOST01:/tmp/lns0728 # date > dirA/fileA
HOST01:/tmp/lns0728 # ls -l dirA
total 4-rw-r--r-- 1 root root 29 Jul 28 10:57 fileA
HOST01:/tmp/lns0728 # /usr/openv/netbackup/bin/bparchive -p POLICY1 -w -L /tmp/1.log /tmp/lns0728/dirA
HOST01:/tmp/lns0728 # ls -l dirA
total 4-rw-r--r-- 1 root root 29 Jul 28 10:57 fileA
HOST01:/tmp/lns0728 # /usr/openv/netbackup/bin/bparchive -p POLICY1 -w -L /tmp/1.log /tmp/0728/dirA
HOST01:/tmp/lns0728 # ls -l dirA
ls: cannot access 'dirA': No such file or directory

解释与分析:

在开启Debug模式后(Debug Log是在客户端把“bp.conf”的“VERBOSE”设为“6”后重启客户端NBU服务后搜集到的。),NBU厂商答复如下:

以下是我们通过打开Debug看到的7.x版本和8.x版本的差异。

===》 7.7.3 版本,归档软链接下的一个目录

  [root@docker02 ~]# cat /usr/openv/netbackup/bin/version
  NetBackup-RedHat2.6.18 7.7.3
  [root@docker02 ~]#
  [root@docker02 ~]# bparchive -p archive-docker02 -s archive-schedule -w -L /usr/openv/netbackup/logs/ARCHIVE.LOG/archive.20210728.1.log /tmp/link_to_0728/dirA
  [root@docker02 ~]# ls -l /tmp/link_to_0728/dirA
  ls: cannot access /tmp/link_to_0728/dirA: No such file or directory
  [root@docker02 ~]#
 
    08:24:52.301 [8148] <2> bpbkar SelectFile: cwd=NULL path=/tmp/link_to_0728/dirA
    08:24:52.301 [8148] <2> bpbkar resolve_path: INF - /tmp/link_to_0728 resolves to /tmp/0728
    08:24:52.301 [8148] <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728 is /tmp/0728
    08:24:52.301 [8148] <2> bpbkar SelectFile: INF - Resolved_path = /tmp/0728/dirA
    08:24:52.301 [8148] <2> bpbkar resolve_path: INF - /tmp/link_to_0728/dirA resolves to /tmp/0728/dirA
    08:24:52.301 [8148] <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728/dirA is /tmp/0728/dirA
    08:24:52.306 [8148] <2> bpbkar PrintFile: /
    08:24:52.307 [8148] <2> bpbkar PrintFile: /tmp/
    08:24:52.307 [8148] <2> bpbkar PrintFile: /tmp/0728/
    08:24:52.308 [8148] <2> bpbkar PrintFile: /tmp/0728/dirA/
    08:24:52.308 [8148] <2> bpbkar SelectFile: cwd=/tmp/0728/dirA path=fileA
    08:24:52.308 [8148] <4> check_file_sparseness: Device changing from 0 to 64768
    08:24:52.308 [8148] <2> fscp_is_tracked: disabled tla_init
    08:24:52.309 [8148] <2> bpbkar PrintFile: /tmp/0728/dirA/fileA
    08:24:52.309 [8148] <2> bpbkar resolve_path: INF - Actual mount point of / is /
    08:24:52.309 [8148] <4> bpbkar expand_wildcards: end backup for filelist /tmp/link_to_0728/dirA
    08:24:52.309 [8148] <2> bpbkar PrintFile: /VRTS_IMAGE_SIZE_RECORD
    08:24:52.310 [8148] <4> bpbkar main: INF - Client completed sending data for backup
    08:24:52.310 [8148] <2> bpbkar main: INF - Total Size:29
    08:24:52.310 [8148] <4> bpbkar Exit: INF - bpbkar exit normal
    08:24:52.310 [8148] <4> bpbkar Exit: INF - EXIT STATUS 0: the requested operation was successfully completed
    08:24:52.310 [8148] <2> bpbkar Exit: INF - Close of stdout complete
    08:24:57.174 [8148] <16> bpbkar Exit: ERR - read server exit status = 0: the requested operation was successfully completed
    08:24:57.175 [8148] <4> bpbkar Exit: ARC - Starting removal of backed up files.
    08:24:57.175 [8148] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA'
    08:24:57.175 [8148] <2> delete_recur: Removing file 'fileA'
    08:24:57.175 [8148] <2> delete_recur: Removed 1 files before rewind
    08:24:57.175 [8148] <2> delete_recur: Removing directory '/tmp/link_to_0728/dirA'
    08:24:57.176 [8148] <4> bpbkar Exit: ARC - Removal of backed up files completed.

===》 7.7.3 版本,归档软链接下的一个文件

  [root@docker02 ~]# bparchive -p archive-docker02 -s archive-schedule -w -L /usr/openv/netbackup/logs/ARCHIVE.LOG/archive.20210728.1.log /tmp/link_to_0728/dirA/fileA                       
  [root@docker02 ~]# ls -l /tmp/link_to_0728/dirA
  total 0
  [root@docker02 ~]#
 
    09:51:31.742 [31680] <2> bpbkar SelectFile: cwd=NULL path=/tmp/link_to_0728/dirA/fileA
    09:51:31.742 [31680] <2> bpbkar resolve_path: INF - /tmp/link_to_0728/dirA resolves to /tmp/0728/dirA
    09:51:31.742 [31680] <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728/dirA is /tmp/0728/dirA
    09:51:31.742 [31680] <2> bpbkar SelectFile: INF - Resolved_path = /tmp/0728/dirA/fileA
    09:51:31.760 [31680] <2> bpbkar PrintFile: /
    09:51:31.760 [31680] <2> bpbkar PrintFile: /tmp/
    09:51:31.761 [31680] <2> bpbkar PrintFile: /tmp/0728/
    09:51:31.762 [31680] <2> bpbkar PrintFile: /tmp/0728/dirA/
    09:51:31.762 [31680] <4> check_file_sparseness: Device changing from 0 to 64768
    09:51:31.762 [31680] <2> fscp_is_tracked: disabled tla_init
    09:51:31.763 [31680] <2> bpbkar PrintFile: /tmp/0728/dirA/fileA
    09:51:31.763 [31680] <4> bpbkar expand_wildcards: end backup for filelist /tmp/link_to_0728/dirA/fileA
    09:51:31.763 [31680] <2> bpbkar PrintFile: /VRTS_IMAGE_SIZE_RECORD
    09:51:31.764 [31680] <4> bpbkar main: INF - Client completed sending data for backup
    09:51:31.764 [31680] <2> bpbkar main: INF - Total Size:29
    09:51:31.764 [31680] <4> bpbkar Exit: INF - bpbkar exit normal
    09:51:31.764 [31680] <4> bpbkar Exit: INF - EXIT STATUS 0: the requested operation was successfully completed
    09:51:31.764 [31680] <2> bpbkar Exit: INF - Close of stdout complete
    09:51:38.985 [31680] <16> bpbkar Exit: ERR - read server exit status = 0: the requested operation was successfully completed
    09:51:38.986 [31680] <4> bpbkar Exit: ARC - Starting removal of backed up files.
    09:51:38.986 [31680] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA/fileA'
    09:51:38.987 [31680] <4> bpbkar Exit: ARC - Removal of backed up files completed.
    09:51:38.987 [31680] <4> bpbkar Exit: INF - ARCHIVE STATUS 0
    09:51:38.987 [31680] <4> bpbkar Exit: INF - setenv FINISHED=1

===》 8.1.1 版本,归档软链接下的一个目录

  [root@docker01 ~]# cat /usr/openv/netbackup/bin/version
  NetBackup-RedHat2.6.18 8.1.1
  [root@docker01 ~]#
  [root@docker01 ~]# bparchive -p archive-docker01 -s archive-schedule -w -L /usr/openv/netbackup/logs/ARCHIVE.LOG/archive.20210728.1.log /tmp/link_to_0728/dirA
  [root@docker01 ~]# ls -l /tmp/link_to_0728/dirA
  total 4
  -rw-r--r--. 1 root root 29 Jul 30 12:33 fileA
  [root@docker01 ~]#
 
    08:24:44.648 [22786] <2> bpbkar SelectFile: cwd=NULL path=/tmp/link_to_0728/dirA
    08:24:44.648 [22786] <2> bpbkar resolve_path: INF - /tmp/link_to_0728 resolves to /tmp/0728
    08:24:44.648 [22786] <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728 is /tmp/0728
    08:24:44.648 [22786] <2> bpbkar SelectFile: INF - Resolved_path = /tmp/0728/dirA
    08:24:44.648 [22786] <2> bpbkar resolve_path: INF - /tmp/link_to_0728/dirA resolves to /tmp/0728/dirA
    08:24:44.648 [22786] <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728/dirA is /tmp/0728/dirA
    08:24:44.652 [22786] <2> bpbkar PrintFile: /
    08:24:44.653 [22786] <2> bpbkar PrintFile: /tmp/
    08:24:44.654 [22786] <2> bpbkar PrintFile: /tmp/0728/
    08:24:44.655 [22786] <2> bpbkar PrintFile: /tmp/0728/dirA/
    08:24:44.655 [22786] <2> bpbkar SelectFile: cwd=/tmp/0728/dirA path=fileA
    08:24:44.655 [22786] <4> check_file_sparseness: Device changing from 0 to 64768
    08:24:44.656 [22786] <2> bpbkar PrintFile: /tmp/0728/dirA/fileA
    08:24:44.656 [22786] <2> bpbkar resolve_path: INF - Actual mount point of / is /
    08:24:44.656 [22786] <4> bpbkar expand_wildcards: end backup for filelist /tmp/link_to_0728/dirA
   
    08:24:44.811 [22786] <4> bpbkar Exit: INF - bpbkar exit normal
    08:24:44.811 [22786] <4> bpbkar Exit: INF - EXIT STATUS 0: the requested operation was successfully completed
    08:24:44.811 [22786] <2> bpbkar Exit: INF - Close of stdout complete
    08:24:54.946 [22786] <4> bpbkar Exit: INF - read server exit status = 0: the requested operation was successfully completed
    08:24:54.948 [22786] <4> bpbkar Exit: ARC - Starting removal of backed up files.
    08:24:54.948 [22786] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA'
    08:24:54.948 [22786] <2> delete_backed_up_files: Not removing directory (/tmp/link_to_0728/dirA) as it was not backed up

    08:24:54.949 [22786] <4> bpbkar Exit: ARC - Removal of backed up files completed.

===》 8.1.1 版本,归档软链接下的一个文件

  [root@docker01 ~]# bparchive -p archive-docker01 -s archive-schedule -w -L /usr/openv/netbackup/logs/ARCHIVE.LOG/archive.20210728.1.log /tmp/link_to_0728/dirA/fileA
  [root@docker01 ~]#
  [root@docker01 ~]# ls -l /tmp/link_to_0728/dirA
  total 0
  [root@docker01 ~]#
 
    09:51:58.574 [24419] <2> bpbkar SelectFile: cwd=NULL path=/tmp/link_to_0728/dirA/fileA
    09:51:58.574 [24419] <2> bpbkar resolve_path: INF - /tmp/link_to_0728/dirA resolves to /tmp/0728/dirA
    09:51:58.574 [24419] <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728/dirA is /tmp/0728/dirA
    09:51:58.574 [24419] <2> bpbkar SelectFile: INF - Resolved_path = /tmp/0728/dirA/fileA
    09:51:58.614 [24419] <2> bpbkar PrintFile: /
    09:51:58.632 [24419] <2> bpbkar PrintFile: /tmp/
    09:51:58.633 [24419] <2> bpbkar PrintFile: /tmp/0728/
    09:51:58.642 [24419] <2> bpbkar PrintFile: /tmp/0728/dirA/
    09:51:58.642 [24419] <4> check_file_sparseness: Device changing from 0 to 64768
    09:51:58.650 [24419] <2> bpbkar PrintFile: /tmp/0728/dirA/fileA
    09:51:58.650 [24419] <4> bpbkar expand_wildcards: end backup for filelist /tmp/link_to_0728/dirA/fileA
   
    09:51:58.749 [24419] <4> bpbkar Exit: INF - bpbkar exit normal
    09:51:58.750 [24419] <4> bpbkar Exit: INF - EXIT STATUS 0: the requested operation was successfully completed
    09:51:58.750 [24419] <2> bpbkar Exit: INF - Close of stdout complete
    09:52:02.484 [24419] <4> bpbkar Exit: INF - read server exit status = 0: the requested operation was successfully completed
    09:52:02.485 [24419] <4> bpbkar Exit: ARC - Starting removal of backed up files.
    09:52:02.485 [24419] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA/fileA'
    09:52:02.486 [24419] <4> bpbkar Exit: ARC - Removal of backed up files completed.


||| 不管是7.x版本还是8.x版本,在做归档之前的文件和目录的解析的逻辑是相同的;

    <2> bpbkar resolve_path: INF - /tmp/link_to_0728/dirA resolves to /tmp/0728/dirA
    <2> bpbkar resolve_path: INF - Actual mount point of /tmp/link_to_0728/dirA is /tmp/0728/dirA

||| 不管是7.x版本还是8.x版本,在做完归档之后的文件的删除处理逻辑也是相同的;

    09:51:38.986 [31680] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA/fileA'

    09:52:02.485 [24419] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA/fileA'

||| 差异在做完归档之后的删除目录时的处理逻辑上,有差异:

  7.x Log:
    08:24:57.175 [8148] <2> delete_recur: Removing directory '/tmp/link_to_0728/dirA'

  8.x Log:
    08:24:54.948 [22786] <2> delete_backed_up_files: List item = '/tmp/link_to_0728/dirA'
    08:24:54.948 [22786] <2> delete_backed_up_files: Not removing directory (/tmp/link_to_0728/dirA) as it was not backed up

- 8.x版本在删除目录前和‘resolve_path’(绝对路径)做比较,判断有链接的目录为没有归档的目录而不去做删除目录的动作;
- 7.x版本没有去做和‘resolve_path’的比较,所以,目录会被删除掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值