是否存在最适合 torrent 分区的文件系统?

是否存在最适合 torrent 分区的文件系统?

很好的答案由用户 Gilles 提供,我想问一下是否有一个文件系统特别适合相当重度的 torrent 使用。

很快我将使用以下命令设置一个 Ubuntu 盒子:

  • / [ext4]
  • /home [ext4]
  • /媒体/数据 [ext4]
  • /媒体/种子 [?]

通常我会将 /media/torrents 分区设为 ext4,而不考虑其他选项。但是,根据上面链接的信息,也许还有更好的选择。

建议的 /media/torrents 分区将被 24/7 读取和写入,但只能达到分区容量的约 85%。

答案1

Ext4 可以很好地处理这个问题,这基本上是 Gilles 所说的。将磁盘分成 4 个分区也没有什么好处。您很可能最好最多使用 / 和 /home 分区。

答案2

简短回答:在 torrent 缓存分区上使用 Ext2。还可以使用以下挂载选项:noatime、nodiratime、nosuid、noguid、noexec

答案很长,嗯...你敢读吗?
(另外,这个论坛严重破坏了良好的格式和间距...谢谢)

如果可以的话,我建议你将驱动器分成两个主分区。我知道一个运行良好的设置,它是在一台带有 160 GB 硬盘的旧笔记本电脑上完成的。硬盘被分成 60GB,挂载 / ,系统全部加载在上面。第二个分区是 100GB,挂载到第一个分区的 /tor 点。第一个分区如此大的原因是这台笔记本电脑还托管了 Deluge、CouchPotato、SickRage、HeadPhones 和 Emby。它们占用了大量的缓存来下载元数据(对于连接的 4TB USB 驱动器媒体)

Torrents 目录 /tor 将需要大量随机读写,大约一半的内容需要同时、始终进行......在 SSD 加载到第二个驱动器托架之前,它只能与服务器部分共享这一可怕的负载。

EXT4 是一个日志文件系统,这意味着它会跟踪所有这些额外的小变化,并将它们记录下来。但是,您可能不太关心此功能、任何校验和功能,以及记录每次写入文件的“修改”日期的任何功能,这些功能只会增加 I/O 计数,从而增加延迟。您不需要冗余,也不太担心数据完整性或寿命。大多数 torrent 应用程序中都有一个设置,它会在将这些已完成的文件移动到“完成”文件夹(或另一个驱动器)之前重新检查它认为刚刚完成的文件组是否存在错误。对于 Torrent,您将很高兴通过将第二个分区切换到不同的文件系统(我目前正在为您研究)来减少系统负载,此外还有更多选项可供您使用。

例如,当您首次在计算机或新驱动器上对 Ubuntu 进行分区时,您可以选择如何使用该分区或驱动器。分区类型:Ext2。2?不是 4?你会问?好吧,2 是非日志式的。3 和 4 是。另外,我在谷歌上搜索了一件事……http://www.linux-magazine.com/Online/Features/Filesystems-Benchmarked所以请检查一下。这些值并非在每种情况下都正确,但对于我们的需求来说,它已经很棒了。我们需要小随机写入的高吞吐量。忽略第一个图表,它是读取,并且是顺序读取。第二个图表,Ext2 就在那里(我唯一建议更快的是 XFS)。抱歉,请看第四个图表,我的错,第二个图表是顺序写入(虽然很折磨你,但你永远不会有),相反,图 4 显示了 32MB 随机写入的比较。这正是你想要的这个列表中性能最快的驱动器(以及在完成下载并即将移动它时的顺序读取)。

我想说的是,我正在考虑尝试弄清楚如何以类似于其工作的方式安装 SWAP 分区。

现在,它归结为小事,所有微小的额外 IO 在执行正常文件系统操作时都不会产生任何影响。日期。“上次修改”或“上次访问”和“上次保存”和“上次写入者”等等。每次您的 torrent 客户端将 RAM 缓存刷新到磁盘时,所有刚刚收到 500kb-4MB 块的文件都需要更新这四个日期以及您的 SUID(用户 ID)和(guID)组 ID。猜猜怎么着?您的驱动器(如果是高级格式)有 512KB 扇区,或者有 4196KB 扇区,这意味着如果此扇区中的某些内容发生变化,它将重写整个扇区。(或者我可能将其与扇区的部分填充混淆了,如果是这样,请原谅)。但基本上,您一次写入 500 KB 左右的数据,现在必须更新分布在文件或驱动器上的 5 个元数据(碎片),并且这 5 个元数据中的每一个都需要臂/头找到其位置,读取原始数据,将其发送到处理器,对其进行处理、修改和返回,然后在这 5 个额外扇区中的每一个上重新写入磁盘。那么我们如何阻止这种情况?我不确定,在挂载点选项中,但可能有一个选项。就新的 UBUNTU 设置而言,进入“挂载选项”,然后选择以下内容:noatime - 无访问时间 - 每次访问时不更新 inode 访问时间 nodiradate - 无目录访问时间 - 不更新目录 inode 访问时间 relatime(我不知道这个选项是干什么的)nodev 不要设置这个,我认为它基本上在每个其他驱动器中的相同目录结构位置放置一个符号链接,并且基本上允许它们将其对所述符号链接文件的所有写入重定向到您正在挂载的这个驱动器。反之亦然。但可能是错的。nosuid - 忽略 set-user-identifier 或 set-group-identifier 位(如果您有两个以单独用户身份运行的守护进程需要在它们之间传递文件,则很有用)noexec - 不允许执行任何二进制文件(这是一个很好的安全想法,但如果您下载的软件而不是电影和电视、音乐,那么我建议您不要使用这个,因为您很快就会对它感到厌烦)。但是对于消除自动下载系统的许多威胁非常有用。ro - ....您不想要此同步 - 我相信它与多个驱动器上的成对、跨区或阵列卷有关,它将尝试按比例周期读写内容 usrquota - 幸运的是,如果 torrent 分区填满 100%,驱动器仍然可以访问并且不会完全锁定,因此我们不需要此选项。grpquota - 与上面相同,不需要 usr_xattr -http://manpages.ubuntu.com/manpages/xenial/man5/attr.5.html(扩展属性)

将文件保存在靠近驱动器或分区的根目录,路径越短,路径长度越短,索引越短,并且可能(不明显)缩短 I/O 时间。

顺便说一下,这里有很好的资源: http://manpages.ubuntu.com/manpages/xenial/man8/mount.8.html

可以加速 torrent 缓存驱动器的方法: - 使用非日志文件系统 (Ext2) - noatime、nodiratime、relatime、nosuid、noexec。 - 使用短挂载点或目录(软件在目录层次结构中的上下移动越少越好)

在该安装手册页上,还有更多选项可供使用。如果您使用我选择的选项(仅通过 ubuntu 安装上的新分区菜单),那么您的 torrent 客户端将需要在不知道每个块的日期的情况下生存,它需要满足于在最后写入这些数据(FS 通常会记录所有小日期,所以我们在这方面做得很好),您将无法从该目录运行任何下载的软件(将其移动到另一个分区),分区的内容基本上会有一个 666 访问代码,每个人都可以查看、读取、写入、删除、复制此分区内的每个文件和目录。虽然你可能可能能够将挂载点 (/tor) 的权限设置为仅允许您的客户端和您自己。因为没有 UID 或 GID,文件系统将不关心谁访问了这些内容。(这对您的隐私非常不利,间谍软件、NSA 和所有那些版权侵权执法人员的风险都可以看到您驱动器上的内容。但同样,可以阻止来自挂载点的所有其他访问。拆分驱动器上的任何其他项目在(不是如果)发生故障时与该缓存驱动器一起发生故障的风险更大。您的 torrent 客户端将(如果启用设置)在每次下载标记为完成时重新检查其是否完成,并发现文件中的任何问题,更正它们(或抛出错误,您需要手动告诉客户端重新检查下载),通常在移动它之前(根据完成移动规则)。您将希望在之后尽可能多地保留种子,而不是立即重新定位它们。

相关内容