跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris 11.1 管理:ZFS 文件系统 Oracle Solaris 11.1 Information Library (简体中文) |
1. Oracle Solaris ZFS 文件系统(介绍)
如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)
如何替换 ZFS 根池中的磁盘(SPARC 或 x86/EFI (GPT))
如何在另一个根池中创建 BE(SPARC 或 x86/VTOC)
如何在另一个根池中创建 BE(SPARC 或 x86/EFI (GPT))
6. 使用 Oracle Solaris ZFS 快照和克隆
7. 使用 ACL 和属性保护 Oracle Solaris ZFS 文件
基于 SPARC 和基于 x86 的系统都通过引导归档文件进行引导,引导归档文件是一个文件系统映像,该映像中包含进行引导时所需的文件。从 ZFS 根文件系统引导时,将会在选择用来进行引导的根文件系统中解析引导归档文件和内核文件的路径名。
从 ZFS 文件系统引导不同于从 UFS 文件系统引导,原因是,对于 ZFS,设备说明符标识存储池,而不是单个根文件系统。存储池可能包含多个可引导的 ZFS 根文件系统。从 ZFS 引导时,必须指定引导设备和由该引导设备标识的池中的根文件系统。
缺省情况下,选择用来进行引导的文件系统是由池的 bootfs 属性标识的文件系统。可以覆盖此缺省选项,方法如下:在 SPARC 系统上,在 boot -Z 命令中指定要包含的备用可引导文件系统;在基于 x86 的系统上,从 BIOS 中选择备用引导设备。
在安装后,可以附加磁盘来创建镜像 ZFS 根池。有关创建镜像根池的更多信息,请参见如何配置镜像根池(SPARC 或 x86/VTOC)。
请查看以下有关镜像 ZFS 根池的已知问题:
您可以从镜像 ZFS 根池中的不同设备引导。根据硬件配置,可能需要更新 PROM 或 BIOS 以指定不同的引导设备。
例如,您可以从该池中的任一磁盘(c1t0d0s0 或 c1t1d0s0)引导。
# zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0
在基于 SPARC 的系统上,在 ok 提示符下输入备用磁盘。
ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1
重新引导系统后,确认活动引导设备。例如:
SPARC# prtconf -vp | grep bootpath bootpath: '/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1,0:a'
在基于 x86 的系统上,使用类似以下内容的语法:
x86# prtconf -v|sed -n '/bootpath/,/value/p' name='bootpath' type=string items=1 value='/pci@0,0/pci8086,25f8@4/pci108e,286@0/disk@0,0:a'
在基于 x86 的系统上,从相应的 BIOS 菜单中选择镜像 ZFS 根池中的备用磁盘。
SPARC 或 x86:如果您使用 zpool replace 命令替换根池磁盘,必须使用 bootadm 命令在新替换的磁盘上安装引导信息。如果您使用初始安装方法创建镜像 ZFS 根池,或者使用 zpool attach 命令向根池附加磁盘,则此步骤不是必需的。bootadm 语法如下所示:
# bootadm install-bootloader
如果要在备用根池上安装引导装载程序,请使用 -P(池)选项。
# bootadm install-bootloader -P rpool2
如果要安装 GRUB 传统引导装载程序,请使用传统 installgrub 命令。
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0
您可以从镜像 ZFS 根池中的不同设备引导。根据硬件配置,可能需要更新 PROM 或 BIOS 以指定不同的引导设备。
例如,您可以从该池中的任一磁盘(c1t0d0s0 或 c1t1d0s0)引导。
# zpool status pool: rpool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0s0 ONLINE 0 0 0 c1t1d0s0 ONLINE 0 0 0
在基于 SPARC 的系统上,在 ok 提示符下输入备用磁盘。
ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1
重新引导系统后,确认活动引导设备。例如:
SPARC# prtconf -vp | grep bootpath bootpath: '/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1,0:a'
在基于 x86 的系统上,使用类似以下内容的语法:
x86# prtconf -v|sed -n '/bootpath/,/value/p' name='bootpath' type=string items=1 value='/pci@0,0/pci8086,25f8@4/pci108e,286@0/disk@0,0:a'
在基于 x86 的系统上,从相应的 BIOS 菜单中选择镜像 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,如下所示:
激活某个 ZFS BE 后,您可以使用 boot -L 命令显示 ZFS 池中的可引导文件系统的列表。然后,您可以在列表中选择某个可引导文件系统。此时将会显示有关引导该文件系统的详细说明。您可以按照这些说明来引导选定的文件系统。
使用 boot -Z file system 命令引导特定的 ZFS 文件系统。
这种引导方法不会自动激活 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 自动引导,则将需要激活它。
在 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
如果您需要引导系统,以解决根口令丢失或类似问题,请使用以下过程。
使用以下过程解决 menu.lst 问题或 root 口令问题。如果需要替换根池中的磁盘,请参见如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)。如果需要执行完整系统(裸机)恢复,请参见第 11 章。
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 #
要解决 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 口令。
此步骤假设您在上一步中删除了未知的 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.