RFC3530 定义了NFS文件系统迁移和引用的管理机制。文件系统定位功能通过fs_location属性向客户端提供文件系统的位置信息。fs_location属 性是一个包含有位置信息的列表,位置信息由一个主机名(hostname)和一个路径名(path)组成,其中路径名表示服务器端的根(root)文件系 统。fs_location的具体含义依赖于具体的服务类型(引用,迁移或者备份)。对于迁移来说,列表中的位置信息表示数据被迁移到的最终位置;再者对 于备份来说,列表指定了备份文件系统所在的位置。

该文档主要是简短地分析了引用,迁移和备份,同时提供如何使用它们的配置信息。

1. 引用(Referrals):

当客户端第一次访问一个文件系统就被重定向到一个新的位置,这种情况是最好描述的,客户端会被其视为一个文件系统引用,而不是一个迁移事件。因为在迁移发生之前,客户端是不可能获取到该文件系统迁移后的任何信息。

在文件系统迁移过程中,如果没有任何客户端访问文件系统,将存在一种文件系统引用的简单状态(pure应该叫单纯):所有客户端看到的将是一个抽象文件系统的引用。

客户端可以通过这些引用信息来定位文件系统当前的位置,服务器可以有效地提供这些引用信息,尽管文件系统在服务器端从来没有被重新设置。

文件系统引用让构建一个多服务器的命名空间成为可能。对于提供引用的服务器,客户端可以通过名字来标记一个文件系统。服务器配置的修改不会影响到客户端,如将文件系统从一个服务器迁移到另一个服务器。

与单一服务器节点共享所有的文件系统相比,文件系统引用很好地将压力平均到多个服务器。可以很简单地想象这样一个框架:一个服务器只向客户端提供文件系统引用信息,将文件系统请求分配到包含有数据的服务器去。

配置

服务器必须在/etc/exports文件中,通过以下选项指定迁移后文件系统的位置:

refer=<directory>@<host>

示例

/export/docs <world>
(rw,async,wdelay,insecure,no_subtree_check,refer=/docs@dataserver1)
/export/sources <world>
(rw,async,wdelay,insecure,no_subtree_check,refer=/sources@dataserver2)

该配置表明服务器上的/export/docs和/export/sources已经被迁移到另外两个服务器。

注意:只需要对服务器进行修改。客户端和文件系统被迁移到的目的服务器均不需要进行特殊的配置。仅需要客户端有能力处理fs_location属性。2.6.18-rc5及以后的内核都是有能力处理的。不需要对客户端的用户态部分进行任何的修正。

2. 迁移(Migration):

文件系统迁移是将一个文件系统从一个服务器移动到另外一个服务器。文件系统迁移典型的应用场景是一个可写并且拥有单一复制的文件系统。通过告知客户端每次修改后数据新的位置,而不修改客户端的任何配置,移动NFS导出的数据是很方便的。

简单地说:

客户端已经从服务器挂载了一个NFSv4的文件系统。服务器端的系统管理员有权决定将导出的文件系统迁移到其他的服务器。服务器必须通知所有挂载了文件系统的客户端数据(文件系统)被移动这个事实。

以下描述客户端与服务器就迁移事件进行交流的方法:

一 旦服务器端文件系统迁移完成,所有发送到原来服务器的后续请求将被返回NFS4ERR_MOVED错误。在接收到NFS4ERR_MOVED错误后,客户 端需要从原来服务器端获取fs_location属性。然后,客户端将使用fs_location属性中的信息将请求重定向到指定的服务器。

配置

在服务器端,使用refer选项来指定文件系统迁移后的位置。此外,还要在服务器端做类似以下的操作:

mount --bind /dummy_mount /export_nfs

(假定/export_nfs是nfs-root,但不是一个挂载点。)

客户端不需要做任何配置,该操作对于客户端来说是透明的。

迁移服务器必须被配置成单一服务器(单一的文件系统导出)。

示例

/etc/exports文件:

/home/charbona <world>
(rw,async,wdelay,insecure,no_subtree_check,refer=/charbona@server2)

常规的操作顺序

  1. 客户端挂载sever1导出的文件系统,
  2. 将文件系统从server1迁移到server2,
  3. 客户端对已挂载文件系统的后续操作,将获得一个NFS4ERR_MOVED错误以及指明文件新位置的fs_location属性,
  4. 客户端从server2挂载迁移后的文件系统。

注意:NFSv4没有对数据迁移的方法进行定义。

引用与迁移

引用可以视为迁移的一个子情况。

如果服务器实现了文件系统迁移,在迁移事件没有被同步前,独立的客户端节点将遇到不同的情况(从单个客客户端角度来看)。

一些客户端可能已经从迁移后的文件系统中获取到新的文件句柄(filehandles),但其他客户端还在访问旧的文件系统(当它依然存在)然后需要重定向。

然而,引用作为迁移的一个特殊子情况。当一个迁移事件发生时,一些客户端看到的将是一个普通的迁移事件,与此同时,其他客户端看到的将是一个文件系统引用。前者是在文件访问过程中发生的迁移事件,后者在迁移完成后才进行第一次文件系统访问。

3. 备份(Replication):

对于备份,fs_location属性用于向客户端提供文件系统所备份的位置列表,客户端可以在问题(网络问题,NFS服务停止等)发生时访问这些备份。

文 件系统备份的目的是用于只读数据的情况。文件系统通常会被备份到两个或更多的服务器中。fs_location属性将向客户端提供这些备份位置的列表。当 第一次访问文件系统时,客户端就应当处理fs_location属性。如果后续的客户端请求超时,客户端可能尝试使用fs_location中指定的其他 服务器。

这种导出数据被备份在其他服务器的情况称为replicas。

注意:NFSv4没有对文件系统备份进行定义。

可以想象备份:

  • 数据可以手动地进行备份(从一个服务器复制到另外一个服务器)。这种情况,数据应当是以只读形式导出的。
  • 数据可以通过额外的工具自动地进行备份,备份更新以及所有备份的数据一致性保证等。

配置

客户端:不需要任何配置。2.6.18-rc5及以后的内核都有能力处理fs_location属性。

服务器:导出项必须为每个备份文件系统包含一条备份文件系统位置的选项,

replica=<dir>@<host>

备份:备份服务器是一个单一的NFS服务器,可以被标记为一个备份服务器或者单一的服务器。

示例

/etc/exports文件:

/export_nfs <world>(rw,[...],
insecure,no_root_squash,replicas=/@replica1:/data@replica2)

常规的操作顺序

  1. 客户端挂载一个文件系统,并且获取备份的位置,
  2. 服务器端不能继续为客户端提供服务,
  3. 客户端挂载一个备份文件系统。

4. 软件(待确认)

内核: linux 2.6.18-rc5 ~

NFS用户态软件: nfs-utils-1.0.10


英文pdf版本:http://nfsv4.bullopensource.org/doc/migration-and-replication-0.2.pdf

中文原文:http://www.cnblogs.com/kinglongmee/p/4703486.html

版权声明:本文为博主原创文章,任何转载必须包含以上两行链接地址。

NFSv4的引用,迁移和备份(用户手册 v0.2)的更多相关文章

  1. Jenkins进阶系列之——17Jenkins升级、迁移和备份

    升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...

  2. Jenkins升级、迁移、备份

    1.升级 下载新版Jenkins.war文件,替换旧版本war文件,重启即可. Jenkins.war文件的位置一般为/usr/lib/jenkins/Jenkins.war. 2.迁移.备份 Jen ...

  3. Jenkins系列-Jenkins升级、迁移和备份

    升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...

  4. postgresql使用pg_dump和pg_restore 实现跨服务器的数据库迁移或备份

    因为业务需求,需要将服务器上的postgre多个数据库的数据整个库得迁移到另一个postgre数据库上. 一般表较少时,会使用postgre 的copy to 和 copy from 命令就能完成表的 ...

  5. docker服务部署、迁移与备份、dockerfile、私有仓库

    今日内容概要 服务部署 迁移与备份 dockerfile 私有仓库 内容详细 1.服务部署 # 装 mysql redis --->源码编译安装-->启 动 # 有了docker后,容器操 ...

  6. RSYNC--数据迁移、备份

    前言 一台Solaris主机要下线了,准备将数据迁移至一台AIX主机上,可是在Solaris主机上有一个文件系统有1200万个小文件,因为是跨平台的数据迁移,采用磁盘底层复制无法进行,采用数据备份恢复 ...

  7. Nexus 3.X(Maven仓库私服)仓库迁移与备份

    Linux 仓库迁移 Nexus的构件仓库都保存在sonatype-work目录中,该目录的位置由nexus/conf/nexus.properties配置文件指定.仓库迁移需要两个过程:备份和还原 ...

  8. SVN迁移及备份的方法【转】

    转自: http://spiritfrog.iteye.com/blog/448578 + http://magnet2008.iteye.com/blog/586578 备份策略 ========= ...

  9. Domino系统从UNIX平台到windows平台的迁移及备份

    单位机房的一台服务机器到折旧期了,换成了新购IBM机器X3950,而且都预装了windows 2003 server 标准版,所以只有把以前在Unix平台下跑的OA系统迁移到新的windows 200 ...

随机推荐

  1. lombok 简化java代码注解

    lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...

  2. 在CentOS 7.2下升级gcc编译器的版本

    默认情况下,CentOS 7.2预装的gcc版本是4.8.x,通过执行命令 gcc -v 可以看到,一般情况下这个版本的编译器已经满足需要了,但是某些特殊的时候为了支持C++更高的特性,需要对gcc编 ...

  3. 求一个区间[a,b]中数字1出现的次数

    问题来源:http://ac.jobdu.com/problem.php?pid=1373 举例:如果n=10 那么1-10之间的1的个数是2(1,2,3,4,...10) 这其中有一个规律: 挨着看 ...

  4. [Android Pro] 精确记录和恢复ListView滑动位置

    reference to : http://blog.csdn.net/welovesunflower/article/details/7926512 工作中遇到一个需求,对ListView某一项操作 ...

  5. javascript学习笔记之array.sort

    arrayName.sort()方法: 功能是实现排序(按ascii编码或按数字大小),可无参或有参使用,无参时默认升序排列.有参时可实现升序或降序排列,参数必须是具有返回值的方法,当方法表达式大于0 ...

  6. python之路:Day04 --- Python基础4

    本节内容 1.字符串格式化 2.迭代器和生成器 3.装饰器 4.Json & pickle 数据序列化 5.软件目录结构规范 一.字符串格式化 百分号式 %[(name)][flags][wi ...

  7. Java基础学习(四)

    流程控制 /* 控制流程语句之---if 判断语句 格式一: 只适用于一种情况下去使用. if(判断条件){ 符合条件执行的代码; } 格式二:适用于两种情况下去使用 if(判断条件){ 符合条件执行 ...

  8. Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备三)

    接下来,我们将继续分析UIlib.h文件中其他的文件, UIContainer.h, UIRender.h, WinImplBase.h, UIManager.h,以及其他布局.控件等: 1. UIR ...

  9. dotnet Core Asp.net 项目搭建

    Asp.Net Core 介绍 Asp.Net Core 目前最新版本 1.0.0-preview2-003131 Asp.Net Core官网:https://dotnet.github.io/ A ...

  10. JQuery的无缝滚动

    图片无缝向左滚动的代码如下:   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...