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

退出打印视图

更新时间: 2014 年 12 月
 
 

附加和分离存储池设备

除了 zpool add 命令外,还可以使用 zpool attach 命令将新设备添加到现有镜像设备或非镜像设备中。

如果要附加磁盘以创建镜像根池,请参见如何配置镜像根池(SPARC 或 x86/VTOC)

如果要替换 ZFS 根池中的磁盘,请参见如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)

示例 3-5  将双向镜像存储池转换为三向镜像存储池

在本示例中,zeepool 是现有的双向镜像,通过将新设备 c2t1d0 附加到现有设备 c1t1d0 可将其转换为三向镜像。

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

NAME           STATE     READ  WRITE  CKSUM
zeepool        ONLINE       0      0      0
   mirror-0    ONLINE       0      0      0
      c0t1d0   ONLINE       0      0      0
      c1t1d0   ONLINE       0      0      0

errors: No known data errors
# zpool attach zeepool c1t1d0 c2t1d0
# zpool status zeepool
pool: zeepool
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Fri Jan  8 12:59:20 2010
config:

NAME           STATE     READ  WRITE  CKSUM
zeepool        ONLINE       0      0      0
   mirror-0    ONLINE       0      0      0
      c0t1d0   ONLINE       0      0      0
      c1t1d0   ONLINE       0      0      0
      c2t1d0   ONLINE       0      0      0  592K resilvered

errors: No known data errors

如果现有设备是三向镜像的一部分,则附加新设备将创建四向镜像,依此类推。在任一情况下,新设备都会立即开始重新同步。

示例 3-6  将非冗余 ZFS 存储池转换为镜像 ZFS 存储池

此外,还可以通过使用 zpool attach 命令将非冗余存储池转换为冗余存储池。例如:

# zpool create tank c0t1d0
# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:
NAME           STATE     READ  WRITE  CKSUM
tank          ONLINE        0      0      0
c0t1d0        ONLINE       0      0      0

errors: No known data errors
# zpool attach tank c0t1d0 c1t1d0
# zpool status tank
pool: tank
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Fri Jan  8 14:28:23 2010
config:

NAME           STATE     READ  WRITE  CKSUM
tank           ONLINE       0      0      0
   mirror-0    ONLINE       0      0      0
      c0t1d0   ONLINE       0      0      0
      c1t1d0   ONLINE       0      0      0  73.5K resilvered

errors: No known data errors

可以使用 zpool detach 命令从镜像存储池中分离设备。例如:

# zpool detach zeepool c2t1d0

然而,如果不存在数据的其他有效副本,此操作将失败。例如:

# zpool detach newpool c1t2d0
cannot detach c1t2d0: only applicable to mirror and replacing vdevs