我不太确定这是否是提出此问题的正确位置,如果不是,请随时将其迁移到适合它的任何地方。
我正在我的实验室机器上的 ESXi 5.0 下的 Solaris 11.11.11 VM 中测试 ZFS v31 中的加密功能。dd在 11 磁盘 RAIDZ3 上放置我的加密文件夹时,我得到了糟糕的结果。
dd 基准:
# time dd if=/dev/zero of=/mypool/storage/dd.tst bs=1024000 count=10000
10000+0 records in
10000+0 records out
real 1m52.604s
user 0m0.010s
sys 0m2.715s
# time dd if=/mypool/storage/dd.tst of=/dev/null bs=1024000
10000+0 records in
10000+0 records out
real 3m15.547s
user 0m0.015s
sys 0m4.768s
Run Code Online (Sandbox Code Playgroud)
翻译成:
Write: 90.94 MB/s
Read: 52.366 MB/s
Run Code Online (Sandbox Code Playgroud)
使用 100% CPU 时。
相比之下,在没有加密的情况下,我的写入速度接近 700 MB/s,读取速度约为 900 MB/s。
如图isainfo -v所示,aes 被传递到 VM。
# …Run Code Online (Sandbox Code Playgroud) 我们必须定期将相当大的文件从 Solaris 复制到 Linux(使用网络)。目前一个文件需要近半天的时间。Solaris 中的文件位于 ZFS 文件系统上。
所以我想,这真是太糟糕了——我们也许可以在 Linux 上安装 ZFS。
但 ZFS 不是集群(或可集群)文件系统。
假设:所以我认为我们可以,因为我们只是从 Solaris 进行复制 - 我们可以以只读方式挂载相同的 ZFS 文件系统,因此在这种情况下不必进行集群?因为写入仅在 Solaris 端(我们无法在那里卸载它)。
Solaris 机器非常繁忙,网络网卡几乎也总是非常繁忙。因此,通过将文件副本移动到 FC,速度应该会更快。
该 Linux 机器是 VMWare 主机上的虚拟来宾。所以,是的,可以向 Linux 来宾提供相同的 FC 结构。
想法?我认为假设部分是我最需要寻找反馈的地方。不确定是否可以在 Linux 上进行 ZFS 只读挂载 + 在 Solaris 上同时进行读写挂载。
我正在编写一个脚本,它netcat在服务器上远程打开一个进程,该进程侦听输入并将其重定向到一个文件:
ssh $remote_upload_user@remote_upload_address "nc -l -p $remote_port > $remote_dir/$backup.gz&"
该脚本继续压缩 ZFS 快照pigz,然后将数据作为输入发送到netcat:
netcat $remote_upload_address -u $remote_port < $(zfs send -R $zpool@label | pigz)
当添加|pv到pigz(在括号内)的末尾时,它表明pigz正在处理数据,但是一旦数据传递给netcat我,我就会在客户端收到一个永无止境的乱码数据流,充斥着标准输出。
服务器显示它需要写入的文件的大小增加了 0。为什么这不起作用?
我是 ZFS 的新手,我想知道它是如何工作的。我使用多个名为 Tank 的磁盘创建了一个池。此外,似乎创建了一个以池命名的默认数据集。尽管如此,我不需要/想要这个默认数据集,但我只想使用在默认数据集上创建的其他数据集:
# zpool status
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
scsi-35000c5008576aa6b ONLINE 0 0 0
scsi-35000c50057cf7473 ONLINE 0 0 0
scsi-35000c50085f5f207 ONLINE 0 0 0
scsi-35000c50085c22ce3 ONLINE 0 0 0
scsi-35000c50085f5eea3 ONLINE 0 0 0
scsi-35000c5008521b903 ONLINE 0 0 0
scsi-35000c50085c13f57 ONLINE 0 0 0
scsi-35000c50057cf606f ONLINE 0 0 0
scsi-35000c50084989893 ONLINE 0 0 0
scsi-35000c5006367866f ONLINE 0 0 0
scsi-35000c50084269b7b ONLINE …Run Code Online (Sandbox Code Playgroud) 我一直通过 并将服务器 A 中的 ZFS 池备份到服务器 B(备份服务器)zfs send/recv,并使用每日增量快照。
服务器 B 充当备份服务器,分别为服务器 A 和服务器 C 保留 2 个池 (zfs41和zfs49/tank)
由于硬件问题,服务器 A 中的 ZFS 池现已消失 - 我想尽快恢复/恢复它。
目前我的服务器B中的快照列表如下:
NAME USED AVAIL REFER MOUNTPOINT
zfs41@2021Nov301205 14.9G - 3.74T -
zfs41@2021Dec011205 3.87G - 3.74T -
zfs41@2021Dec021205 3.77G - 3.74T -
zfs41@2021Dec031205 0B - 3.74T -
zfs49/tank@2021Nov301705 368G - 3.52T -
zfs49/tank@2021Dec011705 65.2G - 3.52T -
zfs49/tank@2021Dec021705 66.4G - 3.52T -
zfs49/tank@2021Dec031705 0B - 3.52T -
Run Code Online (Sandbox Code Playgroud)
zfs49/tank@2021Dec031705服务器 B …
我有一个硬盘。我想使用一个可以减少存储空间的文件系统,但作为权衡,请为我提供校验和或任何其他方法来帮助保持数据完整性。
据我了解,像 ext4 或 xfs 这样的东西不会这样做,因此您可能会遭受静默数据损坏,又名 bitrot。
zfs 看起来是一个很好的选择,但我读到的所有内容都表明您需要多个磁盘才能使用它。为什么是这样?我意识到只有一个磁盘无法容忍单个磁盘故障,但这就是多个备份方案的用途。备份无济于事的是像 bitrot 这样的东西。
那么我可以在单个硬盘上使用 zfs 来实现防止 bitrot 的单一目的吗?如果没有,你有什么推荐?
来自 Gentoo,我仍然习惯于分区和逻辑卷管理。刚刚安装并更新了 FreeBSD-11-RELEASE,使用整个 500GB 磁盘,如下所示:
% sudo zpool list
Password:
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 460G 10.7G 449G - 1% 2% 1.00x ONLINE -
Run Code Online (Sandbox Code Playgroud)
我正在努力了解监狱的概念。虽然我知道监狱类似于chroot命令,但我缺少以下命令中的含义:
zfs create -o mountpoint=/usr/local/jails zroot/jails
zfs create zroot/jails/fulljail1
Run Code Online (Sandbox Code Playgroud)
在艰难地阅读FreeBSD Jails 的同时。我可以在一个已经处于活动状态的池中为整个磁盘创建一个 zfs“分区”,还是需要在 BSD 安装程序分区屏幕中手动创建池大小?
使用 FreeBSD 11.1-STABLE,我有一个配置了 gzip-9 压缩的 ZFS 数据集,以及 8K 的记录大小。(此卷用于小文件的归档,而不是速度。)
zfs get all pool02/redactedStorage显示了 1.4 倍的压缩比,这比我预期的要差,但那里存储着文本文件和压缩文件的混合,所以并不令人担忧。然后我查看了该数据集中存储的一些大型 zip 文件,感到很困惑。
du -h和的输出du -hA不是我对压缩文件的期望。
例如,我预计 40 MB 的零文件几乎不会占用任何磁盘空间:
# dd if=/dev/zero of=testfile bs=4M count=10
# du -h testfile
512B testfile
# du -hA testfile
40M testfile
Run Code Online (Sandbox Code Playgroud)
但我预计 40 MB 的随机文件会消耗约 40 MB 的磁盘空间,因为它是不可压缩的(出于所有实际目的)。但没想到却消耗了近一倍的空间:
# dd if=/dev/random of=testfile.rnd bs=4M count=10
# du -h testfile.rnd
92M testfile.rnd
# du -hA testfile.rnd
40M testfile.rnd
Run Code Online (Sandbox Code Playgroud)
通过研究,它看起来像是间接块消耗了额外的空间。
对于testfile(零):
Dataset pool02/redactedStorage [ZPL], …Run Code Online (Sandbox Code Playgroud) zfs ×8
filesystems ×3
freebsd ×2
linux ×2
solaris ×2
compression ×1
encryption ×1
ext4 ×1
netcat ×1
replication ×1
snapshot ×1
x86 ×1
xfs ×1