ZFS文件系统(7) -- ZIL

术语

      在我们开始之前,我们需要获取一些知识的方式大概是一些让人混乱的论坛,博客,邮件列表或者一般常规性的讨论。尽管我知道我自己要做什么,他们还是会是我感到很混乱,让我们一起来看看吧。

      ZIL 所有需要存储的数据,都需要被记录下来,然后再通过事务组刷人到磁盘,日记日志文件系统,看起来和EXT3、EXT4很类似,通常存储在磁盘的盘片上,由一个ZIL头牵引这一个ZIL列表记录,ZIL块和ZIL后续数据,不同的写操作ZIL会有不同的表现。写小于64KB(默认),ZIL会存储写入的数据,写大数据时,他不会存储这些数据,而是记录同步数据的指针。

      SLOG 一个单独的日志记录设备,用来记录数据同步前刷新速度较慢的磁盘的ZIL设备,他可以是一个有电池供电的DRAM驱动器,或者是速度很快的SSD,只缓存同步数据和,而不缓存异步数据,异步数据将直接刷入磁盘。另外,块写入的速度,不会被当作一个同步事务写入到SLOG中。如果SLOG存在,ZIL将会把它移到他上面,而不是放在单独的磁盘里。所有的SLOG全部都是在系统内存中。

      你在网上经常可以看到有人说“添加一个SSD ZIL到存储池”,他的意思是加入一个SSD的SLOG,ZIL还是存在。SLOG在这种情况下,是ZIL的一个子集,SLOG是设备,ZIL是这个设备上的数据。此外,并不是所有的应用程序都会利用ZIL,应用程序,如数据库(MySQL, PostgreSQL, Oracle),NFS,和iSCSI target会使用ZIL,但像其他典型的文件系统的数据复制并不会使用他。ZIL一般是不用来读的,除了在开机是看是否缺少事务处理。ZIL基本上是“只写”,而且是很密集的写。

SLOG设备

      那种设备作为SLOG设备最佳?从最快到最慢,这是我个人意见。

      NVRAM

      含有电池的DRAM驱动器,如SSD STEC ZeusRAM,这个最快也最可靠,当然也最贵。

      固态硬盘

      是基于NAND闪存芯片的磨损均衡算法,类似的还有PCI-E OCZ固态硬盘,或者Intel固态盘。最好的应该是SLC,尽管SLC和MLC差别很小。

      10k+ SAS驱动器

      企业级的旋转盘片磁盘,使用SAS和光纤通道提高IOPS吞吐量,通常他的速度是普通SATA盘的两倍。


      重要的是,以上三种驱动器都可以在断电的时候保持数据的持久性,SLOG ZIL的存在就是为了保护您的数据,如果发生了断电,最糟糕的情况就是新数据没有被刷入到磁盘中,你留下的是旧的数据就,不过你不会得到损坏的数据,只是数据丢失而已,你的数据在磁盘上仍然是一致的。


SLOG 性能

      由于SLOG一般情况采用的是速度很快的磁盘驱动器,那么你会看到磁盘的延迟会降低,磁盘采用率降低,以及系统的负载会降低,不过,他并不会提高数据的吞吐量,请记住,就算是SLOG设备,他也是每5秒将数据刷新到磁盘之中,因此,在基准磁盘后加入一个SLOG并没有太多的意义,除非你的目标是测试他同步数据的延迟。对此我没有一些具体的数据提供给你,等会儿会有几个图片展示。

      我有一个磁盘密集写型虚拟机,他是一个装有GlusterFS的ZFS数据集映像复制文件,我的虚拟机有足够的RAM,一个很快的CPU,但是一个速度很慢的SATA硬盘,由于这台虚拟机上的应用程序经常行的往硬盘中写许多的图表,随着图表的增长,就可以看到5到10秒的磁盘延迟,在这个磁盘上,吞吐量非常的激烈。所以,在虚拟机上做任何写操作都是十分痛苦的,就算是系统升级,修改配置文件,或者写日志文件,真是非常非常的慢。

      换上我的SSDs,然后添加SLOG,随即,磁盘的延迟下降到大约200毫秒,磁盘的采用率从50%左右下降到5%左右,系统负载从1-2变到几乎不存在,磁盘有关的一切都变得更健康的状态,如下图所示。

      第一张图片通过虚拟机管理程序观察我的磁盘,请注意,每一个磁盘的吞吐量为800kbps,加上了SSD SLOG之后,吞吐量降到了400kbps,这意味着,底层的磁盘工作量在减少,作为结果就是,需要更多的时间。


图片展示了4个磁盘在一个虚拟机上的吞吐量

    第二张图片展示从虚拟机的角度来看我的磁盘,注意磁盘延迟,采用率和系统负载的下降。



你可能感兴趣的:(ZFS文件系统)