2.5管理员播客第230期。我是Joe。我是Jim。我是Alan。我们又见面了。在我们开始之前,Alan,你有什么要补充的吗?管理和追踪存储性能。是的,这是一篇关于使用ZFS的一个功能的文章,该功能可以提供每个数据集的计数器。因此,当您有多个不同的文件系统时,您可以实际获取每个单独数据集的IO统计信息。所以如果你的
如果你的系统很忙,你可以帮助追踪哪些应用程序或系统中的哪些数据集导致系统繁忙。是这三件不同的事情很忙吗?是那台虚拟机导致系统繁忙吗?它可以真正帮助你追踪所有用量来自哪里。我们还在文章中提供了一些关于解释zpool-iostat直方图的非常好的技巧,这是一个非常有用的工具,我认为很多人并不知道它的存在或用途。是的,那里有一些标志。
添加了很多非常有趣的输出,并且在Jim的文章的帮助下,你可以真正理解所有这些不同数字的含义。好的,像往常一样,链接在节目说明中。
那么让我们来看一些新闻。OpenZFS 2.3已经发布,它包含一些很酷的功能。显然,最重要的一个功能是RAIDZ扩展。这个功能已经开发了近10年。我还记得我和Chris Moore一起合作如何启动和运行它,但它现在已经完全完成,可以工作,并且是OpenZFS 2.3的一部分。
这意味着如果你有一个6个驱动器的RAIDZ2,你可以添加第七个驱动器,它会重新分配数据,你会获得额外的空间,并且它会工作。
所以对于家庭用户来说,这是一个非常大的胜利。接下来是快速重复数据删除。让重复数据删除不再那么糟糕。它肯定仍然不适用于每个用例,但是快速重复数据删除比以前提供了更多可能性。部分原因是它还引入了重复数据删除配额的概念。因此,您可以限制DDT的大小,并在使用太多内存或从
你知道,你用来存储重复数据删除表的NVMe上使用了太多专用空间时停止重复数据删除。然后为了应对这种情况,一个重复数据删除修剪功能,允许你删除那些没有重复数据删除但比较旧的条目,这样你就可以继续添加新条目并从重复数据删除中获得最大价值,而不需要无限量的内存。如果你对细节感兴趣,我写了一篇文章测试Clara的快速重复数据删除与传统重复数据删除的性能。
你可以在那里找到它。如果你不愿意点击并阅读所有有趣的细节,我会告诉你TLDR。本质上,它比传统重复数据删除糟糕一半。启用重复数据删除会带来明显的性能损失。而且对于传统重复数据删除,这种损失非常高,我从未找到过
实际的用例。我多年来一直听到关于我表哥的前男友的情人曾在某个地方工作,在那里重复数据删除对他们非常有效,但我从未真正见过那个地方。快速重复数据删除带来的性能损失几乎正好减少了一半,在这个性能损失水平下,我
我可以想到很多地方它会很有用,再次强调,如果你能忍受性能损失的话。最大的区别在于,性能损失不会像传统重复数据删除那样急剧上升。对于传统重复数据删除,随着重复数据删除表越来越大,性能会越来越差,而且速度很快。而对于日志重复数据删除,快速重复数据删除,它不会像那样急剧上升。在更大的部署中,它会糟糕得多。
OpenZFS 2.3中最大的新功能是在最常用的命令上可选JSON输出。因此,ZFS list和Zpool status现在有-J或--JSON选项,并将数据以JSON格式输出。你未来的所有脚本都将变得更容易。
一个新功能是支持长达1023个字符的文件和目录名,也就是1023个字符。是的,这是从旧的255个字符的限制提高的。这很有趣,255和1023。这是因为你也支持零个字符吗?不,这是因为你必须在末尾添加一个零字节来标记为文件名结尾。对。
这不是EOF。这是EOF名称。对。是的,实际上是在末尾添加了一个不可见的空字节。所以它占据了第256个或第1024个字符。说实话,我不确定我认为这是一个功能。我认为这可能是一个该死的错误。
当用户在我的存储系统上创建连续的文件和文件夹名称时,我真的很不喜欢。当你需要水平滚动条来读取文件名时,就像你一样,你他妈的做错了,伙计。找到一个更好的方法来命名你的文件。这,这还不够好。是的。尽管这个用例实际上是非英语字符集,其中每个字母
字母实际上可能占用四个字节。因此,文件名在屏幕上仍然是相同的255个字母长,但是因为它们不是正常的ASCII字符,所以它们在内存中实际存储需要更多字节。因此,如果你使用俄语、中文或日语等书写,现在如果你用英语编写文件名,你的文件名长度就不会限制为四分之一了。酷。
如果你愿意,叫我混蛋,我会把它限制在1023个字节,你可以根据需要放入尽可能多的Unicode或非Unicode ASCII字符。这在发行说明中实际上可能是一个口误。它是1023个字节,而不是字符。
因为如果它们是Unicode字符,它实际上将是255个字符。对。叫我混蛋的部分是,我也会保留255个字符的限制。所以就像你一旦达到第一个字符就停止输入一样,无论哪个字符。我不在乎。任何语言。如果你在255个字符内没有完成,那就走开。尤其是在中文或日语中,我的上帝。
就像,那些字符大部分时候都是整个单词,伙计。你意识到你能用255个汉字说多少话吗?是的。无论如何,回到OpenZFS 2.3的功能列表。另一个重要的功能是DirectIO。这允许你在进行读或写操作时,将该写操作或该文件标记为请求ZFS不要缓存它。
因此,如果你正在写入一个文件,并且你知道我不会很快再次读取它,你可以设置它的直接标志,它就不会进入arc,因此它不会将其他有用的数据从arc中推出以腾出空间用于你刚刚写入的新文件,因为你说,嘿,我不会很快再次读取它。我只是现在写入它。或者同样的方式,你可以读取它并说,不要费心把它放在缓存中,因为我不打算很快再次读取它。
因此,你可以在备份时这样做,以确保你不会用那里的文件污染你的缓存。你知道,你只是读取每个文件。在一些政府实验室中,他们发现这可以帮助提高NVMe的性能,在那里腾出缓存空间的速度比直接从NVMe读取的速度慢。因此,它限制了他们从NVMe读取的速度。
我很想看到这些基准测试再次使用Clara打开的一个新的pull request进行,该pull request允许从arc中逐出多线程化,以尝试解决同样的问题,但是我们肯定仍然希望缓存中的数据。就是这样,Alan。你刚刚说了魔法词,多线程。我一直坐在那里,我的牙齿一直在打颤。我非常想打断你,因为我想,当然可以增加它,你知道,对于NVMe上的非常高吞吐量的任务,因为这些任务在单线程CPU性能上存在瓶颈。
因此,如果你摆脱了在同一个CPU线程上发生的与arc相关的任务,你可以获得更多存储吞吐量,而这取决于你可以从处理器上的单个线程中获得多少工作量。但是,正如Alan所说,我们尽可能地打破对单线程性能的依赖,并能够将任务分散到多个线程上,对于现代CPU来说,这在性能上是一个巨大的差异。现在,关于这一点的另一件事是,你知道,如果你谈论的是存储,你只需要通过网络进行传输。
好吧,如果它是1千兆网络,你的处理器会很好。只要你的存储设备能够跟上,它就可以保持1千兆的饱和状态。但是一旦你升级到10千兆,它再次变得非常容易在单个核心的性能上出现瓶颈。是的,更不用说当你达到40千兆及以上时了。
那么我什么时候才能得到这个?我什么时候才能获得所有这些很酷的新功能?问问Shuttleworth,伙计。你是Ubuntu用户。你今天就可以拥有它们。如果你使用Ubuntu,从技术上讲,你是在等待2604吗?差不多。是的。但是其他发行版很快就会发布这个。这作为候选版本在FreeBSD 15中已经有一段时间了。
如果你从DKMS或其他地方构建你的ZFS,那么你今天就可以拥有它。它是在星期一出版的。是的,因为它支持Linux内核4.18到6.12。所以这可以追溯到很久以前。好吧,当然,但是Joe,你打算如何构建它?你打算从源代码构建你自己的吗?我认为你实际上想要一个软件包,这就是为什么我说问问Shuttleworth。
我的意思是,对我来说,但是对于那些真正想要它的人来说,它在非常旧的发行版中受支持。是的,好吧,它仍然必须与CentOS或Red Hat Linux的最旧受支持版本一起工作。
但是真正重要的是,它们支持一直到6.12,我认为在2.2分支中没有这个支持。另外,我认为可能性很大。你可能不需要等到2604。没有任何承诺。不要认为我是在谈论内部信息。我没有与Canonical的任何人就此进行过任何对话,但我温和地预计这可能会出现在2510中。
即使你不想自己安装2510,可能性通常也相当大,因为我们在这里谈论的大部分内容实际上归结为内核升级。这是非常重要的部分,内核模块升级。
所以我不会对25.10发布后不久,假设25.10发布了新版本,你很可能会获得向使用HWE内核的24.04反向移植的选项感到惊讶。但我们只能拭目以待。我认为我们没有看到22.04发布2.15或20.04发布0.8的情况。据我回忆,我们最终做到了,是的。但是,如果你想要它……
Clara作为我们ZFS支持订阅的一部分提供服务。我们将为你提供一个包含适用于Ubuntu 24.04的工作OpenZFS 2.3的仓库。叮当。干得好,Alan。很好的宣传。好的。本期节目由ServerMania赞助。访问servermania.com/25A即可获得终身15%的专用服务器折扣。
ServerMania是一家加拿大公司,拥有超过十年的经验,为全球企业构建高性能基础设施托管平台。ServerMania在全球8个地区提供高达20 Gbps的网络速度,以优化全球覆盖范围。他们拥有灵活的自定义服务器配置,可满足独特的需求,以及提供免费咨询的个人客户经理。
凭借全天候实时聊天支持和少于15分钟的支持工单响应时间,您可以始终保持系统的平稳运行。Alan已经成为ServerMania的忠实客户超过七年了,因此请支持该节目,并加入他,加入一家真正提供服务的托管提供商。在servermania.com/25A获得终身15%的专用服务器折扣,并使用代码25ADMINS。这是servermania.com/25A和代码25ADMINS。
那么让我们来进行一些免费咨询。但首先,非常感谢所有通过PayPal和Patreon支持我们的朋友。我们真的非常感谢。如果你想加入这些人,你可以访问2.5admins.com/support。记住,对于Patreon上的各种金额,你可以获得一个无广告的RSS订阅,内容可以是本节目或Late Night Linux系列的所有节目。如果你想向Jim和Alan发送任何问题或你的反馈,你可以发送电子邮件到show@2.5admins.com。
成为赞助人的另一个好处是你可以跳过队列,Jesse就是这样做的。他写道:“我不小心将ISO部分写入备份U盘,我希望有一种方法可以恢复数据。我一直在将不同的Linux ISO写入U盘,在插入西部数据U盘后,我使用的任何写入ISO的软件都将目标驱动器从U盘切换到西部数据,我注意到得太晚了。
我立即停止了程序,但是我非常业余的恢复尝试没有成功。我认为文件系统是ext4或fat32,或者可能是exfat。所以这有点取决于。任何被ISO实际覆盖的数据,你都无法真正恢复。你知道,它已经被覆盖了。现在那里有不同的数据。但是大部分没有被覆盖的数据可能仍然存在。这主要取决于文件系统是否可恢复。
首先,无论你正在写入的程序何时开始将ISO覆盖在上面,它都会覆盖分区表。这意味着你甚至找不到文件系统从哪里开始。但是如果它是一个现代磁盘,它很可能有一个GPT分区表,该表在磁盘末尾保留分区表的备份副本。因此,使用GDisk或你在Linux上使用的任何普通实用程序,你可以恢复该GPT分区表并……
从驱动器末尾获取副本并将其放回开头。同样,ext4等文件系统在开头附近有一个超级块,这对于读取文件系统至关重要。但是它们通常还在末尾保存第二个副本。像fsck这样的程序旨在恢复,你知道,以防第一个超级块在断电时被写入或损坏,则可以
能够使用该备份超级块并提供多个文件系统。但这确实取决于覆盖了多少数据。你知道,你说你立即停止了它,但是你覆盖了几兆字节还是几百兆字节?这将对你能否恢复数据的可能性产生很大影响。
不知道它是哪个文件系统会使这变得更加困难。尽管如果你可以恢复分区表,那么那里的标签实际上可能会告诉你它是FAT还是exFAT,或者它实际上是否是,你知道,如果它标记为Linux-data,那么它可能是ext4。正如Alan所说,对于ext4,你有一个备份超级块,所以你通常可以从意外覆盖中恢复。我的意思是,你至少可以从意外覆盖驱动器的早期部分中恢复大部分文件。
但是,对于FAT16、FAT32或XFAT,FAT分配表(FAT的缩写)
不幸的是位于分区的开头。如果你覆盖了FAT文件系统的最初几个扇区,那么如果没有一些相当繁重的重建手术,它将实际上无法使用。如果你写入超过最初几个扇区,那就完成了,因为你将获得目录表。如果你破坏了目录表,那么实际上没有任何东西可以告诉任何人哪些扇区属于哪些文件,甚至你实际上有多少个文件。那是……
在这种情况下,你的最后手段是一个名为Photo Rec的程序。所以是Photo R-E-C。
它基本上可以扫描磁盘上的原始数据,并查找标有“这是一个JPEG”之类的标头,然后继续读取,直到它停止成为JPEG或找到下一个“这是一个JPEG”的东西。因此,它可以从损坏的文件系统中恢复内容。虽然最初它是为我的相机的闪存卡编写的,我的相机的闪存卡由于相机电量不足或其他原因而损坏。因此,它主要针对相机。
在照片中,但它可以找到很多东西,并且经常可以为你恢复内容。例如,你可以找到zip文件、Office文档、PDF文件、JPEG和其他许多文件格式。并且
通常能够挑选出文件系统中的一些文件,而无需实际尝试解释文件系统,因为正如Jim所说,如果你写了fat表和目录中的那一部分,你知道你甚至无法恢复文件名,但是如果你担心的是这一点,你可能能够恢复很多文件,但是你的问题中说这是备份,所以如果只是备份,那就做一个新的备份吧
你至少有三个副本的所有文件,对吧?对Alan所说内容的一个更正。Photo Rec不是最后一站。它是倒数第二站。还有一个更进一步的,你可能不想参与。但是,如果它值800美元,让你知道你是否可以从该驱动器中获取所有内容并将其恢复……
我知道的两个大型驱动器恢复机构是Drive Savers和Gilware。我个人一直更喜欢Gilware。他们收费800美元。这是最低价。
它的工作方式是,你将你的驱动器发送给他们。你不必给他们任何钱。他们会查看它,然后他们会看到他们可以恢复什么,他们会给你一个很好的主意,有多少数据(如果有的话)可以恢复。然后他们会给你报价。现在这个价格最低是800美元。根据我的经验,这个最低价格通常也往往是单个驱动器的最大价格,而不是像RAID阵列或池。
在你的情况下,这是一个简单的文件系统,所以它真的应该如此。现在,如果它是一个ZFS池,他们往往会对ZFS或Butter恢复收取更多费用,因为尝试从随机碎片中将文件系统重新组合在一起对于写时复制文件系统来说要困难得多。
但是,再次强调,如果恢复数据对你来说值800美元,它的工作方式是,你将驱动器发送出去。他们会查看它。他们会告诉你他们可以得到什么。然后,你要么说,是的,我愿意支付800美元或他们报的任何价格,在这种情况下,他们会将数据发送给你,放在一个新的驱动器上。或者你说,不,我不想这样做。你可以选择让他们就地处理驱动器,或者将它寄回,你支付运费。
我已经多次使用过Gilware,他们比我更擅长从损坏的驱动器和系统中恢复数据。对于那些不是数据恢复专业人员的人来说,我认为我在这方面已经相当不错了。因此,如果你愿意花800美元来恢复一些数据,我建议你尝试Gilware。现在,再次强调,我希望你们中大多数收听本节目的人永远都不愿意这样做,因为你们都有备份。
我从未将其用于我自己的东西,因为我备份我的东西。我有使用这些服务的经验,因为我经常遇到一些客户,他们在雇用我之前并没有像他们应该的那样好地备份所有东西。Jesse不确定……
关于文件系统,它可能非常轻微地可能是NTFS,收听的人可能也遇到过NTFS的情况。那么,他们能做些什么呢?NTFS的一个有点优势是它使用MFT,即主文件表,它出于某种原因将其保存在驱动器的中间。因此,事实证明,如果你覆盖了驱动器的开头,你不会破坏它。尽管我不知道开头处是否存在某些元数据和结构性内容,这会使它
无法尝试实际挂载它,但它不像FAT那样将等效于文件分配表保存在驱动器的开头,因此,如果它是NTFS并且你覆盖了驱动器的开头,你可能会有更好的恢复机会。Patrick也是一位赞助人,他跳过了队列。他写道:“根据你的建议,我更新了我的DMARC设置以开始获取报告,并且我开始阅读它们。我的问题是,我现在应该如何处理这些信息?
我刚刚了解到,香港的一个IP地址一直在冒充我,骚扰我从未听说过的一个日本网络托管商。我的DMARC策略已经是拒绝,但是除了朝这个IP的方向挥舞拳头之外,我还能做些什么呢?
既可以又不可以。你是否可以做一些实际上可能产生良好结果的事情?这是一个更难回答的问题。所以基本上,你在这里要做的是,你实际上会查找滥用行为来自的实际IP地址的滥用联系人。你会联系管理该网络的人员,你会提出投诉,你知道,他们网络上的某人一直在使用他们的网络来滥用另一个网络。
现在,如果他们在香港的任何地方都相当于Linode、DigitalOcean、Azure或其他什么,那么这就足够了。就像你很快就能让他们从列表中删除一样。他们将失去对他们正在释放的任何资源的访问权限。但是,通常你在这里看到的是,这要么是一个案例,即某个地方的服务器被入侵并且实际上已被放弃。没有人真正维护它,这……
这使得可能性非常大,即网络段几乎处于相同的状态,并且很难让任何人关心正在发生的事情。或者它是一个所谓的“防弹主机”,整个网络都非常清楚它的生命目标是滥用世界上其他所有人。如果你向他们抱怨他们的一个IP地址一直在滥用其他IP地址,他们会嘲笑你,因为,你知道,好吧,这就是他们付钱给我们做的事情。
使用这些DMARC报告最有效的方法通常只是将它们归档。这实际上取决于你是否有时间尝试追踪这些滥用报告并采取措施。要么只是你必须在某个地方发泄的侵略性,要么是公民责任感,感觉你知道如何去做,你可以去做,你有时间,因此你应该去做。
老实说,我年轻的时候经常做最后一件事情。如今,我通常觉得我没有足够的时间来获得追捕防弹主机所获得的那么少的成功。我最后一次真正感到有效地让防弹主机感到紧张是在我为Ars Technica工作的时候,我可以在Ars的首页上大喊大叫。这有时会产生结果。
有时。是的,真正有用的DMARC,尤其是在你刚开始设置时,是获取任何你的邮件被拒绝的报告,例如你的合法邮件被拒绝,因为你的DKIM等等没有正常工作。一旦它启动并运行并且你的邮件正常流动,是的,它主要只是噪音。
Bostjan也是一位赞助人,他也跳过了队列。他写道:“我有一个6个驱动器8TB可用空间的ZFS池,它被组织成3个2磁盘镜像。我想用2个10TB驱动器替换所有6个当前磁盘,并保持池的创建日期不变。我该如何操作?”
好吧,理论上,你可以通过重新镜像和使用设备撤离功能的组合来做到这一点。你首先需要使用两个10TB驱动器重新镜像一个镜像VDEV中的两个驱动器,并让它自动扩展。这将为你提供你需要的能力,以便能够随后从池中删除另外两个镜像VDEV。但是,不要这样做。那将是一个非常糟糕的主意。
问题是,当你使用设备撤离功能时,该功能在ZFS中相对较新,它仅适用于你仅使用单个驱动器或镜像VDEV的情况,并且如果池中的每个驱动器都具有相同的A shift,
那么你可以删除你意外添加的VDEV。但是此功能旨在帮助你从“哎呀,我在执行Zpool add时忘记键入mirror以将几个新驱动器添加到系统中”中恢复。因此,这允许你删除你意外添加的两个新驱动器,作为单个VDEV,而不是必须将它们扩展为两个驱动器镜像VDEV以保持冗余。
当你这样做的时候,没问题。但是这个工具的设计目的并不是为了处理一个你已经使用了多年、数据在多个 VDEV 中平均分布且几乎填满 VDEV 的池,然后你决定通过移除 VDEV 来更改拓扑结构。它允许你这样做吗?是的。不幸的是,它的工作方式是所有位于你已移除的 VDEV 上的块……
一开始它们看起来仍然像是在丢失的 VDEV 上,但是当你查找它时,ZFS 会发现,哦,不,那些 VDEV 消失了。有一个查找表告诉我这些块移动到了哪里。你也可以把它想象成给地址改变的人寄信,邮寄信件。你把它寄到邮局。邮局有一个记录,说明寄到那个地址的信应该寄到新家,最终它会到达那里,但是会有延迟。
现在,再说一次,如果我们这里只谈论几个块,这真的不是什么大问题,你不应该担心。如果你添加了一两个驱动器,并且它们在那里待了几天,你知道,可能添加了几百兆的数据,你可能会想,哦,好吧,这需要立即处理。没问题。
但是对于你想做的事情,不,你真的只需要创建一个包含你的 10TB 驱动器的新的池。将所有数据迁移到它。然后,Alan,你知道有什么方法可以保留 Zpool 的创建日期吗?实际上,日期只是装饰性的。因此,你可以在运行 Zpool create 命令之前将计算机时钟设置错误。你将在 Zpool 历史记录和数据集的 ZFS 属性中获得……
它认为你创建它的日期。而且,你知道,如果碰巧是你从原始池中输入的 2015 年的某个日期,那么你可以这样做。我不知道保留池的创建日期的价值是什么。它再次纯粹是装饰性的。它实际上并不重要。
但是是的,对于 Jim 的观点,使用设备撤离的最大问题是,除了你正在遍历查找表之外,它还会使一切变慢。由于间接 VDEV 的工作方式,查找表必须驻留在 RAM 中。因此,你基本上是在浪费大量的 RAM,直到该数据的每个块都被覆盖。随着时间的推移,随着你覆盖数据并将其直接写入正确的 VDEV(而不是间接写入已移除的 VDEV),该表将缩小。
但我猜这里很多数据都不是你会更改的数据。因此,它将保留在这个间接表中,永远占用你大量的 RAM。是的,创建一个新的池是一个好得多的主意。我认为保留创建日期的想法有点像过去炫耀运行时间。我认为 Boston 只是想说,看,我已经成功地维护了这些数据这么长时间而没有出现故障。这是证明。这是我的池创建日期。
这在这里并不准确,因为你已经从一个池转移到了另一个池。有两种看待这个问题的方法。一种是说,好吧,你文件上的所有元数据都将保持不变。因此,衡量你作为存储管理员有多优秀的一个真正标准是,看看你最旧的数据。例如,你已经完整地维护了多长时间?
在这方面,我的机器上仍然有一些文件,其日期戳从 1988 年开始就保持不变。因为它们,你知道,从一台机器转移到下一台,再到下一台,再到下一台。另一方面,你知道,如果你真的只关注池的创建日期等等,你知道,
这里有两点需要注意。一是,是的,你可以通过查找原始创建日期并将计算机时钟设置为该日期,然后创建新的池来获得相同的池创建日期。但是,这是在撒谎。所以你要么接受谎言,要么这是我的建议。如果你真的想为此疯狂一下,并且,你知道,有点注意一下,你知道,你在做这件事。
我会非常想将我的系统时间设置为 Unix 时间,例如 Unix 时间的创建日期,1970 年 1 月 1 日,然后创建你的池。让某人使用 ZDB-U 并查找你的池创建日期,看看它是在 Unix 之日诞生的。这很酷。是的,你不需要使用 ZDB 来做到这一点。如果你使用 zpool history 然后是池名称,
这是一个环形缓冲区,显示池中发生的最后几件事,但它始终将原始创建命令保留在环的顶部。因此,它将包含日期和你用来创建池的确切命令。好吧,我们最好离开这里。记住,如果你想发送任何问题或反馈,请访问 2.5admins.com。你可以在 joerest.com/mastodon 找到我。你可以在 mercenariesysadmin.com 找到我。我在 Alan Jude。我们下周见。