跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:ZFS 文件系统 Oracle Solaris 11.1 Information Library (简体中文) |
1. Oracle Solaris ZFS 文件系统(介绍)
如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)
如何替换 ZFS 根池中的磁盘(SPARC 或 x86/EFI (GPT))
6. 使用 Oracle Solaris ZFS 快照和克隆
7. 使用 ACL 和属性保护 Oracle Solaris ZFS 文件
以下各节提供了关于安装和更新 ZFS 根池以及配置镜像根池的信息。
Oracle Solaris 11 Live CD 安装方法在一个磁盘上安装缺省 ZFS 根池。使用 Oracle Solaris 11 自动化安装 (automated installation, AI) 方法时,可以创建 AI 清单来标识用于 ZFS 根池的磁盘或镜像磁盘。
AI 安装程序提供了一定的灵活性:可以在缺省引导磁盘上安装 ZFS 根池,也可以在标识的目标磁盘上安装 ZFS 根池。您可以指定逻辑设备(如 c1t0d0)或物理设备路径。此外,可以使用 MPxIO 标识符或设备 ID 来表示要用于安装的设备。
安装后,可查看 ZFS 存储池和文件系统信息,具体内容会因安装类型和定制选项而有所不同。例如:
# zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c8t0d0 ONLINE 0 0 0 c8t1d0 ONLINE 0 0 0 # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 11.8G 55.1G 4.58M /rpool rpool/ROOT 3.57G 55.1G 31K legacy rpool/ROOT/solaris 3.57G 55.1G 3.40G / rpool/ROOT/solaris/var 165M 55.1G 163M /var rpool/VARSHARE 42.5K 55.1G 42.5K /var/share rpool/dump 6.19G 55.3G 6.00G - rpool/export 63K 55.1G 32K /export rpool/export/home 31K 55.1G 31K /export/home rpool/swap 2.06G 55.2G 2.00G -
查看 ZFS BE 信息。例如:
# beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris NR / 3.75G static 2012-07-20 12:10
在上面的输出中,Active 字段指示 BE 当前是否处于活动状态。N 表示当前处于活动状态;R 表示重新引导时处于活动状态;NR 表示在当前以及重新引导时均处于活动状态。
缺省 ZFS 引导环境 (boot environment, BE) 的缺省名称为 solaris。可以使用 beadm list 命令来标识 BE。例如:
# beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris NR / 3.82G static 2012-07-19 13:44
在上面的输出中,NR 表示 BE 当前处于活动状态,且在重新引导时也将是活动 BE。
可以使用 pkg update 命令来更新 ZFS 引导环境。如果使用 pkg update 命令更新 ZFS BE,将自动创建并激活一个新 BE(除非对现有 BE 所作的更新极少)。
# pkg update DOWNLOAD PKGS FILES XFER (MB) Completed 707/707 10529/10529 194.9/194.9 . . .
将自动创建并激活一个新 BE solaris-1。
还可以在更新流程之外创建并激活备份 BE。
# beadm create solaris-1 # beadm activate solaris-1
# init 6 . . . # beadm list BE Active Mountpoint Space Policy Created -- ------ ---------- ----- ------ ------- solaris - - 46.95M static 2012-07-20 10:25 solaris-1 NR / 3.82G static 2012-07-19 14:45
# beadm activate solaris # init 6
为实现恢复,可能需要从其他 BE 复制或访问文件。
# beadm mount solaris-1 /mnt
# 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
# beadm umount solaris-1
如果在自动安装期间未配置镜像根池,在安装之后也可以轻松地配置镜像根池。
有关替换根池中磁盘的信息,请参见如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)。
# 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
SPARC:确认该磁盘具有 SMI (VTOC) 磁盘标签和分片 0。如果需要为磁盘重新设置标签并创建分片 0,请查看《Oracle Solaris 11.1 管理:设备和文件系统》中的"如何为 ZFS 根文件系统创建磁盘分片"。
x86:确认该磁盘具有 fdisk 分区、SMI 磁盘标签和分片 0。如果需要为磁盘重新设置分区并创建分片 0,请查看《Oracle Solaris 11.1 管理:设备和文件系统》中的"为 ZFS 根文件系统准备磁盘"。
# zpool attach rpool c2t0d0s0 c2t1d0s0 Make sure to wait until resilver is done before rebooting.
正确的磁盘标签和引导块将被自动应用。
# zpool status rpool # zpool status rpool pool: rpool state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function in a degraded state. action: Wait for the resilver to complete. Run 'zpool status -v' to see device specific details. scan: resilver in progress since Fri Jul 20 13:39:53 2012 938M scanned out of 11.7G at 46.9M/s, 0h3m to go 938M resilvered, 7.86% done config: NAME STATE READ WRITE CKSUM rpool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c2t0d0s0 ONLINE 0 0 0 c2t1d0s0 DEGRADED 0 0 0 (resilvering)
在上面的输出中,重新同步过程未完成。当您看到类似如下的消息时,说明重新同步已完成。
resilvered 11.6G in 0h5m with 0 errors on Fri Jul 20 13:57:25 2012
确定当前的 rpool 池大小:
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 29.8G 152K 29.7G 0% 1.00x ONLINE -
# zpool set autoexpand=on rpool
查看扩展后的 rpool 池大小:
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 279G 146K 279G 0% 1.00x ONLINE -
在大多数情况下,Oracle Solaris 11.1 发行版将缺省在基于 x86 的系统上安装 EFI (GPT) 标签。
如果在自动安装期间未配置镜像根池,在安装之后也可以轻松地配置镜像根池。
有关替换根池中磁盘的信息,请参见如何替换 ZFS 根池中的磁盘(SPARC 或 x86/VTOC)。
# zpool status rpool pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 errors: No known data errors
# zpool attach rpool c2t0d0 c2t1d0 Make sure to wait until resilver is done before rebooting.
正确的磁盘标签和引导块将被自动应用。
如果在根池磁盘上有定制的分区,则可能需要使用类似于以下的语法:
# zpool attach rpool c2t0d0s0 c2t1d0
# zpool status rpool pool: rpool state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function in a degraded state. action: Wait for the resilver to complete. Run 'zpool status -v' to see device specific details. scan: resilver in progress since Fri Jul 20 13:52:05 2012 809M scanned out of 11.6G at 44.9M/s, 0h4m to go 776M resilvered, 6.82% done config: NAME STATE READ WRITE CKSUM rpool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 c8t0d0 ONLINE 0 0 0 c8t1d0 DEGRADED 0 0 0 (resilvering) errors: No known data errors
在上面的输出中,重新同步过程未完成。当您看到类似如下的消息时,说明重新同步已完成。
resilvered 11.6G in 0h5m with 0 errors on Fri Jul 20 13:57:25 2012
确定当前的 rpool 池大小:
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 29.8G 152K 29.7G 0% 1.00x ONLINE -
# zpool set autoexpand=on rpool
查看扩展后的 rpool 池大小:
# zpool list rpool NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT rpool 279G 146K 279G 0% 1.00x ONLINE -
由于以下原因,您可能需要替换根池中的磁盘:
根池太小,您想使用较大的磁盘替换它
根池磁盘发生故障。在非冗余池中,如果磁盘发生故障导致系统无法引导,则需要在替换根池磁盘前从备用介质(如 CD 或网络)进行引导。
如果使用 zpool replace 命令替换根池磁盘中的磁盘,需要手动应用引导块。
在镜像根池配置下,可以尝试替换磁盘,而不一定要从备用介质引导。可以使用 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 online rpool c1t0d0s0 # zpool replace rpool c1t0d0s0 # zpool status rpool <Let disk resilver before installing the boot blocks> # bootadm install-bootloader
对于一些硬件,插入替换磁盘后不必使其联机并进行配置。
SPARC:确认替换(新)磁盘具有 SMI (VTOC) 标签和分片 0。有关为用作根池的磁盘重新设置标签的信息,请参见《Oracle Solaris 11.1 管理:设备和文件系统》中的"如何为磁盘设置标签"。
x86:确认该磁盘具有 fdisk 分区、SMI 磁盘标签和分片 0。如果需要为磁盘重新设置分区并创建分片 0,请查看《Oracle Solaris 11.1 管理:设备和文件系统》中的"如何为 ZFS 根文件系统设置磁盘"。
例如:
# zpool attach rpool c2t0d0s0 c2t1d0s0 Make sure to wait until resilver is done before rebooting.
正确的磁盘标签和引导块将被自动应用。
例如:
# zpool status rpool pool: rpool state: ONLINE scan: resilvered 11.7G in 0h5m with 0 errors on Fri Jul 20 13:45:37 2012 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
例如,在基于 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
例如:
# zpool detach rpool c2t0d0s0
# zpool set autoexpand=on rpool
或者,扩展设备:
# zpool online -e c2t1d0s0
SPARC:通过使用引导 PROM 中的 eeprom 命令或 setenv 命令,将系统设置为自动从新磁盘引导。
x86:重新配置系统 BIOS。
在大多数情况下,Oracle Solaris 11.1 发行版将缺省在基于 x86 的系统上安装 EFI (GPT) 标签。
由于以下原因,您可能需要替换根池中的磁盘:
根池太小,您想使用较大的磁盘替换它
根池磁盘发生故障。在非冗余池中,如果磁盘发生故障导致系统无法引导,则需要在替换根池磁盘前从备用介质(如 CD 或网络)进行引导。
如果使用 zpool replace 命令替换根池磁盘中的磁盘,需要手动应用引导块。
在镜像根池配置下,可以尝试替换磁盘,而不一定要从备用介质引导。可以使用 zpool replace 命令替换故障磁盘,如果有额外的磁盘,则可使用 zpool attach 命令。有关附加额外磁盘和分离根池磁盘的示例,请参见以下步骤。
具有 SATA 磁盘的系统要求您在尝试通过 zpool replace 操作替换故障磁盘之前使磁盘脱机并取消其配置。例如:
# zpool offline rpool c1t0d0 # cfgadm -c unconfigure c1::dsk/c1t0d0 <Physically remove failed disk c1t0d0> <Physically insert replacement disk c1t0d0> # cfgadm -c configure c1::dsk/c1t0d0 # zpool online rpool c1t0d0 # zpool replace rpool c1t0d0 # zpool status rpool <Let disk resilver before installing the boot blocks> x86# bootadm install-bootloader
对于一些硬件,插入替换磁盘后不必使其联机并进行配置。
例如:
# zpool attach rpool c2t0d0 c2t1d0 Make sure to wait until resilver is done before rebooting.
正确的磁盘标签和引导块将被自动应用。
例如:
# zpool status rpool pool: rpool state: ONLINE scan: resilvered 11.6G in 0h5m with 0 errors on Fri Jul 20 12:06:07 2012 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 errors: No known data errors
例如:
# zpool detach rpool c2t0d0
# zpool set autoexpand=on rpool
或者,扩展设备:
# zpool online -e c2t1d0
重新配置系统 BIOS。
如果要在另一个根池中重新创建现有的 BE,请按照下面的步骤操作。您可以修改这些步骤,具体取决于您是希望获得具有独立的交换和转储设备的两个类似 BE,还是仅希望在另一个根池中获得共享交换和转储设备的一个 BE。
从第二个根池中的新 BE 激活和引导后,关于第一个根池中以前 BE 的信息将不再存在。如果要引导回原始 BE,将需要从原始根池的引导磁盘手动引导系统。
# zpool create rpool2 c4t2d0s0
# beadm create -p rpool2 solaris2
# zpool set bootfs=rpool2/ROOT/solaris2 rpool2
# beadm activate solaris2
ok boot disk2
系统应该在新 BE 之下运行。
# zfs create -V 4g rpool2/swap
/dev/zvol/dsk/rpool2/swap - - swap - no -
# zfs create -V 4g rpool2/dump
# dumpadm -d /dev/zvol/dsk/rpool2/dump
SPARC-通过使用引导 PROM 中的 eeprom 命令和 setenv 命令,将系统设置为自动从新磁盘引导。
x86-重新配置系统 BIOS。
# init 6
在大多数情况下,Oracle Solaris 11.1 发行版将缺省在基于 x86 的系统上安装 EFI (GPT) 标签。
如果要在另一个根池中重新创建现有的 BE,请按照下面的步骤操作。您可以修改这些步骤,具体取决于您是希望获得具有独立的交换和转储设备的两个类似 BE,还是仅希望在另一个根池中获得共享交换和转储设备的一个 BE。
从第二个根池中的新 BE 激活和引导后,关于第一个根池中以前 BE 的信息将不再存在。如果要引导回原始 BE,将需要从原始根池的引导磁盘手动引导系统。
# zpool create -B rpool2 c2t2d0
或者,创建一个镜像备用根池。例如:
# zpool create -B rpool2 mirror c2t2d0 c2t3d0
# beadm create -p rpool2 solaris2
# bootadm install-bootloader -P rpool2
# zpool set bootfs=rpool2/ROOT/solaris2 rpool2
# beadm activate solaris2
SPARC-通过使用引导 PROM 中的 eeprom 命令和 setenv 命令,将系统设置为自动从新磁盘引导。
x86-重新配置系统 BIOS。
系统应该在新 BE 之下运行。
# zfs create -V 4g rpool2/swap
/dev/zvol/dsk/rpool2/swap - - swap - no -
# zfs create -V 4g rpool2/dump
# dumpadm -d /dev/zvol/dsk/rpool2/dump
# init 6