我知道 ZFS 的性能在很大程度上取决于可用空间的数量:
将池空间的利用率保持在 80% 以下以保持池性能。目前,当池非常满并且文件系统更新频繁时,池性能会降低,例如在繁忙的邮件服务器上。完整的池可能会导致性能下降,但没有其他问题。[...] 请记住,即使大部分静态内容在 95-96% 范围内,写入、读取和重新同步性能也可能会受到影响。ZFS_Best_Practices_Guide,solarisinternals.com (archive.org)
现在,假设我有一个 10T 的 raidz2 池托管 ZFS 文件系统volume。现在我创建了一个子文件系统,volume/test并给它预留了 5T。
然后我将每个 NFS 的两个文件系统安装到某个主机并执行一些工作。我明白我不能写volume超过5T,因为剩下的5T是保留给volume/test.
我的第一个问题是,如果我volume用 ~5T填充我的挂载点,性能将如何下降?它会下降吗,因为该文件系统中没有用于 ZFS 的写时复制和其他元数据的可用空间?还是会保持不变,因为 ZFS 可以使用为 保留的空间中的可用空间volume/test?
现在是第二个问题。如果我按如下方式更改设置,这有什么不同吗?volume现在有两个文件系统,volume/test1和volume/test2. 两者均获得 3T 预留(但没有配额)。现在假设,我将 7T 写入test1. 两个文件系统的性能是否相同,还是每个文件系统都不同?它会下降,还是保持不变?
谢谢!
我在 7 个磁盘的 4 个阵列中拥有 28 个 2TB 磁盘 (56T) 的池。由于它是 raidz1 (~RAID5),我希望每个阵列中的奇偶校验使用 1 个磁盘,因此生成的卷应该是 2TB*4*(7-1)=48TB,对吗?
现在,我在我的系统上看到的:
$ zpool list volume
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
volume 50.5T 308K 50.5T 0% 1.00x ONLINE -
$ zfs list volume
NAME USED AVAIL REFER MOUNTPOINT
volume 2.00T 40.3T 75.8K /volume
$ df -h /volume
Filesystem Size Used Available Capacity Mounted on
volume 42T 75K 40T 1% /volume
Run Code Online (Sandbox Code Playgroud)
所以,只有42T而不是48T。缺少的 6TB 在哪里?50.5T这个数字从何而来?
是什么导致这些内核统计数据(如 报告的那样top)如此之高?
Kernel: 152661 ctxsw, 2475 trap, 99065 intr, 1449 syscall, 3 fork, 2373 flt
Run Code Online (Sandbox Code Playgroud)
通常,我的系统的值要低得多,例如
Kernel: 487 ctxsw, 3 trap, 904 intr, 435 syscall, 3 flt
Run Code Online (Sandbox Code Playgroud)
但时不时地,数字会上升,操作系统会冻结。负载总是 <1。
谢谢!
编辑:
$ vmstat
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s1 s3 s4 in sy cs us sy id
1 0 0 2806128 2818224 43 207 0 0 0 0 5 4 4 0 10 …Run Code Online (Sandbox Code Playgroud) 我们有一个运行在 Solaris 10 上的大型文件服务器和大约 200 个运行在 Ubuntu 上的计算节点。节点通过 NFS 访问文件服务器。随着时间的推移,负载会越来越大。
有没有办法在每个用户的基础上限制资源(入站/出站网络带宽或到/从存储上的 ZFS 文件系统的 I/O)?如果在 Solaris 上无法实现,我们是否可以调整网络交换机(Cisco Nexus 5k 系列)以实现相同的目标?
其他人如何以公平的方式管理对大型单个文件系统的访问?
我们正在考虑为服务器群配备水冷机架门,类似于
由于这是一种非常特殊的硬件类型,因此很难找到与供应商无关的任何信息。
在最简单的设置中,我们会购买一个连接到冷却剂分配装置 (CDU) 的阅读门冷却机架,该装置可提供约 20 kW 的冷却能力。在这个机架中,我们要部署
两种选择都会产生大约 17 kW 的热量。除了所有维度问题(水/室温、水流、压力等),你们中的任何人是否有使用这种冷却架门的经验,并且可以分享它们在大约有温度的房间中的工作情况。20°C 空气温度?供应商承诺t_out = t_in,但我很好奇它是否适用于非常热的硬件。我的担忧包括:
t_out < t_in。另一种方法是设置一个适当的水冷机架,该机架完全封闭并在计算机前泵送冷空气。然而,那些通常更贵一些。这就是为什么我首先对您对阅读门冷却的意见感兴趣。特别是在非常热的计算机的情况下。
谢谢!
这是我在 zpool 中更换了几次磁盘后的一台 Solaris 10 服务器
pool: volume
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Wed Jul 6 11:43:51 2016
207M scanned out of 36.7T at 1.48M/s, (scan is slow, no estimated time)
207M scanned out of 36.7T at 1.48M/s, 7235h37m to go
13.5M resilvered, 0.00% done
config:
NAME STATE READ WRITE CKSUM …Run Code Online (Sandbox Code Playgroud) 所以我在 Ubuntu 16.04 机器上有这个 cronjob,它以
if ...
echo "warning" | wall 2>&1 > /dev/null
fi
Run Code Online (Sandbox Code Playgroud)
我用来警告所有用户有关正在发生的某些操作。尽管我将其输出重定向到/dev/null,但脚本以某种方式设法输出
wall: cannot get tty name: Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)
它通过电子邮件发送到根帐户。怎么wall静音?广播有效,但我不想在我的根邮箱中有这些电子邮件。
# wall -V
wall from util-linux 2.27.1
Run Code Online (Sandbox Code Playgroud) 目前我们不能完全填满 19" 机架。所以我们有 12 个 GPU 节点,每个 2U。42U 机架连接到一个冷却单元,在计算机前面吹冷空气,从后面吸入热空气。就我而言了解此线程后,最佳做法是堆叠所有节点,中间不留任何间隙,并使用空白面板关闭所有空槽。
现在我应该把这堆 24U 的热计算机放在机架的哪个位置?全部在底部,让冷空气沉到最低节点?都到顶了,因为风流够大?中间的某个地方?
zfs ×4
rack ×2
raidz ×2
solaris ×2
zpool ×2
cisco-nexus ×1
cooling ×1
cron ×1
file-server ×1
networking ×1
nfs ×1
quota ×1
raid5 ×1
solaris-10 ×1
tty ×1