微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux ZFS不会缓冲写入缓冲区(SLOG / ZIL)的写入?

遇到写入I / O时,zpool iostat -v中的日志列不会显示任何ZIL活动.这会导致将数据写入磁盘时的等待时间高于预期(在争用期间有时超过80毫秒).
capacity     operations    bandwidth
    pool              alloc   free   read  write   read  write
----------------  -----  -----  -----  -----  -----  -----  
storage           1.88T  2.09T      3  3.01K   512K  39.3M
  mirror           961G  1.05T      0  1.97K   128K  20.8M
    mpathf            -      -      0    393      0  20.8M
    mpathg            -      -      0    391   128K  20.6M
  mirror           961G  1.05T      2  1.04K   384K  18.5M
    mpathi            -      -      1    379   256K  21.1M
    mpathj            -      -      0    281   128K  18.3M
logs                  -      -      -      -      -      -
  /zlog/zilcache      0  15.9G      0      0      0      0
cache                 -      -      -      -      -      -
  mpathk           232G     8M      1      0   130K      0
  mpathl           232G     8M      1      0   130K      0
----------------  -----  -----  -----  -----  -----  -----

我的/ zlog / zilcache设备从来没有任何IO.它是一个快速闪存的文件.当我从ZFS商店中删除它时,我可以编写和读取它,但ZFS似乎忽略它.

该设备看起来可用:

pool: storage
 state: ONLINE
  scan: scrub repaired 0 in 19h31m with 0 errors on Wed Nov 19 07:39:03 2014
config:

    NAME              STATE     READ WRITE CKSUM
    storage           ONLINE       0     0     0
      mirror-0        ONLINE       0     0     0
        mpathf        ONLINE       0     0     0
        mpathg        ONLINE       0     0     0
      mirror-1        ONLINE       0     0     0
        mpathi        ONLINE       0     0     0
        mpathj        ONLINE       0     0     0
    logs
      /zlog/zilcache  ONLINE       0     0     0
    cache
      mpathk          ONLINE       0     0     0
      mpathl          ONLINE       0     0     0

errors: No kNown data errors

有什么方法可以配置ZFS来缓存对日志设备的写入以获得更快的确认?

谢谢

解决方法

我相信你误解了ZIL的目的.您将其描述为写缓存,而不是. ZIL上的任何活动都可能只是正常行为,具体取决于您的计算机上运行的内容.

从ZIL没有读取任何东西,这是一个只写设备.崩溃后池导入期间可能发生唯一的例外.

如果应用程序正在执行同步写入,则只会写入它.像移动文件这样的常规I / O不使用ZIL.

您可以在数据集上设置sync = always以强制所有写入的行为就像它们是同步的一样.

原文地址:https://www.jb51.cc/linux/396209.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐