JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:ZFS 文件系统     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

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

2.  Oracle Solaris ZFS 入门

3.  Oracle Solaris ZFS 与传统文件系统之间的差别

4.  管理 Oracle Solaris ZFS 存储池

5.  管理 ZFS 根池组件

管理 ZFS 根池组件(概述)

ZFS 根池要求

ZFS 根池空间要求

ZFS 根池配置要求

解决 ZFS 根池安装问题

管理 ZFS 根池

安装 ZFS 根池

如何更新 ZFS 引导环境

如何挂载备用 BE

如何配置镜像根池

如何替换 ZFS 根池中的磁盘

如何在另一个根池中创建 BE

管理 ZFS 交换和转储设备

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

ZFS 转储设备故障排除

从 ZFS 根文件系统引导

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

在基于 SPARC 的系统上从 ZFS 根文件系统引导

在基于 x86 的系统上从 ZFS 根文件系统引导

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

如何为进行恢复而引导系统

6.  管理 Oracle Solaris ZFS 文件系统

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

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

9.  Oracle Solaris ZFS 委托管理

10.  Oracle Solaris ZFS 高级主题

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

12.  归档快照和根池恢复

13.  建议的 Oracle Solaris ZFS 做法

A.  Oracle Solaris ZFS 版本说明

索引

管理 ZFS 根池

以下各节提供了关于安装和更新 ZFS 根池以及配置镜像根池的信息。

安装 ZFS 根池

Oracle Solaris 11 Live CD 安装方法在一个磁盘上安装缺省 ZFS 根池。使用 Oracle Solaris 11 自动化安装 (automated installation, AI) 方法时,可以创建 AI 清单来标识用于 ZFS 根池的磁盘或镜像磁盘。

AI 安装程序提供了一定的灵活性:可以在缺省引导磁盘上安装 ZFS 根池,也可以在标识的目标磁盘上安装 ZFS 根池。您可以指定逻辑设备(如 c1t0d0s0)或物理设备路径。此外,可以使用 MPxIO 标识符或设备 ID 来表示要用于安装的设备。

安装后,可查看 ZFS 存储池和文件系统信息,具体内容会因安装类型和定制选项而有所不同。例如:

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

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c1t3d0s0  ONLINE       0     0     0

errors: No known data errors
# zfs list
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
rpool                    6.49G  60.4G    40K  /rpool
rpool/ROOT               3.46G  60.4G    31K  legacy
rpool/ROOT/solaris       3.46G  60.4G  3.16G  /
rpool/ROOT/solaris/var    303M  60.4G   216M  /var
rpool/dump               2.00G  60.5G  1.94G  -
rpool/export             96.5K  60.4G    32K  /rpool/export
rpool/export/home        64.5K  60.4G    32K  /rpool/export/home
rpool/export/home/admin  32.5K  60.4G  32.5K  /rpool/export/home/admin
rpool/swap               1.03G  60.5G  1.00G  -

查看 ZFS BE 信息。例如:

# beadm list
# beadm list
BE      Active Mountpoint Space Policy Created          
--      ------ ---------- ----- ------ -------          
solaris NR     /          3.85G static 2011-09-26 08:37 

在上面的输出中,Active 字段指示 BE 当前是否处于活动状态。N 表示当前处于活动状态;R 表示重新引导时处于活动状态;NR 表示在当前以及重新引导时均处于活动状态。

如何更新 ZFS 引导环境

缺省 ZFS 引导环境 (boot environment, BE) 的缺省名称为 solaris。可以使用 beadm list 命令来标识 BE。例如:

# beadm list
BE      Active Mountpoint Space Policy Created          
--      ------ ---------- ----- ------ -------          
solaris NR     /          8.41G static 2011-01-13 15:31 

在上面的输出中,NR 表示 BE 当前处于活动状态,且在重新引导时也将是活动 BE。

可以使用 pkg update 命令来更新 ZFS 引导环境。如果使用 pkg update 命令更新 ZFS BE,将自动创建并激活一个新 BE(除非对现有 BE 所作的更新极少)。

  1. 更新 ZFS BE。
    # pkg update
                                           
    
    DOWNLOAD                                  PKGS       FILES    XFER (MB)
    Completed                              707/707 10529/10529  194.9/194.9 
    .
    .
    .

    将自动创建并激活一个新 BE solaris-1

  2. 重新引导系统来完成 BE 激活。然后确认 BE 状态。
    # init 6
    .
    .
    .
    # beadm list
    BE        Active Mountpoint Space Policy Created          
    --        ------ ---------- ----- ------ -------          
    solaris   -      -          6.25M static 2011-09-26 08:37 
    solaris-1 NR     /          3.92G static 2011-09-26 09:32 
  3. 如果在引导新的 BE 时出现错误,请激活并引导回以前的 BE。
    # beadm activate solaris
    # init 6

如何挂载备用 BE

为实现恢复,可能需要从其他 BE 复制或访问文件。

  1. 成为管理员。
  2. 挂载备用 BE。
    # beadm mount solaris-1 /mnt
  3. 访问该 BE。
    # ls /mnt
    bin        export     media      pkg        rpool      tmp
    boot       home       mine       platform   sbin       usr
    dev        import     mnt        proc       scde       var
    devices    java       net        project    shared     
    doe        kernel     nfs4       re         src        
    etc        lib        opt        root       system     
  4. 在使用完备用 BE 后将其卸载。
    # beadm umount solaris-1

如何配置镜像根池

如果在自动安装期间未配置镜像根池,在安装之后也可以轻松地配置镜像根池。

有关替换根池中的磁盘的信息,请参见如何替换 ZFS 根池中的磁盘

  1. 显示当前根池的状态。
    # zpool status rpool
      pool: rpool
     state: ONLINE
     scrub: none requested
    config:
    
            NAME        STATE     READ WRITE CKSUM
            rpool       ONLINE       0     0     0
              c2t0d0s0  ONLINE       0     0     0
    
    errors: No known data errors
  2. 如有必要,准备另一个要附加到根池的磁盘。
  3. 附加另一个磁盘,以配置镜像根池。
    # zpool attach rpool c2t0d0s0 c2t1d0s0
    Make sure to wait until resilver is done before rebooting.
  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.
     scan: resilver in progress since Thu Sep 29 18:09:09 2011
        1.55G scanned out of 5.36G at 36.9M/s, 0h1m to go
        1.55G scanned out of 5.36G at 36.9M/s, 0h1m to go
        1.55G resilvered, 28.91% done
    config:
    
            NAME          STATE     READ WRITE CKSUM
            rpool         ONLINE       0     0     0
              mirror-0    ONLINE       0     0     0
                c2t0d0s0  ONLINE       0     0     0
                c2t1d0s0  ONLINE       0     0     0  (resilvering)
    
    errors: No known data errors

    在上面的输出中,重新同步过程未完成。当您看到类似如下的消息时,说明重新同步已完成。

    resilvered 5.36G in 0h10m with 0 errors on Thu Sep 29 18:19:09 2011
  5. 验证您是否可以从新磁盘成功引导。
  6. 将系统设置为自动从新磁盘引导。
    • SPARC:通过使用引导 PROM 中的 eeprom 命令或 setenv 命令,将系统设置为自动从新磁盘引导。

    • x86:重新配置系统 BIOS。

如何替换 ZFS 根池中的磁盘

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

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

具有 SATA 磁盘的系统要求您在尝试通过 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
<Confirm that the new disk has an SMI label and a slice 0>
# 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/c1t0d0s0

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

  1. 物理连接替换磁盘。
  2. 确认替换(新)磁盘具有 SMI (VTOC) 标签和分片 0。

    有关为用于根池的磁盘重新设置标签的信息,请参见《Oracle Solaris 管理:设备和文件系统》中的"如何为磁盘设置标签"

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

    例如:

    # zpool attach rpool c2t0d0s0 c2t1d0s0
    Make sure to wait until resilver is done before rebooting.
  4. 确认根池状态。

    例如:

    # zpool status rpool
      pool: rpool
     state: ONLINE
     scan: resilvered 5.36G in 0h2m with 0 errors on Thu Sep 29 18:11:53 2011
    config:
    
            NAME          STATE     READ WRITE CKSUM
            rpool         ONLINE       0     0     0
              mirror-0    ONLINE       0     0     0
                c2t0d0s0  ONLINE       0     0     0
                c2t1d0s0  ONLINE       0     0     0
    
    errors: No known data errors
  5. 重新同步完成后,验证是否可以从新磁盘引导。

    例如,在基于 SPARC 的系统上:

    ok boot /pci@1f,700000/scsi@2/disk@1,0

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

    /pci@1f,700000/scsi@2/disk@0,0

    在以下示例中,替换引导磁盘为 (c2t1d0s0):

    boot /pci@1f,700000/scsi@2/disk@1,0
  6. 如果系统从新磁盘引导,则分离旧磁盘。

    例如:

    # zpool detach rpool c2t0d0s0
  7. 将系统设置为自动从新磁盘引导。
    • SPARC:通过使用引导 PROM 中的 eeprom 命令或 setenv 命令,将系统设置为自动从新磁盘引导。

    • x86:重新配置系统 BIOS。

如何在另一个根池中创建 BE

如果要在另一个根池中重新创建现有的 BE,请按照下面的步骤操作。您可以修改这些步骤,具体取决于您是希望获得具有独立的交换和转储设备的两个类似 BE,还是仅希望在另一个根池中获得共享交换和转储设备的一个 BE。

从第二个根池中的新 BE 激活和引导后,关于第一个根池中以前 BE 的信息将不再存在。如果要引导回原始 BE,将需要从原始根池的引导磁盘手动引导系统。

  1. 使用带 SMI (VTOC) 标签的磁盘创建另一个根池。例如:
    # zpool create rpool2 c4t2d0s0
  2. 在第二个根池中创建新 BE。例如:
    # beadm create -p rpool2 solaris2
  3. 设置第二个根池的 bootfs 属性。例如:
    # zpool set bootfs=rpool2/ROOT/solaris2 rpool2
  4. 激活新 BE。例如:
    # beadm activate solaris2
  5. 从新 BE 引导,但是必须专门从第二个根池的引导设备引导。
    ok boot disk2

    系统应该在新 BE 之下运行。

  6. 重新创建交换卷。例如:
    # zfs create -V 4g rpool2/swap
  7. 为新交换设备更新 /etc/vfstab 项。例如:
    /dev/zvol/dsk/rpool2/swap       -               -               swap -     no      -
  8. 重新创建转储卷。例如:
    # zfs create -V 4g rpool2/dump
  9. 重置转储设备。例如:
    # dumpadm -d /dev/zvol/dsk/rpool2/dump
  10. 重置缺省的引导设备,以便从第二个根池的引导磁盘引导。
    • SPARC-通过使用引导 PROM 中的 eeprom 命令和 setenv 命令,将系统设置为自动从新磁盘引导。

    • x86-重新配置系统 BIOS。

  11. 重新引导以清除原始根池的交换和转储设备。
    # init 6