NFSv4的引用 迁移和备份( referral migration and replication for NFSv4)

来源:互联网 发布:韩国软件ins下载 编辑:程序博客网 时间:2024/06/05 18:18

NFSv4的引用 迁移和备份
RFC3530定义了文件系统的迁移和备份机制。文件系统的位置信息(fs_location属性)提供了一种让客户端获取到它的方式。Fs_location属性包含了a list of locations,location包含hostname,path name(代表服务器端文件系统的root)。Fs_location的含义1取决于服务的种类。如果是迁移,list中就记录数据被转移到的位置。如果是备份,list中就给出备份的文件系统位置。
本文目标在于简短的解释一下迁移和备份,并且给出一些使用它们的配置信息。
1. 引用(Referrals):
引用的场景
当客户端第一次访问文件系统时就被directed到一个新的位置,从客户端的角度来看,这最好被描述成为备份而不是迁移,因为如果是迁移的话,客户端并没有获得任何有关于迁移发生之前的文件系统的信息。
如果在迁移发生的时候,还没有任何客户端访问文件系统,那么这就是一个纯净的引用情况:所有的客户端将会看到的只是一个不存在的文件系统的引用。
假设客户端能够使用这些引用去找到文件系统的当前位置,服务器能够有效的提供这些引用,即使文件系统从来也不存在于这个服务器上。
引用使得建立一个多服务器的namespace成为可能,这样客户端能够根据提供引用服务的服务器上的文件系统的名字访问文件系统。这样更改服务器上的配置,将文件系统从这个服务器移到另一个服务器将不会影响到客户端。
这可以保持多个服务器负载均衡,要比一个服务器host所有exported的文件系统要好。我们可以很容易的想象出这样一个架构:服务器只向客户端提供引用,然后将请求分发给包含数据的服务器。
 
配置:
服务器必须使用如下选项在/etc/exports文件中说明迁移的文件系统的位置:
refer=<directory>@<host>
例子:
 
服务器指明了/export/docs和/export/sources已经被迁移到2个服务器上。
NB:只有服务器端需要配置。客户端和文件系统迁移到的服务器都不需要特别的配置。客户端只要能够处理fs_location就可以。在2.6.18-rc5及以上的内核都可以支持。客户端不需要修改。
2. 迁移:
文件系统迁移被用来将文件系统从一个服务器迁移到另一个服务器上。迁移通常用于可写的并且有a single copy的文件系统。通过NFS来转移数据,并且不需要弄乱客户端的配置信息是非常好的,因为每个数据位置发生的变化客户端都会知道。
简单来说:
客户端已经通过NFS4挂载了文件系统。服务器管理员有权利决定将这个exported的文件系统转移到其他服务器上。服务器必须告诉每一个挂在该文件系统的客户端,该数据已经被转移走了。
客户端和服务器之间关于迁移事件使用的通信方式如下:一旦参与到迁移中的服务器完成了文件系统的移动,原服务器接收到的后续客户端请求将会返回NFS4ERR_MOVED错误,客户端还获取fs_location的值。然后客户端使用该属性将他的请求重定向到指定的服务器上。
配置:
在服务器端要使用refer选项来指明被迁移的文件系统的位置。还有,需要在服务器上做一些事,类似于:
Mount –bind /dummy_mount /export_nfs
(这里假设/export是nfs-root,并且is not currently a mountpoint)
客户端不需要额外的配置,这个操作对于客户端来说是透明的
迁移服务器(应该是指真正存放数据的服务器)必须配置成single server的样子(只有单一文件系统exports)
例子:
 
 
通常的操作顺序:
1:客户端挂在由server1 export的文件系统
2:文件系统从server1迁移到server2
3:当客户端试图访问文件系统时,客户端收到NFS4ERR_MOVED错误和fs_location,里面包含文件系统的新位置
4:客户端挂载server2上的文件系统
注意:迁移数据的方式在NFSv4上并没有定义
引用和迁移:
引用可以认为是迁移的特殊情况。
从客户端的角度来看,如果一个服务器实现文件系统迁移,没有同步迁移事件的彼此独立的客户端们将会遇到不同的情况。
有一些已经收到了迁移后的文件系统的文件句柄filehandles,而另一些可能还在访问原来的文件系统(当它还存在时)然后需要被重定向。
因此引用是迁移的特殊情况。当迁移事件发生时,有一些客户端将会看到普通的迁移事件,他们正在访问的文件系统被迁移。而另一些客户端将会看到的是引用事件,因为他们第一次访问文件系统时,该文件系统就已经被迁移走了。
3. 备份
对于备份这种情况,fs_location用于提供给客户端文件系统被备份到的所有位置的列表,并且如果发生了一些问题(网络问题,nfs deamon停止工作等),客户端能够去访问备份的位置。
文件系统备份用于只读数据。通常文件系统将会在两个及以上的服务器上备份。Fs_location将会向客户端提供包含这些位置信息的list。在第一次访问文件系统时,客户端会获取fs_location。如果以后客户端请求超时,客户端可能会尝试使用fs_location中记录的服务器。
在这种情况下被分在其他服务器上的exported数据叫做备份(replicas)
注意:NFSv4 不负责管理备份文件系统的方式。
我们可以想象的备份情况:
-手动备份数据(将文件系统从一个服务器copy到另一个上)。这种情况下,数据应该保持在只读状态。
-通过外部工具管理备份数据,外部工具能够管理备份的更新,保持备份之间的数据一致性。
配置:
客户端配置:不需要配置。只要有2.6.18-rc5及以上的内核来支持fs_location函数即可。
服务器配置:export list必须包含每个备份的文件系统的位置,使用replica=<dir>@<host>选项
备份配置:备份是一个single NFS-server,可以像单独的服务器或者备份被客户端访问。
例子:
 
通常的操作顺序:
 
1- 客户端挂载文件系统,并且获得备份位置
2- 客户端无法连接到服务器
3- 客户端挂在备份文件系统
4.软件要求(待确认)
Kernel:linux-2.6.18-rc5
NFS userland package:nfs-utils-1.0.10

0 0