分类: 服务器与存储
2011-01-02 02:05:30
VERITAS Netbackup工作原理可以用下图来表示:
为了方便理解,以一个定时备份为例说明各个进程的工作原来和作用。
备份发起
首先是bprd,backup request daemon, 备份恢复任务的最终发起者,同时也是用户管理接口。如果是手工备份,通过它提交;如果是定时任务,由它根据netbackup 的”wakeup interval”参数定时唤起bpsched,去检查备份计划表,发现有一个备份到点了,它就会发出备份指令。
master server和media server的通讯
Bpsched和bpcd的通讯是通过TCP完成的。Bpcd通过inetd侦听13782端口。
对于熟悉unix socket编程的人来说,inetd的工作原理应该并不陌生。Inetd是最经典的多线程程序,虽然有它的时候,线程概念还没有被提出来。Inetd daemon进程根据inetd配置,侦听一堆端口,如果某个端口收到请求就fork一个进程进行处理,我们常用的telnet,ftp等等都是由inetd管理,这样做的好处是,如果有1000个tcp端口需要侦听,如果每个进程侦听一个端口,就需要1000个进程,这显然对unix是个很大的负担,如果用一个进程来完成这1000个进程的工作是个比较好的选择。大家打开inetd的配置文件(linux上的xinetd是用目录来管理配置文件的),可以看到,当端口收到请求时inetd会fork bpcd(backup communication daemon)进程。
Media server的备份流程
Media server的bpcd进程收到请求后,会启动bpbrm(backup and restore manager)进程,bpbrm负责启动和管理备份作业的写进程,如果是磁带备份就启动bptm(backup tape manger),如果是磁盘备份就启动bpdm(backup disk manager)。如果bptm/bpdm没有报错,就通过inet 向客户端的bpcd提出备份要求, 客户端bpcd收到指令,启动bpbkar(backup and archive manager),这个进程会收集指定的备份文件数据,把他们发送给media server的bptm或者bpdm。
总的来说,bprd/bpdbm/bpcd/bpbkar/bptm/bpdm这些进程都是通过TCPIP进行的通讯的,/etc/services记录了这些进程的端口号,可以根据需要,对他们进行调整。
bptm/bpdm的工作原理
下面介绍一下bptm/bpdm的工作原理,bptm/bpdm采用的是常见的parent/client结构,在unix下写过ipc程序的人应该多写过这样的程序。当bpdm第一次收到客户端的bpbkar的消息时,fork一个子进程,子进程和父进程具有相同的进程上下文(context),然后就由子bptm进程负责接收bpbkar发来的备份数据(所以在备份的时候media server应该能看到多个bptm/bpdm进程)。子bptm进程把接收到的数据放入一块共享内存区,然后由父bptm进程从共享内存区中把数据读出,写到磁带上。所以当多个备份任务同时进行时,会有子bptm进程,而父bptm进程只有一个。
Metadata的传输过程
上面主要介绍了备份的数据流,没有包括metadata(catalog数据)的传输过程,这部分就是上图的虚线部分, metadata的传输比较简单,就是顺着我们前面介绍的路,原路返回,由bpsched发给bpdbm(backup database manager) 写到catalog里面去。
chinaunix网友2011-03-08 13:44:15
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com