标签: vfs

查找包含给定文件的文件系统的大小和可用空间

我在Linux上使用Python 2.6.最快的方法是什么:

  • 确定哪个分区包含给定目录或文件?

    例如,假设它/dev/sda2已安装在/home,并/dev/mapper/foo已安装/home/foo.从字符串"/home/foo/bar/baz"我想恢复这对("/dev/mapper/foo", "home/foo").

  • 然后,获取给定分区的使用情况统计信息?例如,给定/dev/mapper/foo我想获得分区的大小和可用的可用空间(以字节或大约以兆字节为单位).

python linux filesystems diskspace vfs

68
推荐指数
9
解决办法
11万
查看次数

重命名()原子?

我无法通过实验检查这一点,也无法从手册页中收集它.

假设我有两个进程,一个从directory1移动(重命名)file1到directory2.假设另一个并发运行的进程将directory1和directory2的内容复制到另一个位置.是否有可能以这样的方式发生复制:directory1和directory2都将显示file1 - 即在移动之前复制directory1,在第一个进程移动之后复制directory2.

基本上是rename()是一个原子系统调用?

谢谢

linux file-rename vfs atomicity

40
推荐指数
3
解决办法
2万
查看次数

Inode vs Vnode的区别

我对Inode与Vnode有一些疑问.据我所知,inode是虚拟文件系统使用的文件的表示.而vnodes是特定于文件系统的.它是否正确?

另外,我很困惑inode是否是内核数据结构,即它是内存数据结构还是存在于实际磁盘中的块上的数据结构?

filesystems operating-system inode vfs

28
推荐指数
5
解决办法
1万
查看次数

statvfs()和statfs()系统调用之间的区别?

当它们如此相似时,为什么statfs()statvfs()它们都存在?

在什么情况下我更喜欢一个?

c linux mount vfs

20
推荐指数
2
解决办法
9770
查看次数

linux如何识别特定文件系统以执行系统调用

可以总结一下当我尝试执行read()/ write()系统调用时发生的事件/步骤.内核如何知道发出这些命令的文件系统.

让我们说一个进程调用write().然后它将调用sys_write().

现在可能,因为sys_write()是代表当前进程执行的,所以它可以访问struct task_struct,因此它可以访问包含文件系统信息的struct files_structstruct fs_struct.

但之后我没有看到,这个fs_struct如何帮助识别文件系统.

编辑:既然Alex已经描述了流程......我仍然怀疑读/写如何被路由到FS,因为VFS没有这样做,那么它必须在其他地方发生,另外底层是怎么回事设备然后最终硬件协议PCI/USB附加.

涉及实际数据结构的简单流程图会很有帮助

请帮忙.

linux vfs linux-kernel

19
推荐指数
1
解决办法
1229
查看次数

使用FOpen*的SQLite VFS实施指南

我将使用FOpen,FRead,FWrite,FSeek和FClose为Netburner嵌入式设备(非Windows)实现自定义VFS(虚拟文件系统).我很惊讶我找不到可用的VFS的FOpen*版本.这将使嵌入式设备的便携性更高.

我在http://sqlite.org/c3ref/vfs.html上找到了有关为SQLite创建VFS的一些信息, 但信息非常详细,我还有很多关于实现的问题.

我在Winite,OS2,Linux的SQLite源代码中有一些示例VFS,但它们没有很多注释,只有源代码.

我可以使用上面链接中提供的信息和示例来创建我的自定义VFS,但我确信如果我这样做,我会错过一些东西.

我的问题是:

  • 是否还有关于我缺少的SQLite VFS的文档?也许是一个实施指南?
  • 是否有可用的SQLite VFS的Fopen版本?
  • 一旦我创建了自定义SQLite VFS,是否有单元测试代码可用于测试我的自定义SQLite VFS?
  • 您希望分享的实施SQLite VFS的建议,意见和经验.

sqlite fopen vfs freertos netburner

14
推荐指数
1
解决办法
4090
查看次数

在OS X上使用/ dev/autofs_nowait的风险和回报

整个的CoreFoundation框架源,POSIX文件系统API调用(例如open(),stat(),等人...)被包裹在一个成语其中在描述符/dev/autofs_nowait获取-与open(…, 0)- POSIX的呼叫才制成; 之后描述符是close()在范围退出之前的'd'.

  • 这样做有什么好处?有什么风险?

  • 获取/dev/autofs_nowait描述符是否会对任何如此包装的open()调用(例如O_NONBLOCK)的标记产生影响,或者是否受其影响?

  • /dev 在我的机器上,运行OS X 10.10.5还有其他"autofs"条目:

    dev目录列表

    ......没有一个man页面可用.如果这些类似文件的设备可以提供这方面的好处,我将有兴趣了解它们的用途,因为它可能属于它.



附录:我在这个问题上找不到多少内容; 2011年Google Plus帖子声称:

[t]他的文件是一个特殊设备,由内核中的autofs文件系统实现监控.打开时,autofs文件系统不会在autofs文件系统上的任何I/O操作上阻止该进程.

我不太清楚这意味着什么(他们专门讨论了如何launchd工作,FWIW)但我自己很好奇,所以我编写了一个快速的上下文管理器-Y RAII结构试用它 - 非目标性的分析显示了POSIX的测试调用完成速度更快但在一般哈希标记内; 在我获得更多关于它如何工作的背景之后,我将用更精细的梳子来研究这种策略.

bsd asynchronous vfs core-foundation xnu

13
推荐指数
1
解决办法
309
查看次数

列出进程以有效方式访问的所有文件

我想以有效的方式记录进程在其生命周期中所做的所有文件访问.

目前,我们通过预加载拦截处理文件访问的C库调用的共享库来使用LD_PRELOAD来实现此目的.该方法在没有太多性能开销的情况下是有效的,但不是防漏的.

例如,我们的LD_PRELOAD共享库有一个用于dlopen的钩子.此挂钩用于跟踪对共享库的访问,但该机制无法记录共享库的三级依赖关系.

我们曾尝试使用strace的,但使用的性能开销strace的是一个非首发我们.我很好奇,如果我们有其他机制,我们可以探索拦截进程及其子进程以有效方式进行的文件访问.我愿意在内核级别探索选项,挂钩到VFS层或其他任何东西.

思考?

unix linux filesystems vfs linux-kernel

13
推荐指数
1
解决办法
428
查看次数

为什么我不能打开JBoss vfs:/ URL?

我们正在将我们的应用程序从JBoss 4升级到JBoss 6.

我们的应用程序的几个部分以一种不寻常的方式传递给客户端:在我们的应用程序内部查找jar并从servlet发送到客户端,客户端在其中提取它们以运行某些支持功能.

在JBoss 4中,我们将使用类加载器查看这些jar,并找到一个jar:// URL,用于读取jar并将其内容发送到客户端.

在JBoss 6中,当我们执行查找时,我们得到一个vfs:/ URL.我知道这是来自org.jboss.vfs包.不幸的是,当我在这个URL上调用openStream()并从流中读取时,我立即得到一个EOF(read()返回-1).

是什么赋予了?为什么我不能读取此URL引用的资源?

我试过通过JBoss VFS API尝试访问底层VFS包来打开文件,但是大多数API似乎是私有的,我找不到从vfs:/ URL转换为VFS的例程VirtualFile对象,所以我无法到达任何地方.

我可以尝试在JBoss中找到磁盘上的文件,但这种方法在升级时听起来非常容易出错.

我们的旧方法是使用Java Web Start将jar分发到客户端,然后在Java Web Start的缓存中查找它们以提取它们.但是,由于缓存的布局发生了变化,因此Java的每次小升级都会破坏.

java url jboss vfs

12
推荐指数
2
解决办法
1万
查看次数

无法创建maven项目:VFS(IntelliJ)中已存在'.../pom.xml'

当我想重新创建一个名称已被删除但已被删除的maven项目时,我收到以下错误消息:

无法创建maven项目:VFS中已存在'.../pom.xml'

intellij-idea vfs maven

11
推荐指数
1
解决办法
1万
查看次数