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

前端之家收集整理的这篇文章主要介绍了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以强制所有写入的行为就像它们是同步的一样.

猜你在找的Linux相关文章