【译】ZFS最佳实践指南-Part2
2012-03-22 21:29
281 查看
1.2 存储池性能事项
1.2.1 通用存储池性能事项
为了更佳的性能,请使用单个磁盘或至少只是由少数盘组成的LUN。通过使ZFS于LUN的设置中更可见,ZFS能够提供更佳的I/O调度决策。
依赖于作业量,当前的ZFS的实现相比于其他的基于分页的文件系统可以不时的使更多I/O被请求。如果吞吐量正在流向存储,由iostat来观察,其已接近存储和主机之间的信道链路的容量,调小zfsrecordsize属性一般能提高性能。这种调整是动态的,但只是对新文件创建有影响。已存在的文件还是保持其原有的recordsize。
调节recordsize对顺序类型的负载没有帮助。调节recordsize的方式是针对使用随机少量的读写来密集的处理大文件的情况来提升作业量。
请参考ZFS与数据库建议
当前,存储池的性能可能会因为存储池很满且文件系统被频繁的更新而下降,如繁忙的邮件服务器。在这些情况下,请保持存储池的空间在80%以下以维持存储池性能。
1.2.1.1 单独日志设备ZFSintent log(ZIL,ZFS意图日志)符合POSIX的同步事务(synchronoustransactions)的要求。例如,数据库从系统调用返回时常常需要其事务要在稳定的存储设备上。在默认情况下,intentlog从主存储池中分配块。然而,若使用独立的intentlog设备,其可能会获得更佳的性能,像NVRAM或专用磁盘。请确定是否一个单独的日志设备适合您的环境:
实现单独的日志设备(log device)所体现的任何性能提升都依赖于设备类型、存储池的硬件配置、和应用的作业量。
日志设备可以是不复制或镜像的,但RAIDZ不被日志设备所支持。
日志设备的最小的尺寸同存储池中的最小设备尺寸相同,也是64MB。存储于日志设备上的实际数据量可能相对较少。当日志事务(系统调用)被提交时,日志块被释放。
最大的日志设备的尺寸应大概是物理内存的1/2,因为那是能被保存的实际数据的最大量。例如,如果一个有16GB物理内存的系统,其最大的日志设备应是8G。
对于日志设置信息和日志性能信息,请参见如下Blog:slog_blog_or_blogging_on来查看关于单独日志设备的总说明,参见《Solaris ZFS管理指南》(《Solaris ZFS Administration Guide》)。
1.2.1.2 内存与动态重构(Dynamic Reconfiguration)建议ZFS的自适应置换高速缓存(Adaptive ReplacementCache,ARC)试图使用最多的系统可用内存来缓存文件系统数据。默认是使用除了1GB以上的所有的物理内存。当内存压迫性增长时,ARC会放弃内存。请在如下情形时考虑限制最大ARC内存的使用范围:
当有已知数量的内存总是被应用程序请求时。数据库常常属于这一类。
在支持内存板动态重构的平台上,以防止ZFS将渐大的内核占据到所有的内存板上。
请求大内存分页的系统也会受益于对ZFS缓存的限制,这可将大的分页分解为基本分页。
最后,若系统上还运行有其他非ZFS文件系统,除了ZFS之外,最好再留一些空闲内存给那些文件系统作为缓存。
8pB3RUH+~c这些限制内存使用范围的方式被认为会使ARC不能缓存更多的文件系统数据,这可能会对性能有所影响。总之,若内存既没被ZFS使用也没被其他系统组件使用,限制ARC则是浪费资源的。注意非ZFS文件系统通常仍会设法使用系统的空闲内存来缓存数据。调节ARC的详细信息,请参考如下段落:http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide#Limiting_the_ARC_Cache
1.2.2 RAID-Z配置要求及建议
在设备数上没有可实际影响的限制
在SUN Fire X4500服务器上,请勿用48个设备创建一个镜像。请考虑创建24个两两设备的镜像。这一配置将磁盘容量缩小了1/2,但多至24个磁盘或每一个镜像上1个磁盘都可以无故障的被失去。
若您需要更佳的数据保护,三路镜像可在MTTDL上比双路镜像有显著提升。但再升为四路(或更高的)镜像,则只是在数据保护上提供有限的改进。所以若三路镜像还不够,请考虑其他的数据保护方式。
1.2.3 我应该配置RAID-Z、RAID-Z2还是镜像存储池?
通常需要考虑的是您的目标是最大磁盘空间还是最优性能RAID-Z配置可获得最大磁盘空间,且当被写入和读取大块(large chunk)(128KB或更大)的数据时通常都表现不错。
RAID-Z2配置提供了卓越的数据可用性且其具备同RAID-Z相似的特点。相比于RAID-Z或双路镜像,RAID-Z2具有显著更佳的数据损失平均时间(MTTDL)。
镜像配置消耗更多的磁盘空间,但通常其具备更好的随机少量的读取能力。
如果您的I/O是大量的、顺序的、或是写频繁的,则ZFS的I/O调度器会将其汇集起来,以这样一种方式您会获得很高效的磁盘使用而不论数据的复制模型。
为获得更好的性能,在大量的、不可缓存的、随机读取负载上,镜像配置要显著的胜于RAID-Z配置。 关于RAIDZ所需注意事项的更多信息,请参考如下blog: WHEN TO (AND NOT TO) USERAID-Z
1.2.4 RAID-Z配置举例
例如在Tunmper上的RAID-Z配置,将c3t0和c3t4(磁盘0和1)镜像作为您的根存储池,剩下的46块可用磁盘用于用户数据。如下的raidz2配置举例说明了如何配置剩下的46块盘:
*
5×(7+2),1个热备,17.5 TB
*
4×(9+2),2个热备,18.0 TB
*
6×(5+2),4个热备,15.0 TB
1.2.1 通用存储池性能事项
为了更佳的性能,请使用单个磁盘或至少只是由少数盘组成的LUN。通过使ZFS于LUN的设置中更可见,ZFS能够提供更佳的I/O调度决策。
依赖于作业量,当前的ZFS的实现相比于其他的基于分页的文件系统可以不时的使更多I/O被请求。如果吞吐量正在流向存储,由iostat来观察,其已接近存储和主机之间的信道链路的容量,调小zfsrecordsize属性一般能提高性能。这种调整是动态的,但只是对新文件创建有影响。已存在的文件还是保持其原有的recordsize。
调节recordsize对顺序类型的负载没有帮助。调节recordsize的方式是针对使用随机少量的读写来密集的处理大文件的情况来提升作业量。
请参考ZFS与数据库建议
当前,存储池的性能可能会因为存储池很满且文件系统被频繁的更新而下降,如繁忙的邮件服务器。在这些情况下,请保持存储池的空间在80%以下以维持存储池性能。
1.2.1.1 单独日志设备ZFSintent log(ZIL,ZFS意图日志)符合POSIX的同步事务(synchronoustransactions)的要求。例如,数据库从系统调用返回时常常需要其事务要在稳定的存储设备上。在默认情况下,intentlog从主存储池中分配块。然而,若使用独立的intentlog设备,其可能会获得更佳的性能,像NVRAM或专用磁盘。请确定是否一个单独的日志设备适合您的环境:
实现单独的日志设备(log device)所体现的任何性能提升都依赖于设备类型、存储池的硬件配置、和应用的作业量。
日志设备可以是不复制或镜像的,但RAIDZ不被日志设备所支持。
日志设备的最小的尺寸同存储池中的最小设备尺寸相同,也是64MB。存储于日志设备上的实际数据量可能相对较少。当日志事务(系统调用)被提交时,日志块被释放。
最大的日志设备的尺寸应大概是物理内存的1/2,因为那是能被保存的实际数据的最大量。例如,如果一个有16GB物理内存的系统,其最大的日志设备应是8G。
对于日志设置信息和日志性能信息,请参见如下Blog:slog_blog_or_blogging_on来查看关于单独日志设备的总说明,参见《Solaris ZFS管理指南》(《Solaris ZFS Administration Guide》)。
1.2.1.2 内存与动态重构(Dynamic Reconfiguration)建议ZFS的自适应置换高速缓存(Adaptive ReplacementCache,ARC)试图使用最多的系统可用内存来缓存文件系统数据。默认是使用除了1GB以上的所有的物理内存。当内存压迫性增长时,ARC会放弃内存。请在如下情形时考虑限制最大ARC内存的使用范围:
当有已知数量的内存总是被应用程序请求时。数据库常常属于这一类。
在支持内存板动态重构的平台上,以防止ZFS将渐大的内核占据到所有的内存板上。
请求大内存分页的系统也会受益于对ZFS缓存的限制,这可将大的分页分解为基本分页。
最后,若系统上还运行有其他非ZFS文件系统,除了ZFS之外,最好再留一些空闲内存给那些文件系统作为缓存。
8pB3RUH+~c这些限制内存使用范围的方式被认为会使ARC不能缓存更多的文件系统数据,这可能会对性能有所影响。总之,若内存既没被ZFS使用也没被其他系统组件使用,限制ARC则是浪费资源的。注意非ZFS文件系统通常仍会设法使用系统的空闲内存来缓存数据。调节ARC的详细信息,请参考如下段落:http://www.solarisinternals.com/wiki/index.php/ZFS_Evil_Tuning_Guide#Limiting_the_ARC_Cache
1.2.2 RAID-Z配置要求及建议
在设备数上没有可实际影响的限制
在SUN Fire X4500服务器上,请勿用48个设备创建一个镜像。请考虑创建24个两两设备的镜像。这一配置将磁盘容量缩小了1/2,但多至24个磁盘或每一个镜像上1个磁盘都可以无故障的被失去。
若您需要更佳的数据保护,三路镜像可在MTTDL上比双路镜像有显著提升。但再升为四路(或更高的)镜像,则只是在数据保护上提供有限的改进。所以若三路镜像还不够,请考虑其他的数据保护方式。
1.2.3 我应该配置RAID-Z、RAID-Z2还是镜像存储池?
通常需要考虑的是您的目标是最大磁盘空间还是最优性能RAID-Z配置可获得最大磁盘空间,且当被写入和读取大块(large chunk)(128KB或更大)的数据时通常都表现不错。
RAID-Z2配置提供了卓越的数据可用性且其具备同RAID-Z相似的特点。相比于RAID-Z或双路镜像,RAID-Z2具有显著更佳的数据损失平均时间(MTTDL)。
镜像配置消耗更多的磁盘空间,但通常其具备更好的随机少量的读取能力。
如果您的I/O是大量的、顺序的、或是写频繁的,则ZFS的I/O调度器会将其汇集起来,以这样一种方式您会获得很高效的磁盘使用而不论数据的复制模型。
为获得更好的性能,在大量的、不可缓存的、随机读取负载上,镜像配置要显著的胜于RAID-Z配置。 关于RAIDZ所需注意事项的更多信息,请参考如下blog: WHEN TO (AND NOT TO) USERAID-Z
1.2.4 RAID-Z配置举例
例如在Tunmper上的RAID-Z配置,将c3t0和c3t4(磁盘0和1)镜像作为您的根存储池,剩下的46块可用磁盘用于用户数据。如下的raidz2配置举例说明了如何配置剩下的46块盘:
*
5×(7+2),1个热备,17.5 TB
*
4×(9+2),2个热备,18.0 TB
*
6×(5+2),4个热备,15.0 TB
相关文章推荐
- 【译】ZFS最佳实践指南
- 【译】ZFS最佳实践指南-Part1
- 【译】ZFS最佳实践指南-Part3
- 【译】ZFS最佳实践指南-Part4
- 【译】ZFS最佳实践指南-Part5
- 【译】ZFS最佳实践指南-Part6
- 【译】ZFS最佳实践指南-Part7
- Web 开发指南:前端开发编码标准及最佳实践
- RAC 和 Oracle Clusterware 最佳实践和初学者指南 (Solaris) (文档 ID 1526517.1)
- 【转】Python开发指南:最佳实践精选
- Quest JProbe最佳实践指南--------分析Weblogic J2EE应用性能
- [新闻资讯] Flex开发指南---创建用户体验的工作流程和最佳实践
- 蓝牙技术联盟发布《决胜智能家居市场最佳实践指南》白皮书
- Android SDK开发指南(翻译)系列一:最佳实践(二)-- 反应速度设计
- 读<jquery 权威指南>[7]-性能优化与最佳实践
- Google 官方应用架构的最佳实践指南
- Sprite Kit编程指南(9)-Sprite Kit最佳实践
- RESTful API 设计指南——最佳实践
- Google 官方应用架构的最佳实践指南
- 20个设计数据库的最佳实践指南