ASMLib/AFD (ASM筛选器驱动程序)
特定于使用AFC和ASMlib的Linux操作系统的配置主题
ASMlib块大小
ASMlib是一个可选的ASM管理库和关联实用程序。其主要价值是能够使用可读标签将LUN或基于NFS的文件标记为ASM资源。
最新版本的ASMlib会检测到一个名为逻辑块/物理块指数(Logical Blocks Per Physical Block Exponent、LBPPBE)的LUN参数。直到最近、ONTAP SCSI目标才报告此值。现在、它将返回一个值、指示首选的块大小为4 KB。这不是块大小的定义、但对于使用LBPPBE的任何应用程序来说、这是一个提示、即可以更高效地处理特定大小的I/O。但是、ASMlib会将LBPPBE解释为块大小、并在创建ASM设备时持久标记ASM标头。
此过程可能会在许多方面出现发生原因升级和迁移问题、所有这些问题都是由于无法在同一个ASM磁盘组中混用块大小不同的ASMlib设备。
例如、较早的阵列通常报告LBPPBE值为0、或者根本不报告此值。ASMlib会将此数据块大小解释为512字节。较新的阵列会被解释为块大小为4 KB。不能在同一个ASM磁盘组中混用512字节和4 KB设备。这样做会阻止用户使用两个阵列中的LUN或将ASM用作迁移工具来增加ASM磁盘组的大小。在其他情况下、RMAN可能不允许在块大小为512字节的ASM磁盘组与块大小为4 KB的ASM磁盘组之间复制文件。
首选解决方案是修补ASMlib。Oracle错误ID为13999609、此修补程序位于oracleasm-support-2.1.8-1及更高版本中。此修补程序允许用户设置参数 ORACLEASM_USE_LOGICAL_BLOCK_SIZE
to true
在中 /etc/sysconfig/oracleasm
配置文件。这样做会阻止ASMlib使用LBPPBE参数、这意味着新阵列上的LUN现在可识别为512字节块设备。
选项不会更改先前由ASMlib标记的LUN上的块大小。例如、如果必须将包含512字节块的ASM磁盘组迁移到报告4 KB块的新存储系统、则可以选择此选项 ORACLEASM_USE_LOGICAL_BLOCK_SIZE 必须在新LUN标记为ASMlib之前进行设置。 如果设备已标记为oracleasm,则必须先重新格式化,然后再重新添加新的块大小。首先、使用取消配置设备 oracleasm deletedisk ,然后使用清除设备的第一个1GB dd if=/dev/zero of=/dev/mapper/device bs=1048576 count=1024 。最后、如果设备之前已分区、请使用 kpartx 命令删除陈旧分区或仅重新启动操作系统。
|
如果无法修补ASMlib、则可以从配置中删除ASMlib。此更改会造成系统中断、需要取消ASM磁盘的附加服务、并确保 asm_diskstring
参数设置正确。但是、这种更改不需要迁移数据。
ASM筛选驱动器((AFD)块大小
AAutomatic是一个可选的ASM管理库、它将取代ASMlib。从存储角度来看、它与ASMlib非常相似、但它还包括一些其他功能、例如、可以阻止非Oracle I/O、从而降低用户或应用程序错误可能损坏数据的几率。
设备块大小
与ASMlib一样、ADAD还会读取LUN参数Logical Blocks Per Physical Block Exponent (LBPPBE)、默认情况下会使用物理块大小、而不是逻辑块大小。
如果在现有配置中添加了AAutomatic、而ASM设备已格式化为512字节块设备、则可能会出现问题。AAutomatic驱动程序会将LUN识别为4K设备、如果ASM标签与物理设备不匹配、则会阻止访问。同样、迁移也会受到影响、因为不能在同一个ASM磁盘组中混用512字节和4 KB设备。这样做会阻止用户使用两个阵列中的LUN或将ASM用作迁移工具来增加ASM磁盘组的大小。在其他情况下、RMAN可能不允许在块大小为512字节的ASM磁盘组与块大小为4 KB的ASM磁盘组之间复制文件。
解决方案非常简单—AFAS包含一个参数、用于控制它使用的是逻辑块大小还是物理块大小。此全局参数会影响系统上的所有设备。要强制AfD使用逻辑块大小、请设置 options oracleafd oracleafd_use_logical_block_size=1
在中 /etc/modprobe.d/oracleafd.conf
文件
多路径传输大小
最近的Linux内核更改会强制实施发送到多路径设备的I/O大小限制、而AFD不会遵守这些限制。然后、I/O将被拒绝、从而导致LUN路径脱机。因此、无法安装Oracle Grid、配置ASM或创建数据库。
解决方案将在多路径.conf文件中为ONTAP LUN手动指定最大传输长度:
devices { device { vendor "NETAPP" product "LUN.*" max_sectors_kb 4096 } }
即使当前不存在任何问题、如果使用AWAD来确保未来的Linux升级不会出现意外的发生原因问题、则应设置此参数。 |