共计 10866 个字符,预计需要花费 28 分钟才能阅读完成。
IBM® AFS™ 存储区域网络(SAN)的存储虚拟化功能可以将现有的副分区从一个文件系统迁移到另一个文件系统,期间不需要重启文件服务器或中断客户端进程。本文介绍了使用现有 IBM AFS 文件服务器设置将副分区迁移到不同文件服务器时出现的问题,以及如何利用 IBM AFS SAN 存储虚拟化功能解决这些问题。
IBM AFS 概述
AFS 是一个分布式文件系统,允许共同运作主机(客户端和服务器),跨局域网(LAN)和广域网(WAN)高效地共享文件系统资源。
它的一些主要特性包括客户端 / 服务器架构、管理功能、可扩展性、位置透明性、安全性、可靠性、可移植性等。
IBM AFS 的主要组件
文件服务器: 文件服务器是一个 AFS 实体,负责为卷中的特定文件集提供中央磁盘存储卡,并使运行在客户端上的授权用户可以访问这些文件。
卷服务器: 卷服务器允许对它所在的机器上的 AFS 卷执行管理任务和检测。这些操作包括卷创建和删除、重命名、转储和恢复、为只读卷修改复制站点列表、创建和增加新的只读卷映象、创建和更新备份卷、列出分区上的所有卷,以及检查卷状态。
Basic OverSeer (BOS) Server :BOS Server 是一个管理工具,它运行在单元(cell)中的所有文件服务器机器上。该服务器在系统重启后按照顺序监视 AFS 代理的健康状况,回答关于它们的状态的请求,并在它们遇到故障时进行重启。它还接受重启、暂停、恢复进程,并安装新服务器二进制文件的命令。
救援服务器(salvager): 救援服务器不同于其他 AFS 服务器,因为它只在指定的时间运行。BOS Server 将在文件服务器、卷服务器或两者都发生故障时调用 salvager。salvager 将尝试修复引起故障的磁盘崩溃。作为系统管理员,您还可以在需要时调用 salvager,即使文件服务器或卷服务器都没有出现故障。
卷位置服务器: 卷位置服务器将维护和导出卷位置数据库。该数据库会跟踪卷实例所在的服务器或服务器组。它支持的操作包括查询并返回卷位置和状态信息、卷 ID 管理,创建、删除和修改 VLDB 条目。
客户端组件(Venus):AFS 缓存管理由 AFS 客户端(afsd)和一些守护进程实现。它支持本地磁盘缓存和内存缓存。
副分区 :副分区是使用物理设备创建的 IBM AIX® 分区。按照惯例,每个分区被命名为 /vicepx,其中,x 是一个或两个英文字母。AFS 分区可以命名为 /vicepa 或 /vicepaa、/vicepb 或 /vicepbb,一直到 /vicepz 或 /vicepzz。
卷: 用于 AFS 存储的磁盘分区不会直接托管各种用户文件或目录。相反,相关的系统目录结构的子树将被放到称为卷的容器中。
现有文件服务器设置
现有文件服务器设置如图 1 所示,其中多个客户端可以访问 Fileserver1 上的卷。
在现有设计中,每个文件服务器都有自己的本地存储,并将在其中创建副分区,卷和数据将存储到本地存储中。
图 1. 现有文件服务器设置
现有文件服务器设置的问题
现有设置的主要问题是,无论在哪个文件服务器上,只要 AFS 管理员需要执行软件升级,那么他首先需要将该服务器上的所有卷移动到其他服务器。移动内容包括复制这些卷中的所有数据。完成软件升级后,卷将再次移回之前的文件服务器。整个过程非常漫长,可能需要几天才能完成。
SAN 存储虚拟化解决方案
新的 AFS 服务器是更大型的机器,使用虚拟化程度更高的 SAN 系统来保存 AFS 副分区数据。我们现在有两个或更多个 AFS 文件服务器来共享 SAN 中的完整数据存储。
新的配置在多个文件服务器之间共享 SAN 存储。这有助于缩短副分区迁移所需的时间,因为不需要复制数据。
现有 AFS 实现可以做到这一点:进行一些特定于 AFS 的配置,部署文件服务器。但是,在移动副分区时会出现宕机,虽然宕机是有限的,但也需要重启文件服务器,这会影响当前的和运行中的客户端任务。
图 2. 新的基于 SAN 存储的文件服务器设置
向 vos
添加两个新命令即可在不同文件服务器之间移动所有副分区。
方法如下:
vos detachpart -fromserver <machine name of server from where to
detach> -partition <partition names to be moved> [-cell <cell name>]
[-noauth] [-localauth] [-verbose] [-timeout <timeout in seconds >] [-help]
方法如下:
vos attachpart -fromserver <machine name of server from where to
detach> -toserver <machine name of server where to attach> -partition <partition
names to be moved> [-cell <cell name>] [-noauth] [-localauth] [-verbose] [-timeout
<timeout in seconds >] [-help]
vos detachpart
命令将从指定为 fromserver
的文件服务器中分离出分区,而 vos attachpart
命令将 fromserver
文件服务器中的分区连接到 toserver
文件服务器。
因为不需要重启文件服务器,也不需要中断客户端任务,因此迁移过程十分迅速。它们只会获得一个 busy 消息,直到迁移完成。
我们正在为不同文件服务器之间移动单个或多个副分区提供支持。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2015-08/121216p2.htm
在不同文件服务器之间移动所有副分区的步骤
我们将 fromserver
称为 fileserver1
(其中已安装副分区),而 toserver
则充当 fileserver2
(我们希望在其中移动副分区)。并且,我们假设在移动副分区的过程中没有发生 vos
动作。
- 向文件服务器发送一个 SIGUSR1,将 fileservser1 标记为 VBUSY。
这样,当前活跃的客户端任务就会开始获得一条 busy 消息,客户端任务将在移动完副分区后继续执行。
- 运行以下命令,将分区从 fileserver1 分离出来。
vos detachpart -fromserver fileserver1 -partition all -cell punetest
该命令将所有卷标记为脱机状态,并关闭所有打开的文件句柄,这样我们就可以卸载副分区。
- 从 fileserver1 中卸载所有 SAN 副分区。
- 卸载所有副分区,这样就不会在同一时间将分区安装到多个文件服务器上,因为这会造成数据不一致。
- 将所有卷组设为非活跃状态。为此,可发出
varyoffvg
命令,指定卷组名。 - 从系统中移除所有卷组的卷组定义。为此,可发出
exportvg
命令。指定卷组名。 - 运行
lsvg
命令,检查卷组是否被设为非活跃状态,以及卷组定义是否被删除。
- 在 fileserver2 上安装所有 SAN 副分区。
- 将前面导出的卷变为系统已知。为此,可发出
importvg -y
命令,指定卷组名。 - 激活所有卷组。发出
varyonvg
命令,指定卷组名。 - 运行
lsvg
命令,检查卷组名是否系统已知,以及卷组是否已激活。 - 安装所有副分区,使它们可以连接到 fileserver2。
- 将前面导出的卷变为系统已知。为此,可发出
- 在 fileserver2 上重启
fs
实例。我们需要运行以下命令,以使文件服务器发现新安装的副分区。
bos restart fileserver2 -instance fs -cell punetest
- 运行以下命令将分区连接到 fileserver2。
vos attachpart -fromserver fileserver1 -toserver fileserver2 -partition all -cell punetest
该命令破坏了来自旧的文件服务器(fileserver1)的回调,修改了卷位置,从而可以指向新的文件服务器,即 fileserver2,并将所有卷标记为在线。
- 向文件服务器发送一个 SIGUSR2,取消 fileserver1 的 VBUSY 标记。
通过这样做,客户端任务将停止接收 busy 消息并恢复其行为。
- 在 fileserver1 上关闭
fs
实例。我们需要运行以下命令,以确保客户端访问新的文件服务器 fileserver2 来访问卷。
bos shutdown -server fileserver1 -instance fs -cell punetest
回页首
将分区从测试服务器 pghafs03.rchland.ibm.com 移动到 pghafs02.rchland.ibm.com 的步骤示例
当前 pghafs03 上安装有 6 个副分区(/vicepa 到 /vicepf)。
[root@pghafs03] > mount
node mounted mounted over vfs date options
-------- --------------- --------------- ------ ------------ ---------------
/dev/hd4 / jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/hd2 /usr jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/hd9var /var jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/hd3 /tmp jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/hd1 /home jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/hd11admin /admin jfs2 Mar 11 08:15 rw,log=/dev/hd8
/proc /proc procfs Mar 11 08:15 rw
/dev/hd10opt /opt jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/livedump /var/adm/ras/livedump jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/lvvarlog /var/log jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/lvafslogs /usr/afs/logs jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/lvscm /opt/IBM/SCM jfs2 Mar 11 08:15 rw,log=/dev/hd8
/dev/ramdisk0 /usr/vice/cache jfs Mar 11 08:15 rw,nointegrity
AFS /afs afs Mar 11 08:17 rw
/dev/fslv00 /testvg jfs Mar 19 08:30 rw,log=/dev/loglv06
/dev/lv01 /vicepa jfs May 24 00:47 rw,log=/dev/loglv01
/dev/lv02 /vicepb jfs May 24 00:47 rw,log=/dev/loglv02
/dev/lv03 /vicepc jfs May 24 00:47 rw,log=/dev/loglv03
/dev/lv04 /vicepd jfs May 24 00:47 rw,log=/dev/loglv04
/dev/lv05 /vicepe jfs May 24 00:47 rw,log=/dev/loglv05
/dev/lv00 /vicepf jfs May 24 00:47 rw,log=/dev/loglv00
[root@pghafs03] >
- 向文件服务器发送一个 SIGUSR1,将 pghafs03 手动标记为 VBUSY。
[root@pghafs03] > ps -ef | grep server root 7274520 8781978 0 May 24 - 0:01 /usr/afs/bin/volserver -log -p 16 root 8781978 1 0 Mar 12 - 0:06 /usr/afs/bin/bosserve rroot 13041896 8781978 0 May 24 - 0:04 /usr/afs/bin/fileserver -hr 24 -L -m 1 -cb 128000 -rxpck 2500 -p 256 -udpsize 1048576 -implicit rl -nojumbo -seclog -vc 1200 -s 1800 -l 1200 -b 180 [root@pghafs03] > kill -SIGUSR1 13041896 [root@pghafs03] > FileLog:Mon May 27 00:56:23 2013 Marked fileserver as VBUSY for partition movement Clients start getting VBUSY message. afs: Waiting for busy volume 536894431 (indira.e.1) in cell test36.transarc.com afs: Waiting for busy volume 536894431 (indira.e.1) in cell test36.transarc.com
- 运行
命令,从 pghafs03 分离分区。vos detachpart -fromserver fileserver1 -partition all -cell punetest
[root@pghafs03] > vos detachpart -fromserver pghafs03 -partition all -c test36 vos detachpart: Parsing all partitions... vos detachpart: Detaching all partitions from server pghafs03...please check logs for successful completion [root@pghafs03] > All volumes will be marked as offline. [root@pghafs03] > vos exam 536892892 -c test36 atd.virt.f.691 536892892 RW 2 K Off-line pghafs03.rchland.ibm.com /vicepf RWrite 536892892 ROnly 0 Backup 0 MaxQuota 100000 K Creation Tue Mar 19 10:43:01 2013 Last Update Tue Mar 19 10:48:38 2013 Last Access Tue Apr 9 06:53:54 2013 0 accesses in the past day (i.e., vnode references) RWrite: 536892892 number of sites -> 1 server pghafs03.rchland.ibm.com partition /vicepf RW Site [root@pghafs03] > FileLog:Mon May 27 00:56:36 2013 vos detachpart : Making all volumes offline... Mon May 27 00:56:36 2013 VShutdown:shutting down on- line volumes... Mon May 27 00:56:36 2013 VShutdown: complete. Mon May 27 00:56:36 2013 vos detachpart : Made all volumes offline...
- 从 pghafs03 卸载所有 SAN 副分区。
- 运行脚本,从 pghafs03 卸载副分区。
- 确保从 pghafs03 卸载了所有副分区。
- 在 pghafs02 上安装所有 SAN 副分区。
- 运行脚本,安装 pghafs02 的副分区。
- 确保在 pghafs02 上安装了所有副分区。
- 在 pghafs02 上重启
fs
实例。[root@pghafs03] > bos restart -server pghafs02 -instance fs -c test36 [root@pghafs03] >
- 运行
命令,将分区连接到 pghafs02。vos attachpart -fromserver fileserver1 -toserver fileserver2 -partition all -cell punetest
[root@pghafs03] > vos attachpart -fromserver pghafs03 -toserver pghafs02 -partition all -c test36 vos attachpart: Parsing all partitions... vos attachpart: Attached all partitions to server pghafs02 from server pghafs03... please check logs for successful completion [root@pghafs03]> FileLog: Mon May 27 01:00:45 2013 vos attachpart : breaking all callbacks for each and every volumes... Mon May 27 01:00:45 2013 VBreakAllCallBack_r: breaking callback on all volumes... Mon May 27 01:00:45 2013 VBreakAllCallBack_r: complete. Mon May 27 01:00:45 2013 vos attachpart : after breaking all callbacks for each and every volumes...
- 向文件服务器发送一个 SIGUSR2,取消 pghafs03 的 VBUSY 标记。
[root@pghafs03] > ps -ef |grep server root 7274520 8781978 0 May 24 - 0:02 /usr/afs/bin/volserver -log -p 16 root 8781978 1 0 Mar 12 - 0:06 /usr/afs/bin/bosserver root 13041896 8781978 0 May 24 - 0:04 /usr/afs/bin/fileserver -hr 24 -L -m 1 -cb 128000 -rxpck 2500 -p 256 -udpsize 1048576 -implicit rl -nojumbo -seclog -vc 1200 -s 1800 -l 1200 -b 180 [root@pghafs03] >kill -SIGUSR2 13041896 [root@pghafs03] > FileLog: Mon May 27 01:01:32 2013 Unmarked fileserver from VBUSY as partition movement is done
- 关闭 pghafs03 上的
fs
实例。[root@pghafs03] > bos shutdown -server pghafs03 -instance fs -c test36 [root@pghafs03] > ps -ef| grep server root 8781978 1 0 Mar 12 - 0:06 /usr/afs/bin/bosserver [root@pghafs03]>
回页首
错误恢复
虽然这里要求在移动副分区期间不应发生任何 vos
动作,但是万一出现错误,那么可以通过以下办法进行恢复。
需要进行恢复的点有很多。本节将了解其中一些恢复点。
案例 1
- 案例 1:假设我们希望在运行步骤 2 后恢复
此时 fileserver1 处于 busy 模式,所有卷被标记为脱机。要从这一点进行恢复,可以执行以下任一步骤���
- 运行 bos
restart fileserver1 -instance fs -cell punetest
命令。 - 运行
vos attachpart -fromserver fileserver1 -toserver fileserver1 -partition all -cell punetest
命令,也就是说,将信号发送给接收方和发送方文件服务器是相同的,通过向 fileserver1 发送一个 SIGUSR2,取消对 fileserver1 的 busy 模式的标记。
您可以执行以下任一步骤,将卷再次标记为在线。
- 运行 bos
- 案例 2:假设我们希望在运行步骤 3 后执行恢复
此时 fileserver1 处于 busy 模式下,所有卷均脱机,我们已卸载了分区。要从这一点恢复,我们可以再次安装分区并执行 案例 1 中提到的任意一个步骤。
- 案例 3:假设我们希望在运行步骤 4 后执行恢复
此时 fileserver1 处于 busy 模式下,所有卷均处于脱机状态,我们已从 fileserver1 卸载了分区,并挂载了 fileserver2 的分区。要从这一点恢复,可以执行以下任意步骤之一:从 fileserver2 卸载分区,将它们安装回 fileserver1,然后执行 案例 1 中提到的两个步骤中的任意一个。或者,执行剩余的步骤(步骤 5 到步骤 8)。
- 从 fileserver2 卸载分区,挂载回 fileserver1,执行 案例 1 中提到的两个步骤中的任意一个。
- 或者,执行剩余的步骤(步骤 5 到步骤 8)。
结束语
IBM AFS 的 SAN 存储虚拟化使得管理员能够监视有硬件问题或高负荷下运行的文件服务器的健康状况,然后非常轻松地在文件服务器之间迁移副分区,客户端任务不会受到影响,也不需要重启文件服务器。
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121216.htm
IBM® AFS™ 存储区域网络(SAN)的存储虚拟化功能可以将现有的副分区从一个文件系统迁移到另一个文件系统,期间不需要重启文件服务器或中断客户端进程。本文介绍了使用现有 IBM AFS 文件服务器设置将副分区迁移到不同文件服务器时出现的问题,以及如何利用 IBM AFS SAN 存储虚拟化功能解决这些问题。
IBM AFS 概述
AFS 是一个分布式文件系统,允许共同运作主机(客户端和服务器),跨局域网(LAN)和广域网(WAN)高效地共享文件系统资源。
它的一些主要特性包括客户端 / 服务器架构、管理功能、可扩展性、位置透明性、安全性、可靠性、可移植性等。
IBM AFS 的主要组件
文件服务器: 文件服务器是一个 AFS 实体,负责为卷中的特定文件集提供中央磁盘存储卡,并使运行在客户端上的授权用户可以访问这些文件。
卷服务器: 卷服务器允许对它所在的机器上的 AFS 卷执行管理任务和检测。这些操作包括卷创建和删除、重命名、转储和恢复、为只读卷修改复制站点列表、创建和增加新的只读卷映象、创建和更新备份卷、列出分区上的所有卷,以及检查卷状态。
Basic OverSeer (BOS) Server :BOS Server 是一个管理工具,它运行在单元(cell)中的所有文件服务器机器上。该服务器在系统重启后按照顺序监视 AFS 代理的健康状况,回答关于它们的状态的请求,并在它们遇到故障时进行重启。它还接受重启、暂停、恢复进程,并安装新服务器二进制文件的命令。
救援服务器(salvager): 救援服务器不同于其他 AFS 服务器,因为它只在指定的时间运行。BOS Server 将在文件服务器、卷服务器或两者都发生故障时调用 salvager。salvager 将尝试修复引起故障的磁盘崩溃。作为系统管理员,您还可以在需要时调用 salvager,即使文件服务器或卷服务器都没有出现故障。
卷位置服务器: 卷位置服务器将维护和导出卷位置数据库。该数据库会跟踪卷实例所在的服务器或服务器组。它支持的操作包括查询并返回卷位置和状态信息、卷 ID 管理,创建、删除和修改 VLDB 条目。
客户端组件(Venus):AFS 缓存管理由 AFS 客户端(afsd)和一些守护进程实现。它支持本地磁盘缓存和内存缓存。
副分区 :副分区是使用物理设备创建的 IBM AIX® 分区。按照惯例,每个分区被命名为 /vicepx,其中,x 是一个或两个英文字母。AFS 分区可以命名为 /vicepa 或 /vicepaa、/vicepb 或 /vicepbb,一直到 /vicepz 或 /vicepzz。
卷: 用于 AFS 存储的磁盘分区不会直接托管各种用户文件或目录。相反,相关的系统目录结构的子树将被放到称为卷的容器中。
现有文件服务器设置
现有文件服务器设置如图 1 所示,其中多个客户端可以访问 Fileserver1 上的卷。
在现有设计中,每个文件服务器都有自己的本地存储,并将在其中创建副分区,卷和数据将存储到本地存储中。
图 1. 现有文件服务器设置
现有文件服务器设置的问题
现有设置的主要问题是,无论在哪个文件服务器上,只要 AFS 管理员需要执行软件升级,那么他首先需要将该服务器上的所有卷移动到其他服务器。移动内容包括复制这些卷中的所有数据。完成软件升级后,卷将再次移回之前的文件服务器。整个过程非常漫长,可能需要几天才能完成。
SAN 存储虚拟化解决方案
新的 AFS 服务器是更大型的机器,使用虚拟化程度更高的 SAN 系统来保存 AFS 副分区数据。我们现在有两个或更多个 AFS 文件服务器来共享 SAN 中的完整数据存储。
新的配置在多个文件服务器之间共享 SAN 存储。这有助于缩短副分区迁移所需的时间,因为不需要复制数据。
现有 AFS 实现可以做到这一点:进行一些特定于 AFS 的配置,部署文件服务器。但是,在移动副分区时会出现宕机,虽然宕机是有限的,但也需要重启文件服务器,这会影响当前的和运行中的客户端任务。
图 2. 新的基于 SAN 存储的文件服务器设置
向 vos
添加两个新命令即可在不同文件服务器之间移动所有副分区。
方法如下:
vos detachpart -fromserver <machine name of server from where to
detach> -partition <partition names to be moved> [-cell <cell name>]
[-noauth] [-localauth] [-verbose] [-timeout <timeout in seconds >] [-help]
方法如下:
vos attachpart -fromserver <machine name of server from where to
detach> -toserver <machine name of server where to attach> -partition <partition
names to be moved> [-cell <cell name>] [-noauth] [-localauth] [-verbose] [-timeout
<timeout in seconds >] [-help]
vos detachpart
命令将从指定为 fromserver
的文件服务器中分离出分区,而 vos attachpart
命令将 fromserver
文件服务器中的分区连接到 toserver
文件服务器。
因为不需要重启文件服务器,也不需要中断客户端任务,因此迁移过程十分迅速。它们只会获得一个 busy 消息,直到迁移完成。
我们正在为不同文件服务器之间移动单个或多个副分区提供支持。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2015-08/121216p2.htm