跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:设备和文件系统 Oracle Solaris 11 Information Library (简体中文) |
以下任务列表介绍了为 ZFS 根文件系统设置 ZFS 根池磁盘以及为基于 SPARC 的系统设置 ZFS 非根池磁盘的过程。
|
虽然说明如何设置磁盘的过程可以结合 ZFS 文件系统使用,但是 ZFS 文件系统不直接映射到磁盘或磁盘分片。必须创建 ZFS 存储池才能创建 ZFS 文件系统。有关更多信息,请参见《Oracle Solaris 管理:ZFS 文件系统》。
根池包含用于引导 Oracle Solaris OS 的根文件系统。如果根池磁盘已损坏,且根池未进行镜像配置,则系统可能不会引导。如果根池磁盘已损坏,有两种可以恢复的方法:
可以重新安装整个 Oracle Solaris OS。
或者,可以替换根池磁盘并从快照或备份介质中恢复文件系统。可以通过创建冗余根池减少因硬件故障而导致的系统停机时间。唯一受支持的冗余根池配置是镜像根池。
用于非根池中的磁盘通常包含用户或数据文件的空间。为了获得更多磁盘空间,可以向根池或非根池附加或添加另一个磁盘。或者,可以使用以下方法替换池中损坏的磁盘。
如果所有的设备当前为 ONLINE(联机),则可以在非冗余池中替换磁盘。
如果其他设备中存在足够的冗余,则可以在冗余池中替换磁盘。
在镜像根池中,可以替换磁盘或附加磁盘,然后拆离故障磁盘或较小的磁盘,以增加池的大小。
通常情况下,在系统中设置磁盘取决于硬件,所以当在系统中添加或替换磁盘时,请查看硬件文档。如果需要将磁盘添加到现有的控制器中,那么这可能只是将磁盘插入空槽(如果系统支持热插拔)中的问题而已。如果需要配置新的控制器,请参见动态重新配置和热插拔。
|
几分钟后,将显示根提示符 (#)。
磁盘已连接或已替换之后,可以创建分片并更新磁盘标签。请转至SPARC: 如何为 ZFS 根文件系统创建磁盘分片。
必须为用于 ZFS 根池的磁盘创建磁盘分片。这是长期的引导限制。查看以下根池磁盘要求:
必须包含磁盘分片和标签 SMI (VTOC)。
根池磁盘不支持标签 EFI。
必须是单个磁盘或镜像配置的一部分。根池既不支持非冗余配置,也不支持 RAIDZ 配置。
作为 OS 映像一部分的根文件系统的所有子目录(/var 除外)必须与根文件系统处于同一数据集。
除交换和转储设备外,所有其他 Solaris OS 组件必须驻留在根池中。
通常情况下,应该创建在分片 0 中具有大量磁盘空间的磁盘分片。不推荐尝试使用磁盘上不同的分片并在不同的操作系统中共享该磁盘,或与不同的 ZFS 存储池或存储池组件一同使用。
通常情况下,安装系统时,会自动安装根池磁盘。如果需要替换根池磁盘或将新磁盘附加为镜像根池磁盘,请参见以下步骤。
有些硬件要求您在尝试通过 zpool replace 操作替换故障磁盘之前,使磁盘脱机并取消其配置。例如:
# zpool offline rpool c2t1d0s0 # cfgadm -c unconfigure c2::dsk/c2t1d0
# cfgadm -c configure c2::dsk/c2t1d0
对于某些硬件,插入替换磁盘后不必对其进行重新配置。
例如,format 命令显示 4 个连接至该系统的磁盘。
# format -e AVAILABLE DISK SELECTIONS: 0. c2t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1c,600000/scsi@2/sd@0,0 1. c2t1d0 <SEAGATE-ST336607LSUN36G-0307-33.92GB> /pci@1c,600000/scsi@2/sd@1,0 2. c2t2d0 <SEAGATE-ST336607LSUN36G-0507-33.92GB> /pci@1c,600000/scsi@2/sd@2,0 3. c2t3d0 <SEAGATE-ST336607LSUN36G-0507-33.92GB> /pci@1c,600000/scsi@2/sd@3,0
例如,c2t1d0 的分区(分片)输出显示该磁盘具有标签 EFI,因为其标识第一个和最后一个扇区。
Specify disk (enter its number): 1 selecting c2t1d0 [disk formatted] format> p PARTITION MENU: 0 - change `0' partition 1 - change `1' partition 2 - change `2' partition 3 - change `3' partition 4 - change `4' partition 5 - change `5' partition 6 - change `6' partition expand - expand label to use whole disk select - select a predefined table modify - modify a predefined partition table name - name the current table print - display the current table label - write partition map and label to the disk !<cmd> - execute <cmd>, then return quit partition> p Current partition table (original): Total disk sectors available: 71116508 + 16384 (reserved sectors) Part Tag Flag First Sector Size Last Sector 0 usr wm 256 33.91GB 71116541 1 unassigned wm 0 0 0 2 unassigned wm 0 0 0 3 unassigned wm 0 0 0 4 unassigned wm 0 0 0 5 unassigned wm 0 0 0 6 unassigned wm 0 0 0 8 reserved wm 71116542 8.00MB 71132925 partition>
例如,已使用标签 SMI 重新为 c2t1d0 磁盘设置标签,但是缺省分区表并不提供最佳分片配置。
partition> label [0] SMI Label [1] EFI Label Specify Label type[1]: 0 Auto configuration via format.dat[no]? Auto configuration via generic SCSI-2[no]? partition> p Current partition table (default): Total disk cylinders available: 24620 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 root wm 0 - 90 128.37MB (91/0/0) 262899 1 swap wu 91 - 181 128.37MB (91/0/0) 262899 2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 usr wm 182 - 24619 33.67GB (24438/0/0) 70601382 7 unassigned wm 0 0 (0/0/0) 0 partition>
设置浮动分区,以使所有未分配的磁盘空间集中在分片 0 中。然后,按下 "return"(返回)键通过分片大小字段来创建一个大的分片 0。
partition> modify Select partitioning base: 0. Current partition table (default) 1. All Free Hog Choose base (enter number) [0]? 1 Part Tag Flag Cylinders Size Blocks 0 root wm 0 0 (0/0/0) 0 1 swap wu 0 0 (0/0/0) 0 2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 usr wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 Do you wish to continue creating a new partition table based on above table[yes]? Free Hog partition[6]? 0 Enter size of partition '1' [0b, 0c, 0.00mb, 0.00gb]: Enter size of partition '3' [0b, 0c, 0.00mb, 0.00gb]: Enter size of partition '4' [0b, 0c, 0.00mb, 0.00gb]: Enter size of partition '5' [0b, 0c, 0.00mb, 0.00gb]: Enter size of partition '6' [0b, 0c, 0.00mb, 0.00gb]: Enter size of partition '7' [0b, 0c, 0.00mb, 0.00gb]: Part Tag Flag Cylinders Size Blocks 0 root wm 0 - 24619 33.92GB (24620/0/0) 71127180 1 swap wu 0 0 (0/0/0) 0 2 backup wu 0 - 24619 33.92GB (24620/0/0) 71127180 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 usr wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 Okay to make this the current partition table[yes]? Enter table name (remember quotes): "c2t1d0" Ready to label disk, continue? yes partition> quit format> quit
# zpool replace rpool c2t1d0s0 # zpool online rpool c2t1d0s0
对于某些硬件,插入替换磁盘后不必使其联机。
如果正在附加新磁盘来创建镜像根池或附加较大的磁盘来替换较小的磁盘,请使用与以下语法类似的语法:
# zpool attach rpool c0t0d0s0 c1t0d0s0
例如:
# zpool status rpool installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c2t1d0s0
仅在附加新磁盘来替换故障磁盘或较小磁盘时,本步骤才是必要步骤。
# zpool detach rpool c0t0d0s0
为 ZFS 根文件系统创建磁盘分片之后,需要恢复根池快照来恢复根池,请参见《Oracle Solaris 管理:ZFS 文件系统》中的"如何替换 ZFS 根池中的磁盘"。
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/cwtxdys0
有关更多信息,请参见installboot(1M)。
# init 6
示例 12-1 SPARC: 为 ZFS 根文件系统安装引导块
如果以物理形式替换用于根池的磁盘,并且之后重新安装了 Oracle Solaris OS,或者为根池附加新磁盘,则会自动安装引导块。如果用 zpool replace 命令替换用于根池的磁盘,那么必须手动安装引导块,以使系统可以从替换磁盘引导。
以下示例说明如何为 ZFS 根文件系统安装引导块。
# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c0t1d0s0
如果设置结合 ZFS 非根文件系统使用的磁盘,在创建池或将磁盘添加到池中时,会自动重新为该磁盘设置标签。如果使用整个磁盘创建池,或者在将整个磁盘添加到 ZFS 存储池时,则会应用标签 EFI。有关磁盘标签 EFI 的更多信息,请参见EFI 磁盘标签。
通常,大多数现代的总线类型都支持热插拔。这说明可以将磁盘插入空槽中,而且系统识别该磁盘。有关热插拔设备的更多信息,请参见第 6 章。
有关详细信息,请参阅磁盘的硬件安装指南。
有些硬件要求您在尝试通过 zpool replace 操作替换故障磁盘之前,使磁盘脱机并取消其配置。例如:
# zpool offline tank c1t1d0 # cfgadm -c unconfigure c1::dsk/c1t1d0 <Physically remove failed disk c1t1d0> <Physically insert replacement disk c1t1d0> # cfgadm -c configure c1::dsk/c1t1d0
对于某些硬件,插入替换磁盘后不必对其进行重新配置。
检查 format 实用程序的输出来查看该磁盘是否列在 AVAILABLE DISK SELECTIONS(可用的磁盘选择)之下。然后,退出 format 实用程序。
# format
# zpool replace tank c1t1d0 # zpool online tank c1t1d0
确认新磁盘可重新同步。
# zpool status tank
例如:
# zpool attach tank mirror c1t0d0 c2t0d0
确认新磁盘可重新同步。
# zpool status tank
有关更多信息,请参见《Oracle Solaris 管理:ZFS 文件系统》中的第 4 章 "管理 Oracle Solaris ZFS 存储池"。