在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

通过拆分镜像 ZFS 存储池创建新池

通过使用 zpool split 命令,可以将镜像 ZFS 存储池快速克隆为备份池。

可以使用 zpool split 命令从镜像 ZFS 存储池中分离一个或多个磁盘,以使用分离的磁盘创建新池。新池的内容与原镜像 ZFS 存储池完全相同。


注 -  有关使用 zpool split 命令拆分 ZFS 池的更多过程,请在 My Oracle Support 登录您的帐户,查看 "How to Use 'zpool split' to Split an rpool (Doc ID 1637715.1)"(如何使用 "zpool split" 拆分 rpool(文档 ID 1637715.1))。

缺省情况下,对镜像池执行 zpool split 操作将分离最后一个磁盘以用于新创建的池。拆分操作完成后,导入新池。例如:

# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:

NAME           STATE     READ  WRITE  CKSUM
tank           ONLINE       0      0      0
   mirror-0    ONLINE       0      0      0
      c1t0d0   ONLINE       0      0      0
      c1t2d0   ONLINE       0      0      0

errors: No known data errors
# zpool split tank tank2
# zpool import tank2
# zpool status tank tank2
pool: tank
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
tank        ONLINE       0     0     0
c1t0d0      ONLINE       0     0     0

errors: No known data errors

pool: tank2
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
tank2       ONLINE       0     0     0
c1t2d0      ONLINE       0     0     0

errors: No known data errors

通过在 zpool split 命令中指定,您可以标识哪个磁盘应用于新创建的池。例如:

# zpool split tank tank2 c1t0d0

发生实际的拆分操作之前,内存中的数据被刷新到镜像磁盘。数据刷新后,将磁盘从池中分离,并将其指定给一个新池 GUID。将生成新池 GUID,以便能在拆分该池的系统上导入该池。

如果要拆分的池具有非缺省的文件系统挂载点,并且已在同一系统上创建了新池,必须使用 zpool split –R 选项标识新池的备用根目录,使现有挂载点不会发生冲突。例如:

# zpool split -R /tank2 tank tank2

如果不使用 zpool split –R 选项,当您试图使用 –R 选项导入新池时,挂载点会发生冲突。如果在不同的系统上创建新池,则没必要指定备用根目录,除非发生挂载点冲突。

    使用 zpool split 功能之前,请检查以下几点:

  • 对于 RAID-Z 配置或者由多个磁盘组成的非冗余池,此功能不可用。

  • 尝试 zpool split 操作之前,数据和应用程序操作应停顿。

  • 如果重新同步正在进行中,则无法拆分池。

  • 拆分由两到三个磁盘组成的镜像池是最佳的,其中原池中的最后一个磁盘将用于新创建的池。然后,可以使用 zpool attach 命令重新创建原镜像存储池,或者将新创建的池转换为镜像存储池。目前无法通过一个 zpool split 操作从现有镜像池创建镜像池,因为新(拆分的)池是非冗余的。

  • 如果现有池是一个三向池,则在拆分操作之后,新池将包含一个磁盘。如果现有池是一个由两个磁盘组成的双向池,则结果是由两个磁盘组成的两个非冗余池。您必须再附加两个磁盘,以将非冗余池转换为镜像池。

  • 在拆分操作期间,保持数据冗余性的一个好方法是拆分由三个磁盘组成的镜像存储池,这样在拆分操作之后,原池由两个镜像磁盘组成。

  • 在拆分镜像池之前,请确认硬件配置正确无误。有关确认硬件高速缓存刷新设置的相关信息,请参见一般系统做法

示例 3-7  拆分镜像 ZFS 存储池

在以下示例中,对名为 mothership 的镜像存储池(包含三个磁盘)进行拆分。分割产生了两个池,即,镜像池 mothership(包含两个磁盘)和新池 luna(包含一个磁盘)。每个池的内容完全相同。

可以将池 luna 导入另一个系统中以进行备份。备份完成后,可以将池 luna 销毁,并将其磁盘重新附加到 mothership。然后,可以重复执行这一过程。

# zpool status mothership
pool: mothership
state: ONLINE
scan: none requested
config:

NAME                          STATE     READ  WRITE  CKSUM
mothership                    ONLINE       0      0      0
   mirror-0                   ONLINE       0      0      0
      c0t5000C500335F95E3d0   ONLINE       0      0      0
      c0t5000C500335BD117d0   ONLINE       0      0      0
      c0t5000C500335F907Fd0   ONLINE       0      0      0

errors: No known data errors
# zpool split mothership luna
# zpool import luna
# zpool status mothership luna
pool: luna
state: ONLINE
scan: none requested
config:

NAME                     STATE     READ WRITE CKSUM
luna                     ONLINE       0     0     0
c0t5000C500335F907Fd0    ONLINE       0     0     0

errors: No known data errors

pool: mothership
state: ONLINE
scan: none requested
config:

NAME                          STATE     READ  WRITE  CKSUM
mothership                    ONLINE       0      0      0
   mirror-0                   ONLINE       0      0      0
      c0t5000C500335F95E3d0   ONLINE       0      0      0
      c0t5000C500335BD117d0   ONLINE       0      0      0

errors: No known data errors