微软为macOS开发大型Git仓库虚拟文件系统
极客时间编辑部
讲述:丁婵大小:1.58M时长:03:27
近日,微软首要项目负责人萨伊德(Saeed Noursalehi)发博客称,微软在开发 macOS 适用的大型 Git 仓库虚拟文件系统 GVFS 上取得了不错的进展。
GVFS 是微软开发的开源系统,能使 Git 在企业级别运行,用于使用和管理大型 Git 仓库。借助 GVFS,Git 和 VS Team Services 的开发人员即使在使用 300 GB(350 万个文件)储量的 Windows 操作系统时也能保持高效工作。
GVFS 目前仅支持 Window 10 版本。现在,微软正在探索如何将 GVFS 搭建在其他平台上,并且已经在 macOS 适用的 GVFS 原型设计上取得了不错的进展。
Windows 版 GVFS 主要由三大块组成:
Git 补丁,使 GVFS 能在虚拟文件系统上高效运行 ;
文件系统过滤驱动,能拦截一些文件系统操作,并询问一个用户态进程如何响应目录枚举和文件内容;
用户态进程,知道如何翻译 Git 仓库的状态来响应文件系统查询,以及如何响应文件系统事件来修改 Git 仓库状态。
其中第二点和特定操作系统、文件系统以及驱动模型紧密相关,因此需要为每个操作系统重写,现在微软就在考虑为 macOS 做开发。
Windows 系统有一个文件系统过滤驱动的概念,它能堆叠到现存文件系统驱动上并修改系统的行为。MacOS 不支持以这种方式堆叠驱动,所以微软探索了别的方法,最终确定采用 Kauth 内核扩展机制来达到相似的效果。
当应用程序访问文件或目录时,内核需要判断当前用户是否有权限访问该对象。Kauth 允许一个自定义内核扩展 kext 来注册这些授权请求,并且能决定用户的权限,这样就提供了如下的一些功能:
阻止应用程序枚举目录,这样就能为目录子类填入占位符文件或目录。这能实现按需动态枚举文件系统结构;
阻止要读取文件的应用程序,从而填入其内容,这能实现按需下载文件内容;
发现用户修改文件的行为,从而通知 Git 这些文件可能是“脏”的;
拒绝一些特定操作,例如删除特殊文件或来自文件系统爬行器的请求。
要使所有这些都能工作,微软建立了占位符目录 (placeholder directories)和占位符文件(placeholder files)的概念。通过在目录或文件上设置文件标志,使其成为占位符,kext 就能快速检查虚拟节点(vnode)是否为需要担心的虚拟项。如果不是,kext 迅速返回,以避免给系统 IO 带来不必要的开销。
目前微软刚刚构建了 kext 的原型版本。微软还计划在 GVFS 用户态代码库中进行清理和重构,以允许使用.NET Core 在 Mac 上运行相同的代码。
此外,微软团队还计划在公开库中发布 macOS 适用的 GVFS 的所有代码,并将开发流程改为公开编写代码,而非偶尔在公开库中增加代码。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论