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 根文件系统引导

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

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

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

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

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

请查看以下有关镜像 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 solaris SPARC
bootfs rpool/ROOT/solaris

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

在基于 SPARC 的系统上,提供了两个引导选项:

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

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

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

# beadm list
BE        Active Mountpoint Space  Policy Created          
--        ------ ---------- -----  ------ -------          
solaris   -      -          19.18M static 2011-01-13 15:31 
solaris-1 NR     /          8.48G  static 2011-01-13 15:44

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

ok boot -L                                 
Boot device: /pci@0/pci@0/pci@2/scsi@0/disk@3,0:a  File and args: -L
1 solaris
2 solaris-1
Select environment to boot: [ 1 - 2 ]: 2

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

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

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

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

在安装过程中或执行 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

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

从 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

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

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

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

# reboot -f

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

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

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

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

  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@780/pci@0/pci@9/scsi@0/disk@0,0:a File and args: -s
      SunOS Release 5.11 Version 11.0 64-bit
      Copyright (c) 1983, 2011, 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
      
      Jan 24 13:23:54 su: 'su root' succeeded for root on /dev/console
      Oracle Corporation SunOS 5.11 11.0 November 2011
      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.
    • 解决 menu.lst 引导项问题。

      首先,您必须使用步骤 1 中列出的引导方法之一从介质或网络引导系统。然后,导入根池并修复 menu.lst 项。

      x86# zpool import -f rpool
      x86# cd /rpool/boot/grub
      x86# vi menu.lst
      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            -      -          11.45M static 2011-10-22 00:30 
      solaris-2          R      -          12.69G static 2011-10-21 21:04 
      # 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@780/pci@0/pci@9/scsi@0/disk@0,0:a File and args: -s
    SunOS Release 5.11 Version 11.0 64-bit
    Copyright (c) 1983, 2011, 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): <Press return>
    single-user privilege assigned to root on /dev/console.
    Entering System Maintenance Mode
    
    Jan 24 13:23:54 su: 'su root' succeeded for root on /dev/console
    Oracle Corporation SunOS 5.11 11.0 November 2011
    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.