问题标签 [vfs]
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.
sqlite - 使用 FOpen* 的 SQLite VFS 实施指南
我即将使用 FOpen、FRead、FWrite、FSeek 和 FClose 为 Netburner 嵌入式设备(非 Windows)实现自定义 VFS(虚拟文件系统)。我很惊讶我找不到可用的 VFS 的 FOpen* 版本。它将使其对嵌入式设备更具可移植性。
我在这里找到了一些关于为 SQLite 创建 VFS 的信息http://sqlite.org/c3ref/vfs.html 但这些信息非常详细,而且我还有很多关于实现的其他问题。
我在 Win、OS2、Linux 的 SQLite 源代码中有一些示例 VFS,但它们没有很多注释,只有源代码。
我可以使用上面链接中提供的信息和示例来创建我的自定义 VFS,但我敢肯定,如果我这样做,我会错过一些东西。
我的问题是:
- 还有关于我缺少的 SQLite VFS 的更多文档吗?也许是实施指南?
- 是否有可用的 SQLite VFS 的 Fopen 版本?
- 创建自定义 SQLite VFS 后,是否有可用于测试自定义 SQLite VFS 的单元测试代码?
- 您想分享的关于实施 SQLite VFS 的建议、评论和经验。
python - 查找包含给定文件的文件系统的大小和可用空间
我在 Linux 上使用 Python 2.6。最快的方法是什么:
确定哪个分区包含给定的目录或文件?
例如,假设
/dev/sda2
安装在 上/home
,并且/dev/mapper/foo
安装在 上/home/foo
。"/home/foo/bar/baz"
我想从字符串中恢复对("/dev/mapper/foo", "home/foo")
。然后,获取给定分区的使用统计信息?例如,假设
/dev/mapper/foo
我想获得分区的大小和可用空间(以字节为单位或大约以兆字节为单位)。
c - 是否可以使用带有 FUSE 文件系统的 Linux VFS 缓存?
Linux VFS 缓存似乎默认情况下不适用于 FUSE 文件系统。例如,“read”调用似乎被系统地转发到 FUSE 文件系统。
我在 FUSE 特定的远程文件系统上工作。我需要一个非常激进的缓存。
我需要实现自己的页面缓存吗?或者是否可以为这个特定的 FUSE 文件系统激活 Linux VFS 缓存?或者有人知道一个好的代理/缓存 FUSE 文件系统(或一种 C 库来做到这一点而无需重新发明轮子)?
奖金问题:
如果我必须实现自己的页面缓存,我想使用 REDIS 守护进程来完成 LRU 的工作。我几乎可以肯定它是缓存元数据的好选择。但是对于页面,我不确定它是否会比简单的本地目录(带有 VFS 缓存)或 /dev/shm 更好。但是我会失去LRU自动清洗。有人知道一种带有自动 LRU 清理功能的 /dev/shm 吗?
一些附加信息:文件系统是只读的,远程端几乎是不可变的;远程端包含我无法复制到本地目录的非常大的文件。
osx-snow-leopard - 在 Mac VFS/HFS+ 中是否可以进行原子重命名?
在 Mac OS X 中支持 ACL,有一种方法可以将文件声明为可写但不可删除。
这给原子写入带来了问题,因为VFS 中的当前实现是预先存在的目标。如果您有一个现有的文件,您对其具有写入权限,则可能无法自动写入:
只需附加一个 ACL 声明和原子写入(如由各种 Cocoa API 实现 - 例如NSArray's)将失败,而非原子写入将很高兴成功。rename
delete
deny delete
writeToFile:atomically:
由于我对低级 C 代码的理解相当有限:
只有轻微(插入您最喜欢的“轻微”定义)头痛的替代实现是否可行?
谢谢
丹尼尔
java - 如何将曾经是目录的文件更改回linux上的目录?
我正在使用 Apache VFS API 在我的本地机器和远程 linux 主机之间通过 sftp 来回移动文件,它以某种方式将我的 linux 主机上的一些目录转换为drw-r-----
文件-rw-r-----
有谁知道如何将其转换回目录?
java - 为什么我无法打开 JBoss vfs:/ URL?
我们正在将我们的应用程序从 JBoss 4 升级到 JBoss 6。
我们的应用程序的几个部分以一种不寻常的方式交付给客户端:在我们的应用程序内部查找 jars 并从 servlet 发送给客户端,客户端提取它们以运行某些支持功能。
在 JBoss 4 中,我们将使用类加载器查找这些 jar,并找到一个 jar:// URL,该 URL 将用于读取 jar 并将其内容发送到客户端。
在 JBoss 6 中,当我们执行查找时,我们会得到一个 vfs:/ URL。我知道这是来自 org.jboss.vfs 包。不幸的是,当我在这个 URL 上调用 openStream() 并从流中读取时,我立即得到一个 EOF(read() 返回 -1)。
是什么赋予了?为什么我无法读取此 URL 引用的资源?
我尝试访问底层 VFS 包以通过 JBoss VFS API 打开文件,但大多数 API 似乎是私有的,我找不到从 vfs:/ URL 转换为 VFS 的例程VirtualFile 对象,所以我无处可去。
我可以尝试在 JBoss 中找到磁盘上的文件,但这种方法在升级时听起来很容易失败。
我们的旧方法是使用 Java Web Start 将 jar 分发到客户端,然后在 Java Web Start 的缓存中查找它们以提取它们。但是由于缓存的布局发生了变化,这在 Java 的每一次小升级中都被打破了。
linux - 将磁盘上的 inode 读取到内存中
我相信有两种类型的 inode - 磁盘上的和核心内的 inode(fs.h 中的“struct inode”)。磁盘索引节点基于文件系统实现。我正在尝试理解基本概念并有几个问题-
- 有人可以指出我将磁盘上的 inode 读取/复制到核心 inode 的代码(或逐步完成这些步骤)吗?即,当创建核心inode 时,它必须来自磁盘上的inode。那么,这是怎么发生的呢?
- 为什么内核 inode 不存储指向磁盘 inode 的指针?
- 如果对内核 inode 进行了修改,那么它是如何传播到磁盘上的 inode 的?任何指向代码或代码流的指针都会有所帮助。
谢谢!
linux - VFS:达到文件最大限制 1231582
我正在运行 Linux 2.6.36 内核,并且看到了一些随机错误。像
是的,我的系统无法始终运行“ls”命令。:(
我注意到我的 dmesg 输出中有几个错误:
显然,file-max 错误看起来很可疑,它们聚集在一起并且是最近出现的。
这对我来说也有点奇怪,但问题是,我不可能在这个系统上打开 120 万个文件。我是唯一一个使用它的人,本地网络之外的任何人都看不到它。
我看到一些文档说:
最大文件和文件编号:
内核动态分配文件句柄,但它还没有再次释放它们。
file-max 中的值表示 Linux 内核将分配的最大文件句柄数。当您收到大量有关文件句柄用完的错误消息时,您可能希望增加此限制。
历史上,file-nr 中的三个值分别表示分配的文件句柄数、已分配但未使用的文件句柄数和最大文件句柄数。Linux 2.6 总是报告 0 作为空闲文件句柄的数量——这不是一个错误,它只是意味着分配的文件句柄的数量与使用的文件句柄的数量完全匹配。
使用 printk 报告分配比 file-max 更多的文件描述符的尝试,查找“VFS:达到文件最大限制”。
我的第一个阅读是内核基本上有一个内置的文件描述符泄漏,但我觉得这很难相信。这意味着任何处于活动状态的系统都需要每隔一段时间重新启动一次以释放文件描述符。正如我所说,我不敢相信这是真的,因为对我来说,让 Linux 系统一次运行数月(甚至数年)是很正常的。另一方面,我也不敢相信我几乎空闲的系统正在打开超过一百万个文件。
有没有人有任何想法,无论是修复还是进一步诊断?当然,我可以只重新启动系统,但我不希望这成为每隔几周重复出现的问题。作为权宜之计,我退出了 Firefox,尽管我只打开了一个窗口,但它占用了近 2000 行 lsof 输出(!),现在我可以再次运行“ls”,但我怀疑这会解决问题很久了。(编辑:哎呀,说得太早了。当我完成输入这个问题时,症状已经/回来了)
提前感谢您的帮助。
c++ - 如何枚举 POSIX/c c++ 目录中的所有文件?
我需要枚举目录中的所有文件,然后导航到子目录并执行相同操作。
理想情况下,该算法应该在 linux macos [不再使用 windows(obsolete)] 上以相同的方式工作。
更新:我现在知道 VFS,但我对使用 VFS 枚举目录感到困惑。有什么建议吗?我应该打开一个目录作为文件吗?
java - 同时从两个目录服务 jetty webapp
在开发中,我使用 jetty 作为 servlet 容器。我有以下开发配置:
- 具有 wabapp 目录的主项目
- 覆盖 webapp 目录中一些文件的派生项目
由于提供了合适WebAppContext
的jetty,主项目webapp可以在开发模式下启动。
现在我想类似地启动派生项目,假设在提出请求时,尝试:
- 从派生项目的 webapp 目录获取资源
- 如果不存在,则从主项目的 webapp 目录中获取
我知道可以覆盖WebAppContext#getResource()
方法,但是我们在项目中使用的一些库似乎自己对 wabapp 目录执行 IO 操作。例如通过调用ServletContext#getRealPath("/")
, 然后在不使用ServletContext#getResource()
方法的情况下读取文件。这个问题可以通过一些虚拟文件系统在较低级别上解决File
,但是 JDK 1.6 似乎不支持它,有什么建议吗?