What You See Is What You Get Element

使用 ZFS 影子迁移

适用于 Oracle Solaris 11.1

作者:Alexandre Borges

本文是系列文章的第 3 部分,介绍 Oracle Solaris 11 中 ZFS 的关键特性,并提供分步过程说明如何使用这些特性。本文介绍影子迁移特性,并介绍如何使用它将数据从一个系统迁移到另一个系统。


2014 年 6 月发布


右箭头 第 1 部分 — 使用 COMSTAR 和 ZFS 配置虚拟化存储环境
右箭头 第 2 部分 — 使用交换监视和使用 ZFS 卷扩大交换空间
右箭头 第 3 部分 — 使用 ZFS 影子迁移
右箭头 第 4 部分 — 将 ZFS 数据集委托给非全局区域
右箭头 第 5 部分 — 使用 ZFS 加密
右箭头 第 6 部分 — 使用 ZFS 快照

假设我们有一些数据在运行 Oracle Solaris 11 的旧服务器上,我们需要将这些数据迁移到运行 Oracle Solaris 11.1 的新服务器。这是应用 Oracle Solaris 11 新特性“影子迁移”的典型案例。影子迁移还可用于从运行 Oracle Solaris 10 各版本的系统迁移数据。

想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。

使用影子迁移很容易;例如,我们可以通过 NFS 甚至本地文件系统迁移共享的 ZFS、UFS 或 VxFS (Symantec) 文件系统。

为了模拟使用影子迁移在两个系统之间迁移数据的例子,我们将使用两个在 Oracle VM Virtual Box 提供的虚拟环境中安装了 Oracle Solaris 11(solaris11-1solaris11-2)的虚拟机。此外,我们将在 solaris11-2 主机中共享一个文件系统 (/solaris11-2-pool/migrated-filesystem) 并将此文件系统中的数据迁移到 solaris11-1 主机。

此过程的第一步是安装 shadow-migration 软件包:

root@solaris11-1:~# pkg install shadow-migration
           Packages to install:  1
       Create boot environment: No
Create backup boot environment: No
            Services to change:  1

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                                1/1         14/14      0.2/0.2  126k/s

PHASE                                          ITEMS
Installing new actions                         39/39
Updating package state database                 Done
Updating image state                            Done
Creating fast lookup database                   Done

可以看出,影子服务最初是停止的:

root@solaris11-1:~# svcs -a | grep shadow
disabled       18:22:13 svc:/system/filesystem/shadowd:default

因此必须启动该服务:

root@solaris11-1:~# svcadm enable svc:/system/filesystem/shadowd:default
root@solaris11-1:~# svcs -a | grep shadow
online         18:23:17 svc:/system/filesystem/shadowd:default

在第二台计算机(文件系统影射源)上,必须使用 NFS 服务和只读属性 (ro) 共享该文件系统,避免在影射过程中更改其内容:

root@solaris11-2:~/SFHA601# share -F nfs -o ro /solaris11-2-pool/migrated-filesystem
root@solaris11-2:~/SFHA601# share
IPC$            smb     -       Remote IPC
solaris11-2-pool_migrated-filesystem    /solaris11-2-pool/migrated-filesystem   nfs     sec=sys,ro

使用影子迁移的好处是,当数据迁移开始时,任何访问源文件系统的 NFS 客户端均可自动迁移成访问目标文件系统。

在第一台计算机 (solaris11-1) 上,我们可以运行以下命令确认 solaris11-2 正在通过 NFS 提供文件系统:

root@solaris11-1:/# dfshares solaris11-2
RESOURCE                                           SERVER       ACCESS    TRANSPORT
solaris11-2:/solaris11-2-pool/migrated-filesystem  solaris11-2  -         -

现在可以创建一个名为 rpool/shadow_test 的文件系统,然后将 ZFS 文件系统从第二台计算机 (solaris11-2) 影射到第一台计算机 (solaris11-1):

root@solaris11-1:/rpool# zfs create -o shadow=nfs://solaris11-2/solaris11-2-pool/migrated-filesystem rpool/shadow_test

此过程可能很慢。之后应执行 shadowstat 命令:

root@solaris11-1:/rpool# shadowstat
                                        EST
                                BYTES   BYTES          ELAPSED
DATASET                         XFRD    LEFT   ERRORS  TIME
rpool/shadow_test               4.73M   -      -       00:00:04
rpool/shadow_test               46.0M   -      -       00:00:14
rpool/shadow_test               52.7M   -      -       00:00:24
rpool/shadow_test               55.1M   -      -       00:00:34
rpool/shadow_test               57.5M   -      -       00:00:44
rpool/shadow_test               58.1M   -      -       00:00:54
rpool/shadow_test               59.6M   128M   -       00:01:04
rpool/shadow_test               62.8M   224M   -       00:01:14
rpool/shadow_test               89.0M   187M   -       00:01:24
rpool/shadow_test               92.7M   360M   -       00:01:34
rpool/shadow_test               120M    168M   -       00:01:44
rpool/shadow_test               163M    8E     -       00:01:54
rpool/shadow_test               178M    8E     -       00:02:04
rpool/shadow_test               178M    8E     -       00:02:14
rpool/shadow_test               178M    8E     -       00:02:24
rpool/shadow_test               178M    8E     -       00:02:34
No migrations in progress

我们可以运行以下命令来验证迁移是否完成:

root@solaris11-1:/rpool# zfs get -r shadow rpool/shadow_test
NAME               PROPERTY  VALUE  SOURCE
rpool/shadow_test  shadow    none   -

好极了!一切按部就班。

也可以使用两个 ZFS 文件系统完成此过程。例如,可以创建一个名为 rpool/filesystem_source 的新文件系统,并将一个包含许多文件的目录复制到该系统:

root@solaris11-1:~# cp -r NetBackup_7.5_Solaris_x86/ /rpool/filesystem_source/
root@solaris11-1:~# zfs set readonly=on rpool/filesystem_source
root@solaris11-1:~# zfs create -o shadow=file:///rpool/filesystem_source rpool/filesystem_target
root@solaris11-1:~# shadowstat
                                       EST
                               BYTES   BYTES          ELAPSED
DATASET                        XFRD    LEFT   ERRORS  TIME
rpool/filesystem_target        107K    -      -       00:00:04
rpool/filesystem_target        51.2M   -      -       00:00:14
rpool/filesystem_target        114M    -      -       00:00:24
rpool/filesystem_target        114M    -      -       00:00:34
rpool/filesystem_target        114M    -      -       00:00:44
rpool/filesystem_target        114M    -      -       00:00:54
rpool/filesystem_target        114M    8E     -       00:01:04
rpool/filesystem_target        114M    8E     -       00:01:14
rpool/filesystem_target        114M    8E     -       00:01:24
rpool/filesystem_target        672M    8E     -       00:01:34
rpool/filesystem_target        672M    8E     -       00:01:44
rpool/filesystem_target        672M    8E     -       00:01:54
rpool/filesystem_target        672M    8E     -       00:02:04
rpool/filesystem_target        672M    8E     -       00:02:14
rpool/filesystem_target        672M    8E     -       00:02:24
rpool/filesystem_target        672M    8E     -       00:02:34
No migrations in progress

哇!!!我们重复了此过程,但使用适当的语法在两个本地 ZFS 文件系统之间进行影射。同样,可以确认影射操作已经完成。

另请参见

以下是我撰写的其他一些文章的链接:

以下是有关 Oracle Solaris 11 的一些资源:

关于作者

Alexandre Borges 是一位 Oracle ACE,曾于 2001 至 2010 年任职于 Sun Microsystems,并担任签约讲师,主要负责讲授 Oracle Solaris、Oracle Solaris Cluster、Oracle Solaris 安全性、Java EE、Sun 硬件和 MySQL 课程。目前,他为 Symantec、Oracle 合作伙伴、Hitachi 和 EC-Council 提供课程教学,并且讲授一些关于信息安全的非常专业的课程。此外,他还是 Linux Magazine Brazil 的特约撰稿人和专栏作家。

修订版 1.0,2014 年 4 月 9 日

关注我们:
博客 | Facebook | Twitter | YouTube