Solaris 10 发行版中存在下列文件系统错误。
请勿使镜像 ZFS 根配置中的主磁盘脱机。系统将无法从镜像根池配置中已脱机的磁盘引导。
解决方法:要分离一个镜像根磁盘以便进行更换,或者要使该磁盘脱机,请从池中的另一个镜像磁盘引导。选择下列方法之一:
重新使镜像 ZFS 根池中的主磁盘联机。例如:
# zpool online rpool c0t1d0s0 |
如果主磁盘出现故障或者需要更换,请从池中的另一个磁盘引导。
如果您使用 lucreate 命令创建 ZFS 根文件系统,且 LOCALE 设置为非英文语言环境,则创建 ZFS 转储卷会失败。将显示以下错误消息:
ERROR: Unable to determine dump device for boot environment <{c1t1d0s0}>. ERROR: Unable to create all required file systems for boot environment <zfsUp6>. ERROR: Cannot make file systems for boot environment <zfsUp6>. |
解决方法:请选择以下解决方法之一:
在 lucreate 命令中包含语言环境设置。例如:
# LC_ALL=C lucreate -n zfsUp6 -p rpool |
如果在非英文语言环境中执行 lucreate 操作期间收到转储设备故障消息,您可以手动创建 ZFS 转储卷。例如:
# zfs create -V 2G -b 128k rpool/dump |
使用 Solaris Live Upgrade 将 UFS 根文件系统转换成 ZFS 后,未将 bootlst 命令复制到正确的位置。该错误将导致 boot -L 命令不起作用。将显示以下错误消息:
Evaluating: boot -L The file just loaded does not appear to be executable. Boot device: /pci@1f,0/pci@1/scsi@8/disk@1,0:a File and args: Can't mount root Error in Fcode execution !!! Evaluating: boot The file just loaded does not appear to be executable. |
解决方法:将 bootlst 命令从 /platform/`uname -m`/bootlst 复制到 /root pool/platform/`uname -m`/bootlst。例如,如果根池是 rpool,请键入以下命令:
# cp -p /platform/`uname -m`/bootlst /rpool/platform/`uname -m`/bootlst |
使用下列命令在 32 位模式下引导系统时,bootadm 命令无法建构具有正确格式的 GRUB 菜单项:
reboot kernel/unix
reboot -- -r
因此,系统将在 64 位模式下引导。出现错误的 menu.lst 文件可能显示为:
findroot rootfs0 kernel /platform/i86pc/kernel/unix module /platform/i86pc/boot_archive |
在上例中,内核行未包含多引导信息,因此是不正确的。不会显示任何错误消息。
解决方法:手动编辑 /boot/grub/menu.lst 文件,添加以下信息:
title Solaris 10 10/08 findroot rootfs0 kernel /platform/i86pc/multiboot kernel/unix module /platform/i86pc/boot_archive |
完成这些更改后,系统将在 32 位模式下引导。
您对 menu.lst 文件所做的更改在每次系统重新引导后都持续有效。
也可以在引导时编辑 GRUB 菜单,添加 kernel/unix 引导参数,如下例所示:
grub edit> kernel /platform/i86pc/multiboot kernel/unix |
通过在引导时编辑 GRUB 菜单所做的更改在系统重新引导后不再有效。
有关更多信息,请参见《系统管理指南:基本管理》中的“在基于 x86 的系统上修改引导行为”。
在将设备连接到根池以便创建镜像根池时,如果将整个磁盘添加到池,则 zpool attach 可能会创建非法的根池。必须使用磁盘片而不是整个磁盘来创建 ZFS 根池。如果尝试从添加到镜像根池的整个磁盘引导,则系统将无法引导。
解决方法: 请执行以下步骤:
从池中分离磁盘。例如
# zpool detach rpool c0t2d0 |
将磁盘标号更改为 VTOC (SMI) 标号。例如:
# format -e . . . Select disk c0t2d0 format> label [0] SMI Label [1] EFI Label Specify Label type[0]:0 Ready to label disk, continue? yes format> quit |
将磁盘片重新添加到池中,以创建镜像根池。例如:
# zpool attach rpool c0t2d0s0 |
另请参见zpool attach 命令不复制 bootblock 信息 (6668666)。
在 SPARC 平台上,需要在根池的数据集中创建 menu.lst 文件。不会显示任何错误消息。
解决方法:手动创建 menu.lst 文件。例如,如果 ZFS 根池 rpool 中有两个 ZFS 引导环境 zfs1008BE 和 zfs10082BE,则键入下列命令:
# mkdir -p /rpool/boot # cd /rpool/boot # vi menu.lst |
在 menu.lst 文件中添加下列条目:
title zfs1008BE bootfs rpool/ROOT/zfs1008BE title zfs10082BE bootfs rpool/ROOT/zfs10082BE |
如果使用 zpool attach 命令将磁盘添加到 ZFS 根池,则不会将 bootblock 信息复制到新添加的磁盘中。该问题不影响在初始安装时创建的镜像 ZFS 根池。系统不会从镜像根池中的备用磁盘引导。
解决方法:请选择以下解决方法之一:
在 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 |
在 Intel 多处理器系统上,ata 驱动程序可能会在系统引导过程中超时。当根设备所在的驱动器具有绑定到传统 ata 驱动程序的 HBA 控制器时,会出现这样的超时。在系统引导过程中,这样的超时会导致暂时挂起、硬挂起或出现紧急情况,控制台上会出现类似如下的消息:
scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: reset bus, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: early timeout, target=0 lun=0 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): Error for command 'read sector' Error Level: Informational gda: [ID 107833 kern.notice] Sense Key: aborted command gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): Error for command 'read sector' Error Level: Informational gda: [ID 107833 kern.notice] Sense Key: aborted command gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: abort request, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: abort device, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: reset target, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: reset bus, target=0 lun=0 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0 (ata0): timeout: early timeout, target=0 lun=0 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): Error for command 'read sector' Error Level: Informational gda: [ID 107833 kern.notice] Sense Key: aborted command gda: [ID 107833 kern.notice] Vendor 'Gen-ATA ' error code: 0x3 gda: [ID 107833 kern.warning] WARNING: /pci@0,0/pci-ide@1f,2/ide@0/cmdk@0,0 (Disk0): |
解决方法:请选择以下解决方法之一:
为了避免性能下降,解决方法 3 或 4 只应在解决方法 5 尚不可用时临时使用。
解决方法 1: 如果系统上有 AHCI,请在 BIOS 中启用它。启用此设置会要求重新安装 Solaris OS。
解决方法 2: 在其中的控制器不使用 ata 驱动程序的磁盘上安装 Solaris。
解决方法 3: 在 BIOS 设置中禁用 MP,以便只有一个处理器处于活动状态。
解决方法 4: 在 Solaris 中禁用 MP,以便只有一个处理器处于活动状态。从 Grand Unified Bootloader (GRUB) 菜单中执行以下步骤:
键入 e 编辑选定的 Solaris 项。
导航到以 kernel 开头的行。
键入 e 切换到 GRUB 编辑模式。
将 -kd 附加到该行。
按 Enter 键接受更改。
键入 b 使用选定的 Solaris 项进行引导。
在 kbmd 提示符下,键入以下命令:
use_mp/W 0 :c |
如果执行系统引导,则继续步骤 10。否则,请安装 Solaris 10 10/08 软件。
在安装结束时,请重新引导系统。重复步骤 1 至 7。
为了使所做的更改永久生效,以便不必在后续的引导过程中重复上述步骤,请执行以下操作:
在完成系统引导之后成为超级用户。
打开 /etc/system 文件。
添加以下行:
set use_mp = 0 |
解决方法 5: 禁用微代码更新。键入以下命令:
# mv /platform/i86pc/ucode /platform/i86pc/ucode.disabled |
在系统引导之后,可以手动调用微代码更新:
# ucodeadm -u /platform/i86pc/ucode.disabled/intel-ucode.txt |
如果最初为非全局区域配置了使用 `add fs 子命令挂载的 ZFS 文件系统,并指定了 mountpoint=legacy,则后续区域安装会失败。将显示以下错误消息:
ERROR: No such file or directory: cannot mount </zones/path/root/usr/local> in non-global zone to install: the source block device or directory </path/local> cannot be accessed |
解决方法: 安装了非全局区域后,添加对 ZFS 文件系统的访问权限。
ZFS 旨在成为与 POSIX 兼容的文件系统,并且在大多数情况下,ZFS 与 POSIX 兼容。但是,存在两种 ZFS 不能达到 POSIX 兼容测试标准的边界情况:
更新 ZFS 文件系统容量统计信息。
修改达到容量极限的文件系统的现有数据。
相关 CR:
6362314
6362156
6361650
6343113
6343039
6742203
如果使用 fdisk -E 命令修改 ZFS 存储池使用的磁盘,该存储池将不可用,并可能导致 I/O 故障或系统出现紧急情况。
解决方法:
请勿使用 fdisk 命令修改 ZFS 存储池使用的磁盘。如果要访问 ZFS 存储池使用的磁盘,请使用 format 实用程序。通常情况下,不应修改文件系统正在使用的磁盘。
以下是 Brightstor ARCserve Backup 产品存在的一些问题。
BrightStor ARCserve Backup (BAB) Client Agent for UNIX (Solaris) 可用于备份和恢复 ZFS 文件。
但在备份过程中不保留 ZFS NFSv4 样式 ACL。将保留传统 UNIX 文件权限和属性。
解决方法:如果要保留具有 NFSv4 样式 ACL 的 ZFS 文件,请使用带有 -p 选项的 tar 命令或带有 -P 选项的 cpio 命令将 ZFS 文件写入一个文件。然后,使用 BAB 备份 tar 或 cpio 归档文件。
如果在运行 Solaris 10 6/06 发行版之前版本的系统(该系统中没有 embedded_su 修补程序)中添加 Solaris 10 10/08 发行版中的 SUNWzfsg 软件包,则 ZFS Administration 应用程序向导无法完全正常工作。
如果尝试在没有 embedded_su 修补程序的系统上运行 ZFS Administration 应用程序, 您将只能浏览 ZFS 配置。将显示以下错误消息:
/usr/lib/embedded_su: not found |
解决方法:
在运行 Solaris 10 6/06 发行版之前版本的系统中添加 embedded_su 修补程序 (119574-02)。
对于一个使用 Solaris iSCSI 软件启动器连接的目标设备,如果主机的文件系统 I/O 出现了紧急情况,该 I/O 可能无法刷新或同步该目标设备。这种无法刷新或同步的情况可能导致文件系统损坏。不会显示任何错误消息。
解决方法:
使用日志文件系统(如 UFS)。从 Solaris 10 开始,缺省情况下启用 UFS 日志记录功能。有关 UFS 的更多信息,请参见《系统管理指南:设备和文件系统》中的“Solaris 10 发行版中文件系统方面的新增功能”。
将 NFSv4 服务器从 Solaris Express 6/05 升级到 Solaris Express 7/05 或更高版本(包括所有 Solaris 10 更新)之后,程序可能会遇到 EACCES 错误。另外,各目录可能错误地显示为空。
要避免这些错误,请卸载,然后重新挂载客户机文件系统。在卸载失败的情况下,可能需要通过使用 umount -f 强制卸载文件系统。另外,也可以重新引导客户机。
如果使用不同的 Solaris 10 早期版本在网络中安装客户机和服务器,则 NFSv4 访问控制列表 (ACL) 功能可能无法正常运行。使用这些功能的受影响的 ACL 功能和命令行实用程序如下所示:
acl()
facl()
getfacl
setfacl
有关这些功能和实用程序的更多信息,请参见它们各自的手册页。
例如,在包含下列配置的网络中可能观察到错误:
运行 Solaris 10 Beta 软件的客户机
运行 Solaris 10 软件的服务器
下表说明对于不同的 Solaris 10 发行版,客户机-服务器配置中的 ACL 功能的结果。
操作 |
客户机 S10 OS |
服务器 S10 OS |
结果 |
---|---|---|---|
获取 ACL |
S10 Beta |
S10 OS |
创建 ACL * |
获取 ACL |
S10 OS |
S10 Beta |
正常运行 |
设置 ACL |
S10 Beta |
S10 OS |
正常运行 |
设置 ACL |
S10 OS |
S10 Beta |
错误: EOPNOTSUP |
解决方法: 要使 NFSv4 ACL 功能正常,请在服务器和客户机上完全安装 Solaris 10 OS。
在当前 Solaris 10 版本中,NFSv4 访问控制列表 (ACL) 的 Solaris 实现现在与 RFC 3530 规范兼容。不过,在使用 Solaris 10 Beta 2 或 Beta 1 版本的 NFSv4 客户机上发生错误。这些客户机不能在使用当前 Solaris 10 发行版的 NFSv4 服务器中创建文件。将显示以下错误消息:
NFS getacl failed for server_name: error 9 (RPC: Program/version mismatch) |
解决方法: 无。
mkfs 命令可能无法在具有某一特定磁盘几何参数 (disk geometry) 且大小超过 8 GB 的磁盘上创建文件系统。由此得到的柱面组大小对于 1 KB 碎片来说太大。柱面组的大小过大意味着在一个块中无法容纳多余的元数据。
将显示以下错误消息:
With 15625 sectors per cylinder, minimum cylinders per group is 16. This requires the fragment size to be changed from 1024 to 4096. Please re-run mkfs with corrected parameters. |
解决方法: 改用 newfs 命令。或者,如果使用 mkfs 命令,请指定较大的碎片大小(如 4096)。
系统在大小大于或等于 1 TB 的分区上不能生成转储。如果系统中存在此类设备,则在系统引导后,在发生系统紧急情况后可能发生下列问题:
系统不保存转储。
将显示以下消息:
0% done: 0 pages dumped, compression ratio 0.00, dump failed: error 6 |
解决方法: 将系统的转储设备大小配置为小于 1 TB。
如果使用 smosservice 命令将 OS 服务添加到 UFS 文件系统,会显示没有足够可用磁盘空间的消息。此错误特定于贴有 EFI 标签的磁盘上的 UFS 文件系统。
解决方法: 完成以下解决方法。
应用 SMI VTOC 磁盘标签。
重新创建文件系统。
重新运行 smosservice 命令。