在我的 ZFS 盒中,为什么我的缓存设备留下了一堆可用空间?

在我的 ZFS 盒中,为什么我的缓存设备留下了一堆可用空间?

我有一个 ZFS 系统,为许多虚拟机提供服务。在其中,我们安装了 12 个 4TB SAS 磁盘,并将它们配置为镜像。我们添加了两个 PCI-E SSD(三星 960,每个 512GB),但它们的消耗量都刚好超过 50%,而不是缓存所有可以缓存的数据。我们消耗的存储空间很多,但 SSD 只占了大约一半。

系统是 CentOS 7 盒,带有 Linux 版本 0.6.5.9-1.el7_3.centos 上的 ZFS。

以下是 zpool iostat 的快照:

                                                      capacity     operations    bandwidth
pool                                               alloc   free   read  write   read  write
-------------------------------------------------  -----  -----  -----  -----  -----  -----
stgpool                                            13.3T  8.46T     26   1020   482K  10.6M
  mirror                                           2.21T  1.41T      4    165  50.5K  1.79M
    S1D0                                               -      -      3    158  52.0K  2.05M
    S2D0                                               -      -      0    158  11.2K  2.05M
  mirror                                           2.21T  1.41T      2    184  51.7K  1.97M
    S3D0                                               -      -      2    177  47.2K  2.26M
    S4D0                                               -      -      0    177  13.6K  2.26M
  mirror                                           2.21T  1.41T      3    170   104K  1.66M
    S1D1                                               -      -      2    169  90.4K  1.94M
    S2D1                                               -      -      1    169  21.6K  1.94M
  mirror                                           2.21T  1.41T      5    142   129K  1.61M
    S3D1                                               -      -      3    139   109K  1.86M
    S4D1                                               -      -      1    139  32.8K  1.86M
  mirror                                           2.21T  1.41T      4    170  93.7K  1.81M
    S1D2                                               -      -      4    162  95.2K  2.11M
    S2D2                                               -      -      0    162  11.2K  2.11M
  mirror                                           2.21T  1.41T      4    186  54.2K  1.78M
    S3D2                                               -      -      3    175  40.0K  2.10M
    S4D2                                               -      -      0    175  27.2K  2.10M
logs                                                   -      -      -      -      -      -
  ata-Samsung_SSD_850_EVO_250GB_S21NNXAG918721R        0   232G      0      0      0      0
  ata-Samsung_SSD_850_EVO_250GB_S21NNXAGA59337A        0   232G      0      0      0      0
  ata-Samsung_SSD_850_EVO_250GB_S21NNXAGA69590F        0   232G      0      0      0      0
cache                                                  -      -      -      -      -      -
  nvme-Samsung_SSD_960_PRO_512GB_S3EWNCAHC01880D    266G   211G     38     81   556K  2.85M
  nvme-Samsung_SSD_960__PRO_512GB_S3EWNCAHB04288W   266G   211G     37     56   416K  2.10M
-------------------------------------------------  -----  -----  -----  -----  -----  -----

Zpool 设置:

NAME     PROPERTY                    VALUE                       SOURCE
stgpool  size                        21.8T                       -
stgpool  capacity                    61%                         -
stgpool  altroot                     -                           default
stgpool  health                      ONLINE                      -
stgpool  guid                        1784205276891874933         default
stgpool  version                     -                           default
stgpool  bootfs                      -                           default
stgpool  delegation                  on                          default
stgpool  autoreplace                 off                         default
stgpool  cachefile                   -                           default
stgpool  failmode                    wait                        default
stgpool  listsnapshots               off                         default
stgpool  autoexpand                  off                         default
stgpool  dedupditto                  0                           default
stgpool  dedupratio                  1.00x                       -
stgpool  free                        8.46T                       -
stgpool  allocated                   13.3T                       -
stgpool  readonly                    off                         -
stgpool  ashift                      0                           default
stgpool  comment                     -                           default
stgpool  expandsize                  -                           -
stgpool  freeing                     0                           default
stgpool  fragmentation               58%                         -
stgpool  leaked                      0                           default
stgpool  feature@async_destroy       enabled                     local
stgpool  feature@empty_bpobj         active                      local
stgpool  feature@lz4_compress        active                      local
stgpool  feature@spacemap_histogram  active                      local
stgpool  feature@enabled_txg         active                      local
stgpool  feature@hole_birth          active                      local
stgpool  feature@extensible_dataset  enabled                     local
stgpool  feature@embedded_data       active                      local
stgpool  feature@bookmarks           enabled                     local
stgpool  feature@filesystem_limits   enabled                     local
stgpool  feature@large_blocks        enabled                     local

arcstat.py 信息:

    time  read  l2read  hit%  hits  miss%  miss  l2hit%  l2miss%  arcsz     c  l2size  
01:44:35  2.1K     268    87  1.8K     12   268       2       97   125G  125G    778G  
01:44:36  6.5K     583    91  6.0K      8   583       1       98   125G  125G    778G  
01:44:37  1.1K     277    75   835     24   277       6       93   125G  125G    778G  
01:44:38  1.5K     230    84  1.3K     15   230       1       98   125G  125G    778G  
01:44:39  1.8K     141    91  1.6K      8   141       2       97   125G  125G    778G  
01:44:40  1.4K     203    85  1.2K     14   203      19       80   125G  125G    778G  
01:44:41  4.0K     291    92  3.7K      7   291      11       88   125G  125G    778G  
01:44:42  1.7K      95    94  1.6K      5    95       8       91   125G  125G    778G  
01:44:43  1.1K      84    92  1.0K      7    84       2       97   125G  125G    778G  

我正在尝试最大化读取率并利用 960 的容量。任何帮助都非常感谢 :)

答案1

熟悉arcstatZFS 缓存的工作原理......类似于:

arcstat.py -f "time,read,l2read,hit%,hits,miss%,miss,l2hit%,l2miss%,arcsz,c,l2size" 1'

这将显示 ZFS ARC 和 L2ARC 缓存的命中率。您可能有大量数据写入磁盘,命中率很高,但可能只是因为读取了一小部分数据。下面的数据集使用了 6.5TB,但 L2ARC 缓存中只有 127GB 的数据。

在此处输入图片描述

您的设置中可能未使用 ZIL 设备 (SLOG)。ZFS 使用 SLOG 设备进行同步写入活动。一些数据库会这样做,NFS 流量也是如此。如果虚拟机在此服务器上运行,则永远不会使用 SLOG 设备,因此这些设备在此版本中可能是一种浪费。

相关内容