我有 2 个 4TB 磁盘和 3 个 6TB 磁盘,我想将它们与 ZFS 一起使用。我的目标是最大化可用存储空间,同时允许单个磁盘发生故障。
理想情况下,将使用 raidz 设置,但根据我的研究,不同大小的驱动器会导致较大的驱动器利用率不足。也就是说,6TB 中仅 4TB 用于较大的驱动器。
是否可以对以下内容进行条带化(raid 0):
或者,是否可以对两个 4TB 进行条带化,然后将条带用于带有 6TB 驱动器的 raidz 配置中?那是:
我正在尝试针对我的工作负载(Postgres 和同一物理机器上的文件服务器 [1])在 Linux 上调整 ZFS,并想了解我是否真的需要 L2ARC。
如果https://www.zfsbuild.com/2010/04/15/explanation-of-arc-and-l2arc/ (写于 2010 年,当时我猜 SSD 很贵)给出的信息是正确的,应该我不是在禁用 L2ARC 吗?如果 ARC 上存在缓存未命中,则从 L2ARC 和主数据集读取将花费相同的时间(两者都是 SSD)。我的理解正确吗?
一个相关的问题——如何查看 L2ARC 的摘要?我认为没有arc_summary提供有关 L2ARC 的任何信息,对吗?
L2ARC 是二级自适应替换缓存。L2ARC 在 ZFS 系统中通常称为“缓存驱动器”。
[..]
这些缓存驱动器是物理上的 MLC 式 SSD 驱动器。这些 SSD 驱动器比系统内存慢,但仍比硬盘驱动器快得多。更重要的是,SSD 驱动器比系统内存便宜得多。
[..]
当 ZFS 池中存在缓存驱动器时,缓存驱动器将缓存不适合 ARC 的经常访问的数据。当读取请求进入系统时,ZFS 将尝试为来自 ARC 的这些请求提供服务。如果数据不在 ARC 中,ZFS 将尝试为来自 L2ARC 的请求提供服务。仅当 ARC 或 L2ARC 中不存在数据时才访问硬盘驱动器。
[1] 硬件配置:https : //www.hetzner.com/dedicated-rootserver/px61-nvme
如何更改默认选项为zfs文件系统上的现有的zpool?
也就是说,ZFS 为每个zpool池存储新zfs文件系统的默认值。zfs create如果它们没有被明确覆盖,那么它们将被用作默认值。
我知道zpool允许通过使用大写-O标志在创建时设置这些默认值:
zpool create -O atime=off -O compression=on ...
Run Code Online (Sandbox Code Playgroud)
这样,所有文件系统创建命令都可以缩短为:
zfs create -o atime=off -o compression=on ...
Run Code Online (Sandbox Code Playgroud)
到:
zfs create ...
Run Code Online (Sandbox Code Playgroud)
但是,如果我没有设置-Oonzpool创建怎么办?如何为现有池设置或更改它们?
更新
以下命令最终对我有用:
zfs set atime=off compression=on zroot
Run Code Online (Sandbox Code Playgroud)
感谢@ewwhite 和@shodanshok。
我多次听说ZFS快照是“免费的”,因为ZFS的写时复制设计快照不会消耗任何磁盘空间,除非数据发生更改,只有这样,空间使用量才被限制在实际使用的块上。改变了。Stack Exchange 上的许多答案以及整个互联网上的帖子都做出了这一声明或说所使用的空间“可以忽略不计”
这些说法的准确性如何?ZFS 快照实际使用多少磁盘空间?
我有一个 ZFS/Linux 实例,其文件可以增长到 ZFS 支持的疯狂大小。
大量并发用户需要通过公共互联网读取/写入该文件。如何在具有相同文件系统数据和元数据的 ZFS/Linux 实例池中平衡如此庞大的文件访问负载?
另外,虽然 ZFS 可以从轻微的位腐烂中自我修复,但在出现总体硬件故障时如何实现故障转移到 ZFS/Linux 实例的复制集?
似乎没有人谈论 ZFS 上下文中的副本、故障转移和负载平衡。或者也许,我在互联网上搜索的时间还不够长。
我有一些存储的 ZFS“发送流”(即,它们是通过将输出重定向zfs send到文件来创建的)。我想检查这些流的内容而不接收它们并将它们写入文件系统 - 例如,我想查看流中的文件名列表。有没有办法做到这一点?
我已经做了一些阅读和搜索,但没有找到任何看起来像我在说什么的东西。我在ZFS 的 Linux实现中同时使用FreeBSD和ZFS。
我觉得我在这里遗漏了一些非常简单/基本的东西,但我无法弄清楚如何挂载 ZFS 数据集,以便挂载点(根目录)具有给定的 uid/gid 所有权?类似的东西:
root# zfs mount -o uid=[uid] -o gid=[gid] ....
Run Code Online (Sandbox Code Playgroud) 我有一台安装了 zfsonlinux kABI-tracking kmod v.0.7.13 的 CentOS 7.6 机器。
如何将 ZFS 升级到最新版本?yum update说我是最新的。谢谢
我有一个当前状态的 ZFS 池:
[root@zfs01 ~]# zpool status
pool: zdata
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 186h53m with 0 errors on Sun Jan 27 20:53:44 2019
config:
NAME STATE READ WRITE CKSUM
zdata DEGRADED 0 0 0
raidz3-0 DEGRADED 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我最近通过添加两个驱动器扩展了我的存储池“zstorage”。它在 RAID-Z 中有 3 个 3TB 驱动器,我还在 RAID-Z 中添加了另外两个 1.5TB 驱动器(我理解这实际上与镜像相同)。我知道这不是最有效的设置,但这些是我拥有的驱动器。我希望在同等情况下,我应该从第一组中使用 6TB,从第二组中使用 1.5TB,总共 7.5TB。
添加后,一切看起来都很好,从下面的命令中,您可以看到 zpool list 现在列出了更多空间,并且驱动器显示为我所期望的 zpool status。但是,可用磁盘空间量没有增加,如下所示。
知道为什么我没有从中获得更多磁盘空间吗?我似乎没有从添加两个 1.5TB 驱动器中获得任何好处。
kevin@atlas:~$ sudo zpool 列表
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zstorage 10.8T 7.79T 3.05T 71% 1.00x ONLINE -
Run Code Online (Sandbox Code Playgroud)
kevin@atlas:~$ sudo zfs list -t all
NAME USED AVAIL REFER MOUNTPOINT
zstorage 5.19T 1.48T 5.19T /zstorage
Run Code Online (Sandbox Code Playgroud)
kevin@atlas:~$ sudo zpool status -v
pool: zstorage
state: ONLINE
scan: scrub in progress since Sat Apr 5 10:49:13 2014
317G scanned …Run Code Online (Sandbox Code Playgroud) zfsonlinux ×10
zfs ×8
centos ×1
cloud-scale ×1
defaults ×1
failover ×1
mirror ×1
raidz ×1
replication ×1
zfs-l2arc ×1