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

退出打印视图

更新时间: 2014 年 12 月
 
 

如何替换 ZFS 根池中的磁盘(SPARC 或 x86/EFI (GPT))

由于以下原因,您可能需要替换根池中的磁盘:

  • 根池太小,您想使用较大的磁盘替换它

  • 根池磁盘发生故障。在非冗余池中,如果磁盘发生故障导致系统无法引导,则需要在替换根池磁盘前从备用介质(如 CD 或网络)进行引导。

  • 如果使用 zpool replace 命令替换根池磁盘中的磁盘,需要手动应用引导块。

在镜像根池配置下,可以尝试替换磁盘,而不一定要从备用介质引导。可以使用 zpool replace 命令替换故障磁盘,如果有额外的磁盘,则可使用 zpool attach 命令。有关附加额外磁盘和分离根池磁盘的示例,请参见以下步骤。

具有 SATA 磁盘的系统要求您在尝试通过 zpool replace 操作替换故障磁盘之前使磁盘脱机并取消其配置。例如:

# zpool offline rpool c1t0d0
# cfgadm -c unconfigure c1::dsk/c1t0d0
<Physically remove failed disk c1t0d0>
<Physically insert replacement disk c1t0d0>
# cfgadm -c configure c1::dsk/c1t0d0
# zpool online rpool c1t0d0
# zpool replace rpool c1t0d0
# zpool status rpool
<Let disk resilver before installing the boot blocks>
x86# bootadm install-bootloader

对于一些硬件,插入替换磁盘后不必使其联机并进行配置。

  1. 物理连接替换磁盘。
  2. 将新磁盘连接到根池。

    例如:

    # zpool attach rpool c2t0d0 c2t1d0
    Make sure to wait until resilver is done before rebooting.

    正确的磁盘标签和引导块将被自动应用。

  3. 确认根池状态。

    例如:

    # zpool status rpool
    pool: rpool
    state: ONLINE
    scan: resilvered 11.6G in 0h5m with 0 errors on Fri Jul 20 12:06:07 2012
    config:
    
    NAME      STATE     READ WRITE CKSUM
    rpool     ONLINE       0     0     0
    mirror-0  ONLINE       0     0     0
    c2t0d0    ONLINE       0     0     0
    c2t1d0    ONLINE       0     0     0
    
    errors: No known data errors
  4. 重新同步完成后,验证是否可以从新磁盘引导。
  5. 如果系统从新磁盘引导,则分离旧磁盘。

    例如:

    # zpool detach rpool c2t0d0
  6. 如果要使用较大的磁盘替换较小的根池磁盘,请设置池的 autoexpand 属性,以扩展池的大小。

    确定当前的 rpool 池大小:

    # zpool list rpool
    NAME   SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
    rpool  29.8G   152K  29.7G   0%  1.00x  ONLINE  -
    # zpool set autoexpand=on rpool

    查看扩展后的 rpool 池大小:

    # zpool list rpool
    NAME   SIZE  ALLOC  FREE  CAP  DEDUP  HEALTH  ALTROOT
    rpool  279G   146K  279G   0%  1.00x  ONLINE  -
  7. 将系统设置为自动从新磁盘引导。

    重新配置系统 BIOS。