ZFS - 使用文件作为 l2arc 缓存

ZFS - 使用文件作为 l2arc 缓存

我有一台 CentOS 服务器,它使用 zfs 来管理一个大而慢的网络附加卷。

我们从这个卷中读取了很多内容,因此我想优化读取性能。

这个想法显然是一个 L2ARC 缓存。

不幸的是,我只有一个 SSD 磁盘连接到这台机器,并且已经用 xfs 格式化,托管 /,并且我无法连接更多(由其他人管理的机器)。

我想知道是否可以在 SSD 磁盘中创建一个文件并以某种方式将 L2ARC 放入该文件中。

我正在考虑循环安装磁盘,但循环安装似乎仅支持只读设备。

还有其他选择吗?

$ dd if=/dev/zero of=/root/cache size...
$ mount -o rw,loop /root/cache /mnt/cache-file
mount: /dev/loop0 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'

答案1

是的,你可以使用文件进行 L2ARC。你甚至不需要 loopback mount:你可以简单地发出zpool add tank cache <absolute_file_path>

话虽如此,L2ARC 仅在特定情况下有用,因此并不能保证它能够改善您的状况。

答案2

目前接受的答案如果使用不当,会导致错误;

    $>touch /zfs.cache
    $>zpool add poolname cache /zfs.cache
 
    cannot add to 'poolname': device is less than the maximum size (64M)

首先需要预留一个文件:

truncate -s 256g /etc/zfs.cache

或使用

zpool set cachefile=/zfscache/zpool.cache poolname

相关内容