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

文档信息

前言

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

2.  Oracle Solaris ZFS 入门

3.  管理 Oracle Solaris ZFS 存储池

4.  管理 ZFS 根池组件

管理 ZFS 根池组件(概述)

ZFS 根池要求

ZFS 根池空间要求

ZFS 根池配置要求

管理 ZFS 根池

安装 ZFS 根池

如何更新 ZFS 引导环境

如何挂载备用 BE

如何配置镜像根池(SPARC 或 x86/VTOC)

如何配置镜像根池 (x86/EFI (GPT))

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

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

如何在另一个根池中创建 BE(SPARC 或 x86/VTOC)

如何在另一个根池中创建 BE(SPARC 或 x86/EFI (GPT))

管理 ZFS 交换和转储设备

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

ZFS 转储设备故障排除

从 ZFS 根文件系统引导

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

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

在基于 x86 的系统上从 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.  归档快照和根池恢复

12.  建议的 Oracle Solaris ZFS 做法

A.  Oracle Solaris ZFS 版本说明

索引

从 ZFS 根文件系统引导

基于 SPARC 和基于 x86 的系统都通过引导归档文件进行引导,引导归档文件是一个文件系统映像,该映像中包含进行引导时所需的文件。从 ZFS 根文件系统引导时,将会在选择用来进行引导的根文件系统中解析引导归档文件和内核文件的路径名。

从 ZFS 文件系统引导不同于从 UFS 文件系统引导,原因是,对于 ZFS,设备说明符标识存储池,而不是单个根文件系统。存储池可能包含多个可引导的 ZFS 根文件系统。从 ZFS 引导时,必须指定引导设备和由该引导设备标识的池中的根文件系统。

缺省情况下,选择用来进行引导的文件系统是由池的 bootfs 属性标识的文件系统。可以覆盖此缺省选项,方法如下:在 SPARC 系统上,在 boot -Z 命令中指定要包含的备用可引导文件系统;在基于 x86 的系统上,从 BIOS 中选择备用引导设备。

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

在安装后,可以附加磁盘来创建镜像 ZFS 根池。有关创建镜像根池的更多信息,请参见如何配置镜像根池(SPARC 或 x86/VTOC)

请查看以下有关镜像 ZFS 根池的已知问题:

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

在具有多个 ZFS BE 的基于 SPARC 的系统上,可以通过使用 beadm activate 命令从任何 BE 引导。

在安装和 beadm 激活过程中,将会通过 bootfs 属性自动指定 ZFS 根文件系统。

一个池中可能存在多个可引导的文件系统。缺省情况下,/pool-name/boot/menu.lst 文件中的可引导文件系统项由池的 bootfs 属性来标识。但是,menu.lst 项可以包含 bootfs 命令,该命令可指定池中的一个备用文件系统。这样,menu.lst 文件就可以包含池中多个根文件系统的项。

系统安装了 ZFS 根文件系统时,将在 menu.lst 文件中添加类似以下内容的项:

title Oracle Solaris 11.1 SPARC
bootfs rpool/ROOT/solaris

创建新 BE 时,将会自动更新 menu.lst 文件。

title Oracle Solaris 11.1 SPARC
bootfs rpool/ROOT/solaris
title solaris
bootfs rpool/ROOT/solaris2

在基于 SPARC 的系统上,可以选择要通过其进行引导的 BE,如下所示:

这种引导方法不会自动激活 BE。当使用 boot -L-Z 语法引导 BE 之后,必须激活此 BE 以自动通过其继续进行引导。

示例 4-1 从特定的 ZFS 引导环境引导

如果系统的引导设备上的 ZFS 存储池中有多个 ZFS BE,您可以使用 beadm activate 命令指定缺省 BE。

例如,有以下 ZFS BE 可用,如 beadm 输出所述:

# beadm list
BE        Active Mountpoint Space Policy Created          
--        ------ ---------- ----- ------ -------          
solaris   NR     /          3.80G static 2012-07-20 10:25 
solaris-2 -      -          7.68M static 2012-07-19 13:44 

如果基于 SPARC 的系统上有多个 ZFS BE,您可以使用 boot -L 命令。例如:

ok boot -L                                 
Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a  File and args: -L
1 Oracle Solaris 11.1 SPARC
2 solaris
Select environment to boot: [ 1 - 2 ]: 1

To boot the selected entry, invoke:
boot [<root-device>] -Z rpool/ROOT/solaris-2

Program terminated
ok boot -Z rpool/ROOT/solaris-2

请记住,使用上述命令引导的 BE 不会被激活供下次重新引导时使用。如果要继续从在 boot -Z 操作期间选择的 BE 自动引导,则将需要激活它。

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

在 Oracle Solaris 11 中,x86 系统将安装传统 GRUB,在安装过程或 beadm activate 操作过程中,将在 /pool-name /boot/grub/menu.lst 文件中添加以下条目以自动引导 ZFS:

title solaris
bootfs rpool/ROOT/solaris
kernel$ /platform/i86pc/kernel/amd64/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/amd64/boot_archive
title solaris-1
bootfs rpool/ROOT/solaris-1
kernel$ /platform/i86pc/kernel/amd64/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/amd64/boot_archive

如果由 GRUB 标识为引导设备的设备包含 ZFS 存储池,则 menu.lst 文件用于创建 GRUB 菜单。

在具有多个 ZFS BE 的基于 x86 的系统上,您可以从 GRUB 菜单中选择 BE。如果与该菜单项对应的根文件系统是一个 ZFS 文件系统,则会添加以下选项。

-B $ZFS-BOOTFS

在 Oracle Solaris 11.1 中,基于 x86 的系统将安装 GRUB2。menu.lst 文件会替换为 /rpool/boot/grub/grub.cfg 文件,但不应手动编辑该文件。使用 bootadm 子命令可添加、更改和删除菜单项。

有关修改 GRUB 菜单项的更多信息,请参见《引导和关闭 Oracle Solaris 11.1 系统》

示例 4-2 x86:引导 ZFS 文件系统

当从 GRUB2 系统上的 ZFS 根文件系统进行引导时,按如下所示指定根设备:

# bootadm list-menu
the location of the boot loader configuration files is: /rpool/boot/grub
default 0
console text
timeout 30
0 Oracle Solaris 11.1

当从传统 GRUB 系统上的 ZFS 根文件系统进行引导时,根设备由 -B $ZFS-BOOTFS 引导参数指定。例如:

title solaris
bootfs rpool/ROOT/solaris
kernel$ /platform/i86pc/kernel/amd64/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/amd64/boot_archive
title solaris-1
bootfs rpool/ROOT/solaris-1
kernel$ /platform/i86pc/kernel/amd64/unix -B $ZFS-BOOTFS
module$ /platform/i86pc/amd64/boot_archive

示例 4-3 x86:快速重新引导 ZFS 根文件系统

在基于 x86 的系统上使用快速重新引导功能,可以在几秒内重新引导。通过快速重新引导功能,您可以重新引导至新的内核,而不会出现 BIOS 和引导装载程序可能引起的长时间延迟。快速重新引导系统的功能可显著减少停机时间并极大地提高效率。

使用 beadm activate 命令在 BE 之间转换时,仍然必须使用 init 6 命令。对于适用 reboot 命令的其他系统操作,可以使用 reboot -f 命令。例如:

# reboot -f

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

如果您需要引导系统,以解决根口令丢失或类似问题,请使用以下过程。

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

使用以下过程解决 menu.lst 问题或 root 口令问题。如果需要替换根池中的磁盘,请参见如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)。如果需要执行完整系统(裸机)恢复,请参见第 11 章

  1. 选择适当的引导方法:
    • x86:Live Media-从安装介质进行引导并在恢复过程中使用 GNOME 终端。

    • SPARC:文本安装-从安装介质或者从网络进行引导,然后从文本安装屏幕中选择 3 Shell 选项。

    • x86:文本安装-在 GRUB 菜单中,选择 Text Installer and command line(文本安装程序和命令行)引导项,然后从文本安装屏幕中选择 3 Shell 选项。

    • SPARC:自动化安装-使用以下命令从允许退出到 shell 的安装菜单直接引导。

      ok boot net:dhcp
    • x86:自动化安装-从网络上的安装服务器进行引导需要 PXE 引导。选择 GRUB 菜单上的 Text Installer and command line(文本安装程序和命令行)项。然后,从文本安装屏幕中选择 3 Shell 选项。

    例如,引导系统后,选择 3 Shell 选项。

            1  Install Oracle Solaris
            2  Install Additional Drivers
            3  Shell
            4  Terminal type (currently xterm)
            5  Reboot
    
    Please enter a number [1]: 3
    To return to the main menu, exit the shell
    #
  2. 选择引导恢复问题:
    • 要解决 root shell 错误问题,请将系统引导到单用户模式并更正 /etc/passwd 文件中的 shell 项。

      在 x86 系统上,编辑选定的引导项,然后添加 -s 选项。

      例如,在 SPARC 系统上,关闭系统并引导至单用户模式。作为 root 用户登录后,编辑 /etc/passwd 文件,然后修复 root shell 项。

      # init 0
      ok boot -s
      Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a ...
      SunOS Release 5.11 Version 11.1 64-bit
      Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved.
      Booting to milestone "milestone/single-user:default".
      Hostname: tardis.central
      Requesting System Maintenance Mode
      SINGLE USER MODE
      
      Enter user name for system maintenance (control-d to bypass): root
      Enter root password (control-d to bypass): xxxx
      single-user privilege assigned to root on /dev/console.
      Entering System Maintenance Mode
      
      Aug  3 15:46:21 su: 'su root' succeeded for root on /dev/console
      Oracle Corporation      SunOS 5.11      11.1    October 2012
      su: No shell /usr/bin/mybash.  Trying fallback shell /sbin/sh.
      root@tardis.central:~# TERM =vt100; export TERM
      root@tardis.central:~# vi /etc/passwd
      root@tardis.central:~# <Press control-d> 
      logout
      svc.startd: Returning to milestone all.
    • 解决阻碍基于 x86 的系统引导的问题。

      首先,您必须使用步骤 1 中列出的引导方法之一从介质或网络引导系统。然后,执行诸如导入根池和修复 GRUB 条目等操作。

      您可以使用 bootadm list-menu 命令列出并修改 GRUB2 条目。也可以使用 set-menu 子命令更改引导条目。有关更多信息,请参见 bootadm(1M)

      x86# zpool import -f rpool
      x86# bootadm list-menu
      x86# bootadm set-menu default=1
      x86# exit
              1  Install Oracle Solaris
              2  Install Additional Drivers
              3  Shell
              4  Terminal type (currently sun-color)
              5  Reboot
      
      Please enter a number [1]: 5

      确认系统引导成功。

    • 解决 root 口令未知导致无法登录系统的问题。

      首先,您必须使用步骤 1 中列出的引导方法之一从介质或网络引导系统。然后,导入根池 (rpool) 并挂载 BE 以删除 root 口令项。在 SPARC 平台和 x86 平台上,该过程是相同的。

      # zpool import -f rpool
      # beadm list
      be_find_current_be: failed to find current BE name
      be_find_current_be: failed to find current BE name
      BE        Active Mountpoint Space  Policy Created          
      --        ------ ---------- -----  ------ -------          
      solaris   -      -          46.95M static 2012-07-20 10:25 
      solaris-2 R      -          3.81G  static 2012-07-19 13:44 
      # mkdir /a
      # beadm mount solaris-2 /a
      # TERM=vt100
      # export TERM
      # cd /a/etc
      # vi shadow 
      <Carefully remove the unknown password>
      # cd /
      # beadm umount solaris-2
      # halt

      转至下一步设置 root 口令。

  3. 通过引导至单用户模式并设置口令来设置 root 口令。

    此步骤假设您在上一步中删除了未知的 root 口令。

    在基于 x86 系统上,编辑选定的引导项,然后添加 -s 选项。

    在基于 SPARC 系统上,将系统引导至单用户模式,以 root 身份登录,然后设置 root 口令。例如:

    ok boot -s
    Boot device: /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@0,0:a ...
    SunOS Release 5.11 Version 11.1 64-bit
    Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved
    Booting to milestone "milestone/single-user:default".
    
    Enter user name for system maintenance (control-d to bypass): root
    Enter root password (control-d to bypass): <Press return>
    single-user privilege assigned to root on /dev/console.
    Entering System Maintenance Mode
    
    Jul 20 14:09:59 su: 'su root' succeeded for root on /dev/console
    Oracle Corporation      SunOS 5.11      11.1    October 2012
    root@tardis.central:~# passwd -r files root
    New Password: xxxxxx
    Re-enter new Password: xxxxxx
    passwd: password successfully changed for root
    root@tardis.central:~# <Press control-d> 
    logout
    svc.startd: Returning to milestone all.