Oracle® Solaris 11.2 发行说明

退出打印视图

更新时间: 2015 年 5 月
 
 

当 WCE LUN 获取开机重置指令时,ZFS 应重试或中止整个事务 (15662604)

ZFS 在池设备上启用写高速缓存,并在系统断电时安全地处理高速缓存刷新。但是,当数据尚未提交到稳定的存储时,可能会发生开机重置的情况。

在没有单点故障的环境中,这种情况会被自动检测到,并由 ZFS 在下一次读取数据时更正。池的例程池清理可能会增加对任何丢失的写入的检测和修复。

在有单点故障的环境中,此问题可能会导致数据丢失。

在访问从群集配置导出的的 LUN 时,此问题还可能会发生得更加频繁。在群集故障转移期间,发生故障的机头缓存的数据可能会由于存活机头上的 SCSI 目标显式发送的开机重置事件而丢失。在这种情况下,即使是没有单点故障的池也可能会受影响。

此问题的症状为持久性校验和错误群集。可以使用 fmdump –eV 的输出来确定是否已将校验和错误诊断为持久性错误。fmdump –eV 输出中的 zio_txg 条目表示写入数据块的时间。请注意,持久性校验和错误的某个模式也可能是故障设备、软件或硬件的症状。

解决方法:对于依赖从具有单点故障的群集或系统导出的 LUN 的系统,可考虑禁用系统上设备的写高速缓存。

执行以下步骤可禁用写高速缓存并禁止 SCSI (sd) 或 FC (ssd) 设备的高速缓存刷新。

  1. /kernel/drv/sd.conf 文件或 /kernel/drv/ssd.conf 文件复制到 /etc/driver/drv 目录中(具体取决于您的存储设备)。

  2. 编辑 /etc/driver/drv/sd.conf 文件或 /etc/driver/drv/ssd.conf 文件以禁用写高速缓存并禁止高速缓存刷新。

  3. 添加行以将 VIDPIDSUN COMSTAR 值替换为 sd (7D) 手册页上描述的相应值。

    SPARC 系统:

    sd-config-list="SUN COMSTAR","disable-cache-suppress-flush";
    disable-cache-suppress-flush=1,0x40010,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
    

    x64 系统:

    sd-config-list="SUN COMSTAR","disable-cache-suppress-flush";
    disable-cache-suppress-flush=1,0x40008,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1;
    
  4. 重新引导系统并覆盖快速重新引导选项。

    # reboot -p

注 -  应用该解决方法可能导致系统性能降低。