我已经阅读了很多有关规划 ZFS 重复数据删除的 RAM 要求的信息。我刚刚升级了我的文件服务器的 RAM,以支持 ZFS zvol 上的一些非常有限的重复数据删除,我无法在这些 zvol 上使用快照和克隆(因为它们是格式化为不同文件系统的 zvol),但会包含大量重复数据。
我想确保我添加的新 RAM 将支持我打算进行的有限重复数据删除。在计划中,我的数字看起来不错,但我想确定。
如何判断实时系统上 ZFS 重复数据删除表 (DDT)的当前大小?我阅读了这个邮件列表线程,但我不清楚他们是如何获得这些数字的。(zdb tank如有必要,我可以发布输出,但我正在寻找可以帮助其他人的通用答案)
我正在 FreeBSD 机器上制作 zpools。在创建 zpools 时,我观察到这两种情况:
如果我采用raw disks并创建,zpool那么我就能够形成 zpools 并且它们运行良好。
如果我使用gpartin freebsd-zfsformat格式化磁盘,然后制作 zpool,那么它们也可以正常工作。
我感到困惑的是,哪种方法更适合创建 zpool?
我还是 ZFS 的新手。我一直在使用 Nexenta,但我正在考虑切换到 OpenIndiana 或 Solaris 11 Express。现在,我正在考虑将 ZFS 服务器虚拟化为 ESXi、Hyper-V 或 XenServer 中的客户机(我还没有决定哪一个 - 我倾向于使用 ESXi 来支持 VMDirectPath 和 FreeBSD)。
主要原因是我似乎有足够的资源可以轻松地同时运行 1-3 个其他 VM。主要是 Windows 服务器。也可能是 Linux/BSD VM。我希望虚拟化 ZFS 服务器托管其他 VM 的所有数据,以便它们的数据可以保存在与 ZFS 磁盘分离的物理磁盘上(以 iscsi 或 nfs 安装)。
该服务器目前有一个 AMD Phenom II,总共有 6 个内核(2 个未锁定)、16GB RAM(最大)和一个 LSI SAS 1068E HBA,连接了 (7) 个 1TB SATA II 磁盘(计划在带热备件的 RAIDZ2 上)。我还有 (4) 个 32GB SATA II SSD 连接到主板。我希望将两个 SSD 镜像到引导镜像(用于虚拟主机),并将另外两个 SSD 留给 ZIL 和 L2ARC(用于 ZFS VM 来宾)。我愿意再添加两个磁盘来存储 VM 来宾并将所有七个当前磁盘分配为 ZFS …
除了根 rpool 之外,我正在使用额外的存储池扩展 Solaris 10 U8 服务器。
将特定 ZFS 文件系统从 rpool 移动到这个新存储池的最有效/简单/可靠的方法是什么?
可以在线完成还是应该先关闭使用这些池的服务?
我正在考虑在我拥有的一些新服务器上使用哪种操作系统和文件系统,并且正在考虑使用带有 ZFS 的 Free BSD 或带有 BTRFS 的 Linux。
我在两个系统上运行的程序,所以唯一的问题是文件系统的可靠性和性能等。
我有一个 OpenSolaris 服务器,其 zpoolbackupz由四个 SCSI 驱动器组成:
-bash-3.2# zpool status backupz
pool: backupz
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
backupz ONLINE 0 0 0
raidz1 ONLINE 0 0 0
c7t0d0 ONLINE 0 0 0
c7t1d0 ONLINE 0 0 0
c7t2d0 ONLINE 0 0 0
c7t3d0 ONLINE 0 0 0
errors: No known data errors
Run Code Online (Sandbox Code Playgroud)
我想添加第五个驱动器...但zpool add backupz raidz c7t4d0不起作用...
-bash-3.2# zpool add backupz raidz c7t4d0
invalid vdev specification: raidz requires at least …Run Code Online (Sandbox Code Playgroud) 我在我的FreeBSD 9.0 x64上使用 zfs并且对它非常满意,但我发现很难计算目录的真实大小,而不是压缩大小。
当然,我可以遍历目录并使用 ls 计算每个文件的大小,但是为此我希望 du 有一些额外的密钥。
那么,我如何知道压缩在 zfs 上的 dir 的目录大小?
提前感谢您的建议,我简单地想不起来没有这样一种“简单”的方法,没有 'find ./ -type d -exec ls -l '{}' \; | 哎呀……'!
我知道 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. 两个文件系统的性能是否相同,还是每个文件系统都不同?它会下降,还是保持不变?
谢谢!
我有一台 NAS 服务器,带有 4 个 2TB WD RE4-GP 驱动器,采用 RAID10 配置(4TB 可用)。我的空间不足(剩余可用空间小于 1TB)。我有 0 美元可用于购买更大/更多驱动器/机箱。
我喜欢我读到的有关 ZFS 数据完整性特性的内容,这些特性本身就足以让我从现有的 XFS(软件)RAID10 切换。然后我读到了 ZFS 对 RAID5 的卓越实现,所以我想我什至可以使用 RAIDZ-1 在讨价还价的情况下获得多达 2TB 的可用空间。
不过,我一直在读更多和更 帖子说差不多,只是从不使用RAIDZ-1。只有 RAIDZ-2+ 足够可靠来处理“现实世界”驱动器故障。当然,就我而言,RAIDZ-2 没有任何意义。在单个池 (RAID10) 中使用两个镜像 vdev 会好得多。
我是不是很想将 RAIDZ-1 用于 4 个 2TB 驱动器?
我应该只使用一个包含两个镜像 vdev(基本上是 RAID10)的池,并希望压缩能给我足够的额外空间吗?
无论哪种方式,我都计划使用压缩。我只有 8GB 的 RAM(最大),因此无法进行重复数据删除。
这将在 FreeNAS 服务器上(即将替换当前的 Ubuntu 操作系统)以避免 ZFS-on-Linux 的稳定性问题。
我有 40 年的计算经验,但我从来没有构建过像这样的服务器,所以这可能是一个 n00b 问题。
我有一个客户将提供超高清音乐文件供下载。在这种情况下,这意味着 FLAC 压缩的 24/192Khz =~ 10GB/专辑。(不,我不想讨论产品的可取性,只是服务器配置。)目录将是大约 3,000 张专辑,包括超高和低清晰度版本(我猜是他们的 iPod),大约35-40TB 左右的原始数据。
由于这是一个非常专业的产品,市场规模相对较小(想想:在音频系统上花费超过 20,000 美元的人),这意味着服务器在大部分时间将 100% 闲置(或接近闲置)。我从 ColocationAmerica 获得了一个很好的主机托管服务,连接速度为 1Gbps,带宽约为 20 美元/TB,所以现在我只需要构建一个盒子来运送货物。
数据访问用例是一次写入/多次读取,所以我只想将软件 RAID 1 用于驱动器对。这将允许我(我认为)即时为发生故障的驱动器重新配置备用驱动器,从而能够在某些系统管理员注意到系统上的红灯之前开始重建第二个驱动器(他们可以免费换出)。如果不需要大多数驱动器,我可以让大多数驱动器进入睡眠/降速状态,那就太好了,这将是大多数驱动器的大部分时间。
我不需要太多的计算能力——这个东西只是把胖对象推到管道里——所以 CPU/主板可以非常适中,只要它可以支持这个数量的驱动器。
我目前正在考虑以下配置:
Chasis: Supermicro CSE-847E26-RJBOD1
Drives: 30 4TB SAS drives (Seagate ST4000NM0023 ?)
MB: SUPERMICRO MBD-X10SAE-O w/ 8GB
CPU: Xeon E3-1220V3 3.1GHz LGA 1150 80W Quad-Core Server
Run Code Online (Sandbox Code Playgroud)
那么,我是在朝着正确的方向前进,还是这是一种完全解决问题的 n00b / 恐龙方式?
更新以澄清几点: