JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris ZFS 管理指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  Oracle Solaris ZFS 文件系统(介绍)

2.  Oracle Solaris ZFS 入门

3.  管理 Oracle Solaris ZFS 存储池

4.  安装和引导 Oracle Solaris ZFS 根文件系统

安装和引导 Oracle Solaris ZFS 根文件系统(概述)

ZFS 安装功能

支持 ZFS 所要满足的 Oracle Solaris 安装要求和 Oracle Solaris Live Upgrade 要求

Oracle Solaris 发行版要求

ZFS 根池的一般要求

ZFS 根池的磁盘空间要求

ZFS 根池配置要求

安装 ZFS 根文件系统(Oracle Solaris 初始安装)

如何创建镜像 ZFS 根池(安装后)

安装 ZFS 根文件系统(Oracle Solaris Flash 归档文件安装)

安装 ZFS 根文件系统(JumpStart 安装)

ZFS 的 JumpStart 关键字

ZFS 的 JumpStart 配置文件示例

ZFS 的 JumpStart 问题

迁移到 ZFS 根文件系统或更新 ZFS 根文件系统 (Live Upgrade)

Live Upgrade 的 ZFS 迁移问题

使用 Live Upgrade 迁移或更新 ZFS 根文件系统(不具有区域)

使用 Live Upgrade 迁移或升级具有区域的系统 (Solaris 10 10/08)

如何将 UFS 上具有区域根的 UFS 根文件系统迁移到 ZFS 根文件系统 (Solaris 10 10/08)

如何配置 ZFS 上具有区域根的 ZFS 根文件系统 (Solaris 10 10/08)

如何升级或修补 ZFS 上具有区域根的 ZFS 根文件系统 (Solaris 10 10/08)

使用 Oracle Solaris Live Upgrade 迁移或升级具有区域的系统(最低 Solaris 10 5/09)

支持的 ZFS 和区域根配置信息(最低 Solaris 10 5/09)

如何创建具有 ZFS 根文件系统和区域根的 ZFS BE(最低 Solaris 10 5/09)

如何升级或修补具有区域根的 ZFS 根文件系统(最低 Solaris 10 5/09)

如何将具有区域根的 UFS 根文件系统迁移到 ZFS 根文件系统(最低 Solaris 10 5/09)

管理 ZFS 交换和转储设备

调整 ZFS 交换设备和转储设备的大小

定制 ZFS 交换卷和转储卷

ZFS 转储设备故障排除

从 ZFS 根文件系统引导

从镜像 ZFS 根池中的备用磁盘引导

SPARC:从 ZFS 根文件系统引导

x86:从 ZFS 根文件系统引导

解决妨碍成功引导的 ZFS 挂载点问题 (Solaris 10 10/08)

如何解决 ZFS 挂载点问题

在 ZFS 根环境中进行引导以恢复系统

如何引导 ZFS 故障安全模式

如何从备用介质引导 ZFS

恢复 ZFS 根池或根池快照

如何替换 ZFS 根池中的磁盘

如何创建根池快照

如何重新创建 ZFS 根池和恢复根池快照

如何从故障安全引导回滚根池快照

5.  管理 Oracle Solaris ZFS 文件系统

6.  使用 Oracle Solaris ZFS 快照和克隆

7.  使用 ACL 和属性保护 Oracle Solaris ZFS 文件

8.  Oracle Solaris ZFS 委托管理

9.  Oracle Solaris ZFS 高级主题

10.  Oracle Solaris ZFS 故障排除和池恢复

11.  建议的 Oracle Solaris ZFS 做法

A.  Oracle Solaris ZFS 版本说明

索引

恢复 ZFS 根池或根池快照

以下各节描述了如何执行下列任务:

如何替换 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。

    有关为用作根池的磁盘重新设置标签的信息,请参见以下参考文档:

  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. 如果要使用较大的磁盘替换较小的根池磁盘,请设置池的 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  -
  6. 验证您是否可以从新磁盘引导。

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

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

    例如:

    # zpool detach rpool c1t10d0s0
  8. 重置缺省引导设备,设置系统自动从新磁盘引导。
    • SPARC-在 SPARC 引导 PROM 下使用 eeprom 命令或 setenv 命令。

    • x86-重新配置系统 BIOS。

如何创建根池快照

可以创建根池快照以便进行恢复。创建根池快照的最好方法是对根池执行递归快照。

下面的过程将创建递归根池快照,并将快照以文件和快照的形式存储到远程系统上的池中。如果根池失败,可以使用 NFS 挂载远程数据集,快照文件可以放入重新创建的池中。您也可以将根池快照以实际快照的形式存储到远程系统上的池中。从远程系统发送和接收快照比较复杂,因为在从 Oracle Solaris OS miniroot 引导要修复的系统时,您必须配置 ssh 或使用 rsh

在根池恢复中,以文件或快照形式验证远程存储的快照是一个重要步骤。无论何种方法,都应按照例程重新创建快照,例如在池配置更改或 Solaris OS 升级时。

在以下过程中,系统从 zfsBE 引导环境引导。

  1. 在远程系统上创建池和文件系统以存储快照。

    例如:

    remote# zfs create rpool/snaps
  2. 与本地系统共享文件系统。

    例如:

    remote# zfs set sharenfs='rw=local-system,root=local-system' rpool/snaps
    # share
    -@rpool/snaps   /rpool/snaps   sec=sys,rw=local-system,root=local-system   "" 
  3. 创建根池的递归快照。
    local# zfs snapshot -r rpool@snap1
    local# zfs list -r rpool
    # NAME                      USED  AVAIL  REFER  MOUNTPOINT
    rpool                    15.1G   119G   106K  /rpool
    rpool@snap1                  0      -   106K  -
    rpool/ROOT               5.00G   119G    31K  legacy
    rpool/ROOT@snap1             0      -    31K  -
    rpool/ROOT/zfsBE         5.00G   119G  5.00G  /
    rpool/ROOT/zfsBE@snap1       0      -  5.00G  -
    rpool/dump               2.00G   120G  1.00G  -
    rpool/dump@snap1             0      -  1.00G  -
    rpool/export               63K   119G    32K  /export
    rpool/export@snap1           0      -    32K  -
    rpool/export/home          31K   119G    31K  /export/home
    rpool/export/home@snap1      0      -    31K  -
    rpool/swap               8.13G   123G  4.00G  -
    rpool/swap@snap1             0      -  4.00G  -
  4. 将根池快照发送到远程系统。

    例如,要将根池快照作为文件发送到远程池,请使用类似以下的语法:

    local# zfs send -Rv rpool@snap1 > /net/remote-system/rpool/snaps/rpool.snap1
    sending from @ to rpool@snap1
    sending from @ to rpool/ROOT@snap1
    sending from @ to rpool/ROOT/s10zfsBE@snap1
    sending from @ to rpool/dump@snap1
    sending from @ to rpool/export@snap1
    sending from @ to rpool/export/home@snap1
    sending from @ to rpool/swap@snap1
    local# zfs send -Rv rpool@snap1 > /net/remote-system/rpool/snaps/rpool.snap1
    sending from @ to rpool@snap1
    sending from @ to rpool/export@snap1
    sending from @ to rpool/export/home@snap1
    sending from @ to rpool/ROOT@snap1
    sending from @ to rpool/ROOT/zfsBE@snap1
    sending from @ to rpool/dump@snap1
    sending from @ to rpool/swap@snap1

    要将根池快照作为快照发送到远程池,请使用类似以下的语法:

    local# zfs send -Rv rpool@snap1 | ssh remote-system zfs receive
    -Fd -o canmount=off tank/snaps
    sending from @ to rpool@snap1
    sending from @ to rpool/export@snap1
    sending from @ to rpool/export/home@snap1
    sending from @ to rpool/ROOT@snap1
    sending from @ to rpool/ROOT/zfsBE@snap1
    sending from @ to rpool/dump@snap1
    sending from @ to rpool/swap@snap1

如何重新创建 ZFS 根池和恢复根池快照

在此过程中,假设下列条件存在:

在本地系统上执行所有步骤。

  1. 从安装 DVD 或者从网络进行引导。
    • SPARC-选择以下引导方法之一:

      ok boot net -s
      ok boot cdrom -s

      如果您未使用 -s 选项,则需要退出安装程序。

    • x86-选择从 DVD 或网络进行引导的选项。然后,退出安装程序。

  2. 如果已经将根池快照作为文件发送到远程系统,请挂载远程快照文件系统。

    例如:

    # mount -F nfs remote-system:/rpool/snaps /mnt

    如果您尚未配置网络服务,则可能需要指定 remote-system 的 IP 地址。

  3. 如果根池磁盘被替换,并且不包含 ZFS 可用的磁盘标签,则必须为磁盘重新设置标签。

    有关为磁盘重新设置标签的更多信息,请参见以下参考文档:

  4. 重新创建根池。

    例如:

    # zpool create -f -o failmode=continue -R /a -m legacy -o cachefile=
    /etc/zfs/zpool.cache rpool c1t1d0s0
  5. 恢复根池快照。

    此步骤可能会花费一些时间。例如:

    # cat /mnt/rpool.snap1 | zfs receive -Fdu rpool

    使用 -u 选项表示 zfs receive 操作完成时不挂载恢复的归档文件。

    要恢复存储在远程系统上的池中的实际根池快照,请使用类似以下的语法:

    # ssh remote-system zfs send -Rb tank/snaps/rpool@snap1 | zfs receive -F rpool
  6. 验证根池数据集是否已恢复。

    例如:

    # zfs list
  7. 设置根池 BE 上的 bootfs 属性。

    例如:

    # zpool set bootfs=rpool/ROOT/zfsBE rpool
  8. 在新磁盘上安装引导块。
    • SPARC:

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

      # installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c1t1d0s0
  9. 重新引导系统。
    # init 6

如何从故障安全引导回滚根池快照

此过程假设现有根池快照可用。在本例中,本地系统提供这些根池快照。

# zfs snapshot -r rpool@snap1
# zfs list -r rpool
NAME                        USED  AVAIL  REFER  MOUNTPOINT
rpool                      7.84G  59.1G   109K  /rpool
rpool@snap1                  21K      -   106K  -
rpool/ROOT                 4.78G  59.1G    31K  legacy
rpool/ROOT@snap1               0      -    31K  -
rpool/ROOT/s10zfsBE        4.78G  59.1G  4.76G  /
rpool/ROOT/s10zfsBE@snap1  15.6M      -  4.75G  -
rpool/dump                 1.00G  59.1G  1.00G  -
rpool/dump@snap1             16K      -  1.00G  -
rpool/export                 99K  59.1G    32K  /export
rpool/export@snap1           18K      -    32K  -
rpool/export/home            49K  59.1G    31K  /export/home
rpool/export/home@snap1      18K      -    31K  -
rpool/swap                 2.06G  61.2G    16K  -
rpool/swap@snap1               0      -    16K  -
  1. 关闭系统并引导故障安全模式。
    ok boot -F failsafe
    ROOT/zfsBE was found on rpool.
    Do you wish to have it mounted read-write on /a? [y,n,?] y
    mounting rpool on /a
    
    Starting shell.
  2. 回滚各根池快照。
    # zfs rollback rpool@snap1
    # zfs rollback rpool/ROOT@snap1
    # zfs rollback rpool/ROOT/s10zfsBE@snap1
  3. 重新引导至多用户模式。
    # init 6