我知道 Windows 文件系统对碎片非常敏感,而 UFS、ZFS、ext3 或 ext4 等 Unix 则不那么敏感。
但是,是否有任何理由对这些文件系统进行碎片整理?
如果是这样,有哪些工具可用?
我有一个写入 ext3 目录的应用程序,随着时间的推移,该目录已增长到大约 300 万个文件。不用说,读取这个目录的文件列表是慢得无法忍受的。
我不怪 ext3。正确的解决方案是让应用程序代码写入子目录,例如./a/b/c/abc.ext而不是仅使用./abc.ext.
我正在更改这样的子目录结构,我的问题很简单:我应该期望在一个 ext3 目录中存储大约多少文件,同时仍能获得可接受的性能?你有什么经验?
或者换句话说;假设我需要在结构中存储 300 万个文件,该结构应该有多少层深./a/b/c/abc.ext?
显然,这是一个无法准确回答的问题,但我正在寻找一个球场估计。
我正在考虑构建一个更大的 ZFS 池(150TB+),我想听听人们关于由于硬件故障导致数据丢失情况的经验,特别是区分仅丢失一些数据的实例与整个文件系统(如果在 ZFS 中甚至有这样的区别)。
例如:假设 vdev 由于外部驱动器机箱断电或控制器卡故障等故障而丢失。从我读到的池应该进入故障模式,但如果返回 vdev 池应该恢复?或不?或者如果 vdev 部分损坏,是否会丢失整个池、某些文件等?
如果 ZIL 设备出现故障会怎样?或者只是几个 ZIL 之一?
真正感谢以深厚的技术知识为后盾的所有轶事或假设场景!
谢谢!
更新:
由于我们是一家小型企业(大约 9 人),因此我们以低廉的价格执行此操作,但我们生成了大量成像数据。
数据主要是小文件,据我统计,每 TB 大约有 50 万个文件。
数据很重要,但不是超级关键。我们计划使用 ZFS 池来镜像 48TB 的“实时”数据阵列(使用了 3 年左右),并将其余存储用于“归档”数据。
该池将使用 NFS 共享。
机架应该在建筑物备用发电机线上,我们有两个 APC UPS,能够在满载时为机架供电 5 分钟左右。
我有以下树
# upper letters = directory
# lower letters = files
A
|-- B
|-- C
|-- D
|-- e <= file
|-- F
|-- G
Run Code Online (Sandbox Code Playgroud)
我需要将此树复制到另一个目的地,递归地忽略所有空目录。所以目的地最终看起来像:
C
|-- e
Run Code Online (Sandbox Code Playgroud)
你会如何用 unix、rsync 等来做到这一点?
我知道使用 lsof 来检查进程当前访问的文件。有没有办法查看应用程序在其生命周期中打开的所有文件?
您可以创建一个具有类似权限的用户root,并且它的主目录将属于/home/username. 为什么root在文件系统的顶层有自己的文件夹?这只是惯例、安全问题,还是与性能相关的原因?
我有一棵具有正确权限的文件树。然后我有一个(文件方式)相同的树(具有不同的文件内容),但权限错误。
如何将权限布局从一棵树转移到另一棵树?
一个 Unix 文件夹可以容纳的最大文件数是多少?
我认为它将与文件数量相同。
我有一个外部驱动器连接到我的 Mac,我正在尝试确定诸如这是 HFS 还是 FAT,它是 32 位还是 64 位等。似乎应该有一些简单的命令这给了我这个信息,但我似乎找不到一个。想法?
什么命令可以告诉我上次文件系统被 fsck 的时间?约会会很好,但我会接受自上次 fsck 以来的装载计数。
我在 fsck*、lsattr 和 stat 中四处寻找这个,但我没有看到。
filesystems ×10
linux ×5
unix ×2
backup ×1
copy ×1
defrag ×1
ext3 ×1
hard-drive ×1
linux-kernel ×1
lsof ×1
mac-osx ×1
partition ×1
permissions ×1
rsync ×1
storage ×1
zfs ×1