跳过导航链接 | |
退出打印视图 | |
![]() |
Sun QFS 文件系统 5.3 配置和管理指南 Sun QFS and Sun Storage Archive Manager 5.3 Information Library (简体中文) |
Sun QFS 文件系统经过调整后可以处理大小不等的各种文件。通过启用文件系统设置,您可以增强大型文件的磁盘文件传输性能。
Oracle Solaris /etc/system 文件中的 maxphys 参数控制着设备驱动程序每一次读取或写入的最大字节数。根据 Oracle Solaris OS 的级别,maxphys 参数的默认值可能会有所不同,但通常在 128 KB 左右。
将以下行添加到 /etc/system,将 maxphys 设置为 1 MB:
set maxphys = 0x100000
注 - 必须将 maxphys 值设置为 2 的幂。
sd 驱动程序通过在 /kernel/drv/sd.conf 文件中查找 sd_max_xfer_size 定义来启用特定文件的大型传输。如果不存在此定义,则驱动程序将使用 sd 设备驱动程序定义中定义的值 sd_max_xfer_size(即 1024 x 1024 字节)。
要启用和鼓励使用大型传输,请在 /kernel/drv/sd.conf 文件末尾添加以下行:
sd_max_xfer_size=0x800000;
ssd 驱动程序通过在 /kernel/drv/ssd.conf 文件中查找 ssd_max_xfer_size 定义来启用特定文件的大型传输。如果不存在此定义,则驱动程序将使用 ssd 设备驱动程序定义中定义的值 ssd_max_xfer_size(即 1024 x 1024 字节)。
在 /kernel/drv/ssd.conf 文件末尾添加以下行:
ssd_max_xfer_size=0x800000;
注 - 在 Oracle Solaris 10 x86 平台上,将在 /kernel/drv/sd.conf 文件中进行此更改。要使最大传输大小为 8 MB,请添加以下行:
sd_max_xfer_size=0x800000
此步骤仅影响分页 I/O。
writebehind 参数指定在 Sun QFS 文件系统上执行分页 I/O 时文件系统延后写入的字节数。使 writebehind 值与 RAID 的读取-修改-写入值的倍数相匹配可以提高性能。
此参数以 KB 为单位,并按 8 KB 的倍数进行取整。如果已设置此参数,则在执行直接 I/O 时将忽略此参数。writebehind 的默认值是 512 KB。此值有利于大型块连续 I/O。
对于硬件和软件 RAID-5,请将 writebehind 大小设置为 RAID 5 分散读写大小的倍数。RAID-5 分散读写大小等于数据磁盘数乘以配置的分散读写宽度。
例如,假设您配置的 RAID-5 设备有三个数据磁盘和一个奇偶磁盘 (3+1),而分散读写宽度为 16 KB。则 writebehind 值应为 48 KB、96 KB 或其他倍数,以避免产生读取-修改-写入 RAID-5 奇偶开销。对于 Sun QFS 文件系统,DAU(sammkfs -a 命令)也应该是 RAID-5 分散读写大小的倍数。这种分配可以确保块的连续性。
重新设置 writebehind 大小后,应测试系统性能。以下示例显示了对磁盘写入计时的测试:
# timex dd if=/dev/zero of=/sam/myfile bs=256k count=2048
您可以从挂载选项、在 samfs.cmd 文件中、/etc/vfstab 文件中或通过 samu 实用程序中的命令设置 writebehind 参数。有关从挂载选项启用此设置的信息,请参见 mount_samfs(1M) 手册页中的 -o writebehind=n 选项。有关通过 samfs.cmd 文件启用此设置的信息,请参见《Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual》中的"samfs.cmd(4)"。有关在 samu(1M) 中启用此设置的信息,请参见《Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual》中的"samu(1M)"。
readahead 参数指定在 Sun QFS 文件系统上执行分页 I/O 时文件系统提前读取的字节数。此参数以 KB 为单位,并按 8 KB 的倍数进行取整。如果已设置此参数,则在执行直接 I/O 时将忽略此参数。
增加 readahead 参数的大小可增强大型文件的传输性能,但性能增强的幅度很小。重新设置 readahead 大小后,应测试系统性能,直到传输速率不再提高为止。以下示例显示了一种测试磁盘读取计时的方法:
# timex dd if=/sam/myfile of=/dev/null bs=256k
您应针对自己的环境测试不同的 readahead 大小。应将 readahead 参数的大小设置为能够增强分页 I/O 的 I/O 性能,但不能大到影响性能。还应考虑内存容量和并发流数。如果设置的 readahead 值乘以流数得到的值大于内存容量,则可能会导致分页崩溃。
readahead 的默认值是 1024 KB。此值有利于大型块连续 I/O。对于小型块、随机 I/O 的应用程序,请将 readahead 设置为一般请求大小。数据库应用程序自身具有提前读取功能,因此对于这些应用程序,请将 readahead 设置为 0。
可以从挂载选项、在 samfs.cmd 文件中、/etc/vfstab 文件中,或通过 samu 实用程序中的命令启用 readahead 设置。有关从挂载选项启用此设置的信息,请参见 mount_samfs(1M) 手册页中的 -o readahead=n 选项说明。有关通过 samfs.cmd 文件启用此设置的信息,请参见《Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual》中的"samfs.cmd(4)"。有关在 samu(1M) 中启用此设置的信息,请参见《Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual》中的"samu(1M)"。
mount 命令的 -o stripe=n 选项指定文件系统的分散读写宽度。分散读写宽度基于磁盘分配单元 (DAU) 的大小。n 参数指定将 n x DAU 个字节写入一个设备之后,才会转为写入下一个设备。可以通过 sammkfs -a 命令,在文件系统初始化时设置 DAU 的大小。
如果设置了 -o stripe=0,则使用循环分配方法将文件分配到文件系统设备。采用该方法时,系统将每个文件尽可能分配在某一个设备上,直至填满该设备为止。对于多流环境,循环分配是首选设置。如果将 -o stripe=n设置为大于零的整数,则使用分散读写方法将文件分配到文件系统设备。要确定适当的 -o stripe=n 设置,请尝试不同的设置以获得最佳读取性能。对于带有请求的带宽的全包 (turnkey) 应用程序,分散读写是首选设置。
您也可以通过 /etc/vfstab 文件或 samfs.cmd 文件设置分散读写宽度。
有关 mount 命令的更多信息,请参见《Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual》中的"mount_samfs(1M)"。有关 samfs.cmd 文件的更多信息,请参见《Sun QFS and Sun Storage Archive Manager 5.3 Reference Manual》中的"samfs.cmd(4)"。