问题标签 [filesystems]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 对 SD/USB 的突发写入使我在嵌入式 Linux 上的时间关键型应用程序停滞不前
我正在开发一个嵌入式 Linux 项目,该项目将 ARM9 连接到硬件视频编码器芯片,并将视频写入 SD 卡或 USB 记忆棒。软件架构涉及将数据读取到缓冲区池中的内核驱动程序,以及将数据写入已安装可移动设备上的文件的用户级应用程序。
我发现在超过一定的数据速率(大约 750kbyte/sec)时,我开始看到用户级视频编写应用程序停止大约半秒,大约每 5 秒。这足以导致内核驱动程序耗尽缓冲区——即使我可以增加缓冲区的数量,视频数据也必须与其他实时发生的事情同步(最好在 40 毫秒内)。在这 5 秒的“滞后峰值”之间,写入在 40 毫秒内完成(就应用程序而言 - 我很欣赏它们被操作系统缓冲)
我认为这个延迟峰值与 Linux 将数据刷新到磁盘的方式有关——我注意到 pdflush 被设计为每 5 秒唤醒一次,我的理解是这就是写作的目的。一旦停顿结束,用户态应用程序就能够快速服务并写入缓冲区的积压(没有溢出)。
我认为我正在写入的设备具有合理的最终吞吐量:从内存 fs 复制 15MB 文件并等待同步完成(并且 USB 棒的指示灯停止闪烁)给了我大约 2.7MBytes/sec 的写入速度。
我正在寻找两种线索:
我怎样才能阻止突发性写入停止我的应用程序——可能是进程优先级、实时补丁或调整文件系统代码以连续写入而不是突发性写入?
如何让我的应用程序知道文件系统在写入积压和卡/棒的吞吐量方面发生了什么?我有能力动态更改硬件编解码器中的视频比特率,这比丢帧或对最大允许比特率施加人为上限要好得多。
更多信息:这是一个 200MHz ARM9,当前运行基于 Montavista 2.6.10 的内核。
更新:
- 挂载文件系统 SYNC 会导致吞吐量太差。
- 可移动媒体为 FAT/FAT32 格式,设计目的必须是媒体可以插入任何 Windows PC 并读取。
- 定期调用 sync() 或 fsync() 说,每秒都会导致定期停顿和不可接受的低吞吐量
- 我正在使用 write() 和 open(O_WRONLY | O_CREAT | O_TRUNC) 而不是 fopen() 等。
- 我无法立即在网上找到有关上述“Linux 实时文件系统”的任何信息。链接?
我希望这是有道理的。关于stackoverflow的第一个嵌入式Linux问题?:)
operating-system - 文件修改时间和文件更改时间有什么区别?
我对术语文件修改时间和文件更改时间感到困惑。任何人都可以帮助使其更清楚吗?
filesystems - 网络托管网站的文件存储策略
我将托管用户提交的文件。我需要从文件中获取一些数据,然后将其移动到某个目录。
此文件的生命周期有两个兴趣点。第一个是数据被抽象化的时候,第二个是文件被归档以便可以共享的时候。
当数据被抽象时,我认为将文件重命名为唯一的文件或将唯一的字符串附加到文件名以防止它覆盖其他现有文件。
当文件要归档时,我想到了三种策略。一种是将从某个数据上传的所有文件保存在一个文件夹中。(2006/sept/04, 2008/jan/05) 另一种方法是保留一个文件夹并继续填充它,直到我想保留在文件夹中的文件达到最大数量,然后再创建一个(/folder001/、/folder002/、 /folder003/ 等)。另一种方法是在达到某个阈值时创建子文件夹。所以就像 (/j/jd/jde/jdelator) 我在 unix 中看到过这个,不知道如何解释。
我的问题是你们发现有用或使用过什么样的策略?
macos - 在 OS X 中创建硬链接到目录的 Unix 命令是什么?
如何在 OS X 中创建指向目录的硬链接(而不是符号链接或 Mac OS 别名)?我已经知道命令“ln target destination”,但仅当目标是文件时才有效。我知道 Mac OS 与其他 Unix 环境不同,它确实允许硬链接到文件夹(例如,这用于 Time Machine),但我自己不知道该怎么做。
file - 同一父目录中具有相同名称的文件和目录 - Solaris 8,ufs
好的,我已经使用 Solaris 工作了 10 多年,但从未见过这个......
我有一个目录列表,其中包括同名的文件和子目录:
我使用文件来发现文件的内容,我得到:
我不担心文件,但我想保留目录,所以我尝试rm:
所以这是我的两部分问题:
- 这是怎么回事?
- 如何小心删除文件?
乔纳森
编辑:感谢大家的回答,(到目前为止)都很有帮助,但是将列表传递给编辑就可以了,ala:
其中包含:
始终小心退格键!
file - File Replication Solutions
Thinking about a Windows-hosted build process that will periodically drop files to disk to be replicated to several other Windows Servers in the same datacenter. The other machines would run IIS, and serve those files to the masses.
The total corpus size would be millions of files, 100's of GB of data. It'd have to deal with possible contention on the target servers, latent links e.g. over a WAN, cold-start clean servers
Solutions I've thought about so far :
- queue'd system and daemons either wake periodically and copy or run as services.
- SAN - expensive, complex, more expensive
- ROBOCOPY, on a timed job - simple but effective. Lots of internal/indeterminate state e.g. where its at in copying, errors
- Off the shelf repl. software - less expensive than SAN but still expensive
- UNC shared folders and no repl. Higher latency, lower cost - still need a clustering solution too.
- DFS Replication.
What else have other folks used?
filesystems - 如何保护我的文件数据免受磁盘损坏?
最近,我读到一篇题为“SATA vs. SCSI 可靠性”的文章。它主要讨论消费级 SATA 驱动器中非常高的位翻转率,并得出结论“您现在无法从特定磁盘读取所有数据的可能性为 56%”。甚至 Raid-5 也无法拯救我们,因为它必须不断地扫描它是否有问题,如果磁盘确实死了,你几乎可以保证在重建的文件系统上有一些翻转的位。
注意事项:
我听说过 Sun 的ZFS with Raid-Z,但 Linux 和 BSD 的实现仍处于试验阶段。我不确定它是否已准备好迎接黄金时段。
我还阅读了很多关于Par2文件格式的内容。似乎与每个文件一起存储一些额外的 % 奇偶校验可以让您从大多数问题中恢复。但是,我不知道在内部执行此操作的文件系统,并且似乎很难管理单独的文件。
备份(编辑):
我知道备份是最重要的。但是,如果没有进行某种检查,您可能很容易在不知情的情况下向人们发送不良数据。此外,确定哪个备份具有该数据的良好副本可能很困难。
例如,您有一个运行了一年的 Raid-5 阵列,您发现了一个损坏的文件。现在你必须回去检查你的备份,直到你找到一个好的副本。理想情况下,您会转到包含该文件的第一个备份,但这可能很难弄清楚,特别是如果该文件已被多次编辑。更糟糕的是,考虑该文件是否在损坏发生后被附加或编辑。对于 Par2 等块级奇偶校验,仅此一项就足够了。
linux - 如何备份 LIF 格式的磁盘?
我有几张旧的 3.5 英寸软盘要备份。我创建磁盘映像的尝试失败了。我尝试使用 UNIX 实用程序 dd_rescue,但是当内核尝试打开 ( /dev/fd0
) 时,我收到内核错误,
我想要一张图像,因为有些软盘使用的是 LIF 文件系统格式。有人对我应该做什么有任何想法吗?
惠普现在安捷伦制造了一些工具,可以读取和写入 LIF 格式化磁盘上的文件。我可以使用这些工具将文件复制并转换到本地磁盘,但在此过程中可能会丢失一些数据。换句话说,从 LIF 转换为其他格式返回 LIF 会丢失一些信息。
我只想备份磁盘上的原始字节,而不关心文件系统的类型。
c# - 如何一次性获取所有文件属性,包括作者、标题、mp3 标签等
我想将 windows 文件夹中文件的所有元数据(包括高级摘要属性)写入 csv 文件。有没有办法收集所有属性?我看到 mp3 文件与 jpg 文件相比有一组不同的属性。(C#)
这也可以是脚本(vb、perl)
更新:通过查看 libextractor(谢谢),我可以看到这可以通过为不同类型的文件编写不同的插件来实现。我收集这个元数据不是一个简单的集合......
c# - 创建隐藏文件夹
有什么方法可以从 c# 中以编程方式在存储设备上创建(我猜是访问)隐藏文件夹?