Skip Navigation Links | |
Exit Print View | |
![]() |
Oracle Solaris Administration: ZFS File Systems Oracle Solaris 11 Information Library |
1. Oracle Solaris ZFS File System (Introduction)
2. Getting Started With Oracle Solaris ZFS
3. Oracle Solaris ZFS and Traditional File System Differences
4. Managing Oracle Solaris ZFS Storage Pools
5. Managing ZFS Root Pool Components
Managing ZFS Root Pool Components (Overview)
ZFS Root Pool Space Requirements
ZFS Root Pool Configuration Requirements
Troubleshooting ZFS Root Pool Installation Problems
How to Update Your ZFS Boot Environment
How to Configure a Mirrored Root Pool
How to Replace a Disk in a ZFS Root Pool
How to Create a BE in Another Root Pool
Managing Your ZFS Swap and Dump Devices
Adjusting the Sizes of Your ZFS Swap and Dump Devices
Troubleshooting ZFS Dump Device Issues
Booting From a ZFS Root File System
Booting From an Alternate Disk in a Mirrored ZFS Root Pool
Booting From a ZFS Root File System on a SPARC Based System
Booting From a ZFS Root File System on an x86 Based System
6. Managing Oracle Solaris ZFS File Systems
7. Working With Oracle Solaris ZFS Snapshots and Clones
8. Using ACLs and Attributes to Protect Oracle Solaris ZFS Files
9. Oracle Solaris ZFS Delegated Administration
10. Oracle Solaris ZFS Advanced Topics
11. Oracle Solaris ZFS Troubleshooting and Pool Recovery
12. Archiving Snapshots and Root Pool Recovery
13. Recommended Oracle Solaris ZFS Practices
Both SPARC based and x86 based systems boot with a boot archive, which is a file system image that contains the files required for booting. When booting from a ZFS root file system, the path names of both the boot archive and the kernel file are resolved in the root file system that is selected for booting.
Booting from a ZFS file system differs from booting from a UFS file system because with ZFS, a device specifier identifies a storage pool, not a single root file system. A storage pool can contain multiple bootable ZFS root file systems. When booting from ZFS, you must specify a boot device and a root file system within the pool that was identified by the boot device.
By default, the file system selected for booting is the one identified by the pool's bootfs property. This default selection can be overridden by specifying an alternate bootable file system that is included in the boot -Z command on a SPARC system or by selecting an alternate boot device from the BIOS on an x86 based system.
You can attach a disk to create a mirrored ZFS root pool after installation. For more information about creating a mirrored root pool, see How to Configure a Mirrored Root Pool.
Review the following known issues regarding mirrored ZFS root pools:
If you replace a root pool disk by using the zpool replace command, you must install the boot information on the newly replaced disk by using the installboot or installgrub commands. If you create a mirrored ZFS root pool with the initial installation method or if you use the zpool attach command to attach a disk to the root pool, then this step is unnecessary. The installboot or installgrub command is as follows:
sparc# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c0t1d0s0
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0
You can boot from different devices in a mirrored ZFS root pool. Depending on the hardware configuration, you might need to update the PROM or the BIOS to specify a different boot device.
For example, you can boot from either disk (c1t0d0s0 or c1t1d0s0) in this pool.
# 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
On a SPARC based system, enter the alternate disk at the ok prompt.
ok boot /pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1
After the system is rebooted, confirm the active boot device. For example:
SPARC# prtconf -vp | grep bootpath bootpath: '/pci@7c0/pci@0/pci@1/pci@0,2/LSILogic,sas@2/disk@1,0:a'
On an x86 based system, use syntax similar to the following:
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'
On an x86 based system, select an alternate disk in the mirrored ZFS root pool from the appropriate BIOS menu.
On a SPARC based system with multiple ZFS BEs, you can boot from any BE by using the beadm activate command.
During an installation and beadm activation process, the ZFS root file system is automatically designated with the bootfs property.
Multiple bootable file systems can exist within a pool. By default, the bootable file system entry in the /pool-name/boot/menu.lst file is identified by the pool's bootfs property. However, a menu.lst entry can contain a bootfs command, which specifies an alternate file system in the pool. In this way, the menu.lst file can contain entries for multiple root file systems within the pool.
When a system is installed with a ZFS root file system, an entry similar to the following is added to the menu.lst file:
title Oracle Solaris 11 solaris SPARC bootfs rpool/ROOT/solaris
When a new BE is created, the menu.lst file is updated automatically.
On a SPARC based system, two boot options are available:
After a ZFS BE is activated, you can use the boot -L command to display a list of bootable file systems within a ZFS pool. Then, you can select one of the bootable file systems in the list. Detailed instructions for booting that file system are displayed. You can boot the selected file system by following the instructions.
Use the boot -Z file system command to boot a specific ZFS file system.
Example 5-1 Booting From a Specific ZFS Boot Environment
If you have multiple ZFS BEs in a ZFS storage pool on your system's boot device, you can use the beadm activate command to specify a default BE.
For example, the following ZFS BEs are available as described by the beadm output:
# 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
If you have multiple ZFS BEs on your SPARC based system, you can use the boot -L command. For example:
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
Keep in mind that the BE that is booted with the above command is not activated for the next reboot. If you want to continue to boot automatically from the BE that is selected during the boot -Z operation, you will need to activate it.
The following entries are added to the /pool-name/boot/grub/menu.lst file during the installation process or beadm activate operation to boot ZFS automatically:
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
If the device identified by GRUB as the boot device contains a ZFS storage pool, the menu.lst file is used to create the GRUB menu.
On an x86 based system with multiple ZFS BEs, you can select a BE from the GRUB menu. If the root file system corresponding to this menu entry is a ZFS file system, the following option is added.
-B $ZFS-BOOTFS
Example 5-2 x86: Booting a ZFS File System
When booting from a ZFS file system, the root device is specified by the boot -B $ZFS-BOOTFS parameter. For example:
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
Example 5-3 x86: Fast Rebooting a ZFS Root File System
The fast reboot feature provides the ability to reboot within seconds on x86 based systems. With the fast reboot feature, you can reboot to a new kernel without experiencing the long delays that can be imposed by the BIOS and boot loader. The ability to fast reboot a system drastically reduces down time and improves efficiency.
You must still use the init 6 command when transitioning between BEs with the beadm activate command. For other system operations where the reboot command is appropriate, you can use the reboot -f command. For example:
# reboot -f
Use the following procedure if you need to boot the system so that you can recover from a lost root password or similar problem.
Use the procedure below to resolve a problem with a menu.lst problem or a root password problem. If you need to replace a disk in root pool, see How to Replace a Disk in a ZFS Root Pool. If you need to perform complete system (bare metal) recovery, see Chapter 12, Archiving Snapshots and Root Pool Recovery.
x86: Live Media – Boot from the installation media and use a GNOME terminal for the recovery procedure.
SPARC: Text installation – Boot from the install media or from the network, and select option 3 Shell from the text installation screen.
x86: Text installation – From the GRUB menu, select the Text Installer and command line boot entry, then select the option 3 Shell from the text installation screen.
SPARC: Automated installation – Use the following command to boot directly from an installation menu that allows you to exit to a shell.
ok boot net:dhcp
x86: Automated installation – Booting from an install server on the network requires a PXE boot. Select the Text Installer and command line entry from the GRUB menu. Then, select the option 3 Shell from the text installation screen.
For example, after the system is booted, select option 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 #
Resolve a bad root shell by booting the system to single-user mode and correcting the shell entry in the /etc/passwd file.
On an x86 system, edit the selected boot entry and add the -s option.
For example, on a SPARC system, shut down the system and boot to single-mode. After you log in as root, edit the /etc/passwd file, and fix the root shell entry.
# 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.
Resolve a problem with a menu.lst boot entry.
First, you must boot from media or the network by using one of the boot methods listed in step 1. Then, import the root pool and fix the menu.lst entry.
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
Confirm that the system boots successfully.
Resolve an unknown root password that prevents you from logging into the system.
First, you must boot from media or the network by using one of the boot methods listed in step 1. Then, import the root pool (rpool) and mount the BE to remove the root password entry. This process is identical on SPARC and x86 platforms.
# 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
Go to the next step to set the root password.
This step assumes that you have removed an unknown root password in the previous step.
On an x86 system, edit the selected boot entry and add the -s option.
On a SPARC system, boot the system to single-user mode, log in as root, and set the root password. For example:
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.