Linux网络文件系统的数据备份及恢复机制实现网络文件系统的数据备份及恢复机制实现
Linux 网络文件系统简介
网络文件系统(NFS)协议是由 Sun MicroSystem 公司在 20 世纪 80 年代为了提供对共享文件的远程访问而设计和实现的,它
采用了经典的客户机/服务器模式提供服务。为了达到如同 NFS 协议通过使用 Sun 公司开发的远在本机上使用本地文件系统
一样便捷的效果,NFS 通过使用远程过程调用协议(RPC Protocol)来实现运行在一台计算机上的程序来调用在另一台远程机器
上运行的子程序。同时,为了解决不同平台上的数据交互问题,它提供了外部数据表示(XDR)来解决这个问题。为了灵活地提
供文件共享服务,该协议可以在 TCP 协议或者是 UDP 协议上运行,典型的情况是在 UDP 协议上运行。在此基础上,NFS 在
数据的传送过程中需要 RPC 命令得到确认,而且在需要的时候会要重传,这样既可以通过 UDP 协议获得较高的通信效率,
也能通过 RPC 来获得较高的通信可靠性。
由于 NFS 基于 C/S 模式提供服务,所以它的核心组件主要包括客户机和服务器两部分。图 1 详细说明了 NFS 的主要组件以
及主要的配置文件。在服务器端,portmap、mountd、nfsd 三个监控程序将在后台运行。portmap 监控程序用来注册基于
RPC 的服务。当一个 RPC 的监控程序启动的时候,它告诉 portmap 监控程序它在哪一个端口进行侦听,并且它在进行什么
样的 RPC 服务。当一个客户机向服务器提出一个 RPC 请求,那么它就会和 portmap 监控程序取得联系以确定 RPC 消息应
该发往的端口号。而 Mountd 监控程序的功能是来读取服务器端的/etc/exportfs 文件并且创建一个将服务器的本地文件系统导
出的主机和网络列表,因而客户机的挂接(mount)请求都被定位到 mountd 监控程序(daemon)。当验证了服务器确实具有挂接
所请求的文件系统的权限以后,mountd 为请求的挂接点返回一个文件句柄。而 nfsd 监控程序则被服务器用来处理客户机端发
送过来的请求。由于服务器需要同时处理多个客户机的请求,所以在缺省情况下,操作系统将会自动启动八个 nfsd 线程。当
然,如果 NFS 服务器特别忙的时候,系统有可能根据实际情况启动更多的线程。
图 1 网络文件系统简图
NFS 的客户机与服务器之间通过 RPC 进行通信,通信过程如下所示:
用户将 NFS 服务器的共享目录挂载到本地文件系统中。
客户访问 NFS 目录中的文件时,NFS 客户端向 NFS 服务器端发送 RPC 请求。
NFS 服务端接收客户端发来的 RPC 请求,并将这个请求传递给本地文件访问程序,然后访问服务器主机上的一个本地的磁盘
文件。NFS 服务器可以同时接收多个 NFS 客户端的请求,并对其进行并发控制。
NFS 客户端向服务器主机发出一个 RPC 调用,然后等待服务器的应答。NFS 客户端收到服务器的应答后,把结果信息展现
给用户或应用程序。
NFS 下的数据备份、恢复的主要功能
对数据进行备份与恢复是保证数据安全和业务连续性的非常成熟的做法。在 Linux 下的本地文件系统(例如 Ext2、Ext3 等)
中,数据备份和恢复一般采用常规的办法来进行操作,例如使用 Tar、Archive 等。而对于 NFS 来说,其数据备份需要采用量
身定制的方法来进行。
为了保证数据在灾难环境中的可用性和业务连续性,针对它的数据备份、恢复方案应具备如下重要功能:
通过对系统重要数据的快速备份,切实保证系统数据的安全;
可以根据指令完成备份系统的实时切入,保证服务不被中断,保持系统持续运行的能力;
通过实时记录所有文件的操作日志,系统管理员能够在发生灾难的情况下对日志进行分析和取证,从而发现入侵者的蛛丝马
迹。
NFS 多版本备份技术
为了保证服务器出现故障后能迅速恢复,要求系统数据能快速恢复到一个最近的正确状态,所有这些都需要多版本技术的支
持,通过同步记录文件的在某些时刻的状态,在整个系统范围内建立起类似于数据库系统的”检查点”,以保证上述目标的实