`
standalone
  • 浏览: 613076 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ZFS文件系统的特点以及调优

ZFS 
阅读更多

Record Size
Record Size 也就是通常所说的文件系统的block size。ZFS采用的是动态的Record Size,也就
是说ZFS会根据文件大小选择*适合*的512字节的整数倍作为存储的块大小,最大的Record
Size为128KB。通常没有必要手工设置Record Size。如果手工把Record Size调小,将不会得
到空间的节省,并且常常会影响性能。ZFS的Block是计算checksum的单位,一个文件用到
的block越多,计算checksum以及维护metadata的开销就会越大。
目前ZFS的版本下,只有一种情况需要手工调小Record Size:大文件上的小数据量的更新。
常见的情况是数据库的数据文件在ZFS上,并且是做OLTP为主的应用。原因是大文件的
blocksize是128KB,如果只更新其中一小部分数据,由于ZFS是copy-on-write的方式来更新
数据,这种情况下仍然要读写128KB的数据,造成了不必要的开销。
另外,修改了Record Size后,对之前创建的文件不起作用。

ARC (Adaptive Replacement Cache)
这实际上是ZFS的文件系统的cache。它是一个可以自动伸缩的cache。目前一个操作系统实
例里只有一个ARC,不管这个操作系统上有多少个ZFS Pool。而且metadata和实际的数据都
共用这个ARC。
如果没有其它应用或操作系统本身争用内存,ZFS会尽可能多地使用物理内存作为cache。如
果事先知道应用程序或操作系统需要使用多少内存,可以考虑限制ARC的大小。在/etc/system
中设置,例子:set zfs:zfs_arc_max=0x200000000 (设置ARC最大为8GB)

TXG (Transaction Groups)
应用的文件写操作一般分为两种,同步写和普通写操作。同步写是指写操作必须物理地写到
存储介质上才能返回给应用,通常这种情况发生在open文件时指定了O_DSYNC或O_SYNC
属性,以及调用fsync()等;普通写操作是指写操作写到文件系统cache里即可返回给应用,通
常以普通方式打开文件后的write(),fwrite()操作都是这种操作。TXG (Transaction Groups)则是
负责管理如何将文件系统cache(ARC)里的数据同步到磁盘上的机制。
对于写进文件系统cache里的每一个数据都会被编入一个TXG,通常情况下每隔5秒钟或文件
系统cache里有太多脏数据(待写入磁盘的数据达到ARC的一半),当前TXG里的所有数据
会被同步到磁盘,同时启动下一个TXG。每一个ZFS Pool同时最多会有3个TXG,分别处于
3种状态:open, quiescing, syncing。当TXG不能在5秒内把数据同步到磁盘上时将会影响
open TXG,从而引起应用写操作的阻塞。这个现象叫做写抑制(throttling)。
当前的Solaris 版本(Solaris 10 8/07)对写抑制的控制不是非常好,当进行密集的写操作并且
ARC较大、磁盘系统较慢时容易使TXG同步数据的时间非常长,发生throttling从而使应用的
后续写操作的响应时间非常长。在新的opensolaris发行包里,这个问题已经有了很大的改进,
ZFS会监测ARC接收数据的速度和ARC数据同步到磁盘上的速度,并自动调整ARC接收数
据的速度。另外ARC脏数据的大小限制改为1/8物理内存。通过这种控制可以使应用的写操
作响应时间更为均匀稳定。

ZIL (ZFS Intent Log)
对于同步写操作,ZFS为系统中每一个ZFS文件系统维护一个ZIL(ZFS Intent log)。同步写操
作的数据会先写入ZIL,并且会把磁盘的write cache的数据同步到磁盘上,然后应用的写操作
返回。当文件提交命令发生时,ZFS会把ZIL里该文件的数据同步到磁盘上。
缺省情况下,ZIL是在ZFS存储池中动态分配的。某些同步写操作(比如数据库的联机重做日
志或NFS COMMIT)如果响应时间慢将会极大影响性能。为了不使ZIL受其它I/O操作的影
响,可以考虑采用一个专门的快速设备如NVRAM,SSD(Solid State Disk)等做ZIL,以下命令
为ZFS存储池添加专用的ZIL:
zpool add <pool> log <log devices>
另外,由于每次同步写操作会使ZFS把磁盘 write cache的数据同步到磁盘上,对于SAN的存
储,频繁地flush cache会严重影响性能并且是不必要的。这个问题在OpenSolaris里已经得到
解决,解决办法是让设备驱动程序向存储系统发出适当的命令选项,从而使存储系统可以忽
略从non-volatile cache同步到磁盘的请求。前提是存储系统可以识别驱动程序发出的命令选项。

I/O scheduler and priorities
缺省情况下,ZFS会限制每一个它能看到的存储池里的设备的I/O队列长度为35,并且通常读
操作的优先级高于写操作。这种做法的目的是保证较好的I/O service time。
根据实际的应用需求和存储设备的不同,可能需要调整I/O队列的大小。比如为了得到更好地
响应时间,在/etc/system里设置:set zfs:zfs_vdev_max_pending = 10

Prefetch (file level and device level)
和其它文件系统一样,ZFS也有预读的功能。ZFS文件系统的预读分为file-level和devicelevel

file-level的预读是指ZFS可以检测到文件读取的模式,预先读入文件的后续部分从而减少I/O
操作以提高性能。对于大并发量的针对不同文件的读操作,file-level的预读通常不会带来好处,
可以把预读关掉:在/etc/system里设置:set zfs:zfs_prefetch_disable = 1 。
Device-level的预读是指在读取数据块时,会读取设备相邻的数据,假定相邻数据随后会被用
到。Device-level的预读有时会读入不需要的数据反而会影响性能,在新的opensolaris发行包
里,Device-level的预读只预读metadata。

RAIDZ and RAIDZ2
ZFS提供了类似传统RAID5和RAID6的功能,分别叫做RAIDZ和RAIDZ2。但RAIDZ的实
现与传统RAID5有很大不同:RAIDZ的所有写操作都是Full-Stripe write,结合ZFS的copyon-
write和checksum的机制,可以保证数据的一致性,无需像传统的RAID5那样需要昂贵的
NVRAM来保证条带数据的一致性。
RAIDZ的stripe size是完全动态的。每一个文件系统块(record)在存储时会平均分配到RAIDZ
group里的所有磁盘上,并以512字节为单位。例如,假设一个4KB的文件,如果存储在4+1
的RAIDZ group,则4KB的数据会分散到4个磁盘上,每个磁盘上存储1KB。因此一个
RAIDZ group里的设备不应过多,否则会影响读操作的性能。一般建议为3~9个。RAIDZ比
较适合大文件的顺序读写。
由于RAIDZ在设计上的特殊性,在数据恢复时需要通过metadata来恢复,要遍历整个pool。
当某块磁盘出现故障时,RAIDZ重建的速度与metadata的数量有关。当有大量metadata数据
时,比如大量snapshots或pool里的文件数量庞大,数据重建的速度会较慢。在这种情况下,
可以考虑创建多个pool。当然,对一个很空的文件系统,RAIDZ的重建时间会很短。

分享到:
评论

相关推荐

    oracle solaris ZFS文件系统

    Oracle Solaris ZFS 是一种结合了文件系统和卷管理器的创新技术,主要特点包括: - **ZFS 池存储**:允许将多个物理磁盘组合成一个逻辑存储池,提高了存储空间的利用率和灵活性。 - **事务性语义**:采用了一种基于...

    ZFS文件系统和Sun x4500数据服务器在互联网行业

    #### ZFS文件系统的特点和调优 ZFS文件系统,全称为Zettabyte File System,是一种由Sun Microsystems开发的革命性文件系统,旨在解决传统文件系统在完整性、安全性、可扩展性和管理复杂度上的挑战。ZFS的设计理念...

    zfs管理指南

    #### 一、ZFS文件系统简介 ZFS(Zettabyte File System,泽字节文件系统)是一种先进的文件系统,最初由Sun Microsystems为Solaris操作系统开发,后来被移植到多个操作系统平台,如FreeBSD、OpenSolaris、Illumos等...

    Solaris ZFS管理指南

    - **ZFS命令使用方面的增强**:ZFS引入了一系列命令行工具的改进,使得用户能够更直观地管理和监控ZFS存储池和文件系统,提高了日常管理任务的效率。 - **ZFS快照增强功能**:增强了快照的创建与管理能力,允许...

    solaris zfs 管理指南

    - **文件系统监视工具(fsstat)**:提供了对ZFS文件系统活动的实时监视功能,有助于性能调优。 - **基于Web的ZFS管理**:支持通过Web界面管理ZFS存储池和文件系统,简化了远程管理过程。 #### 五、ZFS术语解释 - **...

    ZFS最佳实践指南2007-11-12

    - **内存消耗**:每加载一个ZFS文件系统大约需要64KB的内存,因此在拥有大量ZFS文件系统的系统上,建议为每1000个已加载文件系统(包括快照)预留1GB的额外内存。 - **内存对引导时间的影响**:随着ZFS文件系统数量...

    solaris 系统调优

    1. **硬件资源管理**:Solaris 10引入了ZFS文件系统,它具有自动调整空间分配、数据校验和高性能的特点。通过ZFS,我们可以调整池的条带化、镜像和缓存设置来优化存储性能。另外,Solaris的动态硬件分区(Dynamic ...

    zfs-tuning-handout

    ZFS作为一种先进的文件系统,在提供强大功能的同时,也需要相应的性能调优来确保其高效运行。通过对内存、访问时间、数据集压缩等方面进行细致调整,可以显著改善ZFS的整体性能表现。值得注意的是,在进行任何性能...

    系统管理指南:设备和文件系统.pdf

    - **ZFS (Zettabyte File System)**:一种高性能的文件系统,具有数据完整性检查和高效的空间管理等特点。 **知识点5:文件系统的管理和优化** - **格式化**:初始化磁盘分区或存储设备的过程,为使用特定的文件...

    Solaris高级系统管理员指南(PDF)

    2. **ZFS文件系统**:Solaris的一个突出特点是其创新的ZFS文件系统,它提供了数据完整性、快照、克隆、自动精简配置等功能。学习如何创建、管理ZFS池和文件系统,以及如何利用其高级特性进行数据保护和恢复。 3. **...

    817-6960.pdf-Oracle Solaris 9 - System Administration Guide: Dev

    文件系统管理章节同样详尽,它不仅涵盖了文件系统的种类,比如UFS、ZFS、NFS等,还包括了文件系统的安装、配置、管理和维护。文件系统的安全性是现代操作系统中的重要议题,因此,这部分内容还着重讲解了访问控制、...

    solaris原厂培训文档

    Solaris 10提供了许多高级特性,包括ZFS文件系统、DTrace调试工具、容器技术等,这些特性使其成为企业级服务器的理想选择。 ### 系统管理培训 #### 1. 系统管理基础 - **用户与组管理**:学习如何创建、删除用户...

    Solaris10高级系统管理SA202S10_SG

    4. **存储管理**:学习ZFS文件系统的特点和优势,包括快照、克隆、池管理和数据保护策略。同时,了解UFS文件系统的使用和维护。 5. **用户与权限管理**:理解Unix的用户和组概念,学习创建、修改用户账户,以及使用...

    Solaris™ 10 System Administration Essentials 英文pdf

    - **ZFS文件系统**:作为Solaris 10的核心组件之一,ZFS是一种先进的文件系统,提供了数据完整性检查、快照、克隆等功能,极大地提高了数据管理和保护的能力。 - **虚拟化技术**:Solaris 10支持容器(Container)技术...

    Solaris management

    1. 文件系统类型:了解Solaris支持的文件系统类型,如UFS、ZFS、lofs等,理解它们的特点和应用场景。 2. 文件系统操作:创建、挂载、卸载文件系统,掌握df、du、mount、umount等命令的使用。 3. ZFS特性:深入研究...

    FAST_ARC_Parper.pdf

    本文档标题中的“FAST_ARC_Paper.pdf”指的是一个关于ZFS文件系统中自适应替换缓存(Adaptive Replacement Cache,简称ARC)算法的研究文献。此文档为FAST'03会议上的论文原文,即第2届USENIX存储技术大会的发表成果...

    AIX 6.1, Solaris 10, and HP-UX对比报告

    其核心特性包括ZFS文件系统,这是一个创新的、具备数据完整性检查和内置冗余的存储解决方案。Solaris 10还推出了Solaris Containers虚拟化技术,它可以创建轻量级的容器来隔离应用环境。此外,Solaris 10的DTrace...

    Solaris10初级管理员.rar

    1. **系统安装与配置**:了解如何在物理服务器或虚拟机上安装Solaris 10,包括选择正确的安装类型(如UFS或ZFS文件系统),配置网络接口,设置主机名和DNS,以及安装后的系统更新。 2. **命令行工具**:熟悉Solaris...

    Solaris的一些小技巧.rar

    1. **ZFS文件系统**:Solaris引入了ZFS,一种先进的文件系统和存储管理解决方案,支持快照、克隆和数据校验。学习如何创建、管理和利用ZFS的特点是提高效率的关键。 2. **过程管理**:了解如何使用`ps`、`kill`、`...

    Solaris10(200)读书笔记

    它引入了ZFS文件系统,这是一个革命性的64位、日志结构化的文件系统,具有数据完整性检查、快照、克隆和空间效率高等特点。ZFS能够提供高级的数据保护功能,如自动检测和修复损坏的块,以及通过快照实现易于管理的...

Global site tag (gtag.js) - Google Analytics