Oracle Solaris ZFS 管理指南

Procedure如何替换 ZFS 根池中的磁盘

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

在镜像根池配置中,您可以尝试替换磁盘而不必从备用介质引导。可以使用 zpool replace 命令替换发生故障的磁盘。或者,如果有额外的磁盘,可以使用 zpool attach 命令。有关附加额外磁盘和分离根池磁盘的示例,请参见本节中的过程。

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


# zpool offline rpool c1t0d0s0
# cfgadm -c unconfigure c1::dsk/c1t0d0
<Physically remove failed disk c1t0d0>
<Physically insert replacement disk c1t0d0>
# cfgadm -c configure c1::dsk/c1t0d0
# zpool replace rpool c1t0d0s0
# zpool online rpool c1t0d0s0
# zpool status rpool
<Let disk resilver before installing the boot blocks>
SPARC# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t0d0s0
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0

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

必须标识当前磁盘和新磁盘的引导设备路径名,以便从替换磁盘测试引导,而且如有必要,在替换磁盘发生故障时也可手动从现有磁盘引导。在以下过程的示例中,当前根池磁盘 (c1t10d0s0) 的路径名为:


/pci@8,700000/pci@3/scsi@5/sd@a,0

替换引导磁盘 c1t9d0s0 的路径名为:


/pci@8,700000/pci@3/scsi@5/sd@9,0
  1. 物理连接替换磁盘或新磁盘。

  2. 确认新磁盘具有 SMI 标签和分片 0。

    有关对要用于根池的磁盘进行重新标记的信息,请参见以下站点:

    http://www.solarisinternals.com/wiki/index.php/ZFS_Troubleshooting_Guide

  3. 将新磁盘连接到根池。

    例如:


    # zpool attach rpool c1t10d0s0 c1t9d0s0
    
  4. 确认根池状态。

    例如:


    # zpool status rpool
      pool: rpool
     state: ONLINE
    status: One or more devices is currently being resilvered.  The pool will
            continue to function, possibly in a degraded state.
    action: Wait for the resilver to complete.
     scrub: resilver in progress, 25.47% done, 0h4m to go
    config:
    
            NAME           STATE     READ WRITE CKSUM
            rpool          ONLINE       0     0     0
              mirror-0     ONLINE       0     0     0
                c1t10d0s0  ONLINE       0     0     0
                c1t9d0s0   ONLINE       0     0     0
    
    errors: No known data errors
  5. 完成重新同步后,将引导块应用到新磁盘。

    使用类似以下的语法:

    • SPARC:


      # installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c1t9d0s0
      
    • x86:


      # installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t9d0s0
      
  6. 验证您是否可以从新磁盘引导。

    例如,在基于 SPARC 的系统上,应使用类似以下的语法:


    ok boot /pci@8,700000/pci@3/scsi@5/sd@9,0
    
  7. 如果系统从新磁盘引导,则分离旧磁盘。

    例如:


    # zpool detach rpool c1t10d0s0
    
  8. 通过使用 SPARC 引导 PROM 中的 eeprom 命令和 setenv 命令,将系统设置为从新磁盘自动引导,或重新配置 PC BIOS。