6 个版本 (有破坏性)
使用旧的 Rust 2015
0.8.0 | 2018 年 1 月 9 日 |
---|---|
0.6.0 | 2017 年 9 月 18 日 |
0.5.0 | 2017 年 9 月 9 日 |
0.4.0 | 2017 年 8 月 30 日 |
0.2.0 | 2017 年 8 月 17 日 |
#384 在 缓存
每月 43 次下载
140KB
4K SLoC
猫文件系统是用 Rust 编写的缓存文件系统。
概述
猫文件系统允许您缓存访问另一个(可能远程的)文件系统。缓存语义是预读和写入(见 当前状态)。目前它只提供数据缓存,所有元数据操作都直接命中源文件系统。
猫文件系统是 ALPH 软件版本。如果您重视您的数据,请勿使用。
安装
:~/catfs$ cargo install catfs
$ # optimized binary now in $HOME/.cargo/bin/catfs
使用方法
猫文件系统要求在缓存文件的文件系统中启用扩展属性(xattr)。通常这意味着您需要开启 user_xattr
挂载选项。
$ catfs <from> <to> <mountpoint>
猫文件系统将在 <from>
下暴露文件,并在访问时将其缓存到 <mountpoint>
。您可以使用 --free
来控制 <to>
的文件系统有多少空闲空间。
基准测试
比较使用 catfs 缓存 sshfs 与仅使用 sshfs 的区别。拓扑结构为笔记本电脑 - 802.11n - 路由器 - 1Gbps 有线 - 桌面电脑。笔记本电脑配备 SSD,而桌面电脑配备机械硬盘。
比较在同一个文件系统上的两个本地目录中运行 catfs,这并不是一个现实的应用场景,但它应该能给您一个最坏情况下的速度减缓的印象。
由于我们写入的量是预期的两倍,因此写入速度比预期慢了一倍。
$ sudo docker run -e SSHFS_SERVER=user@host --rm --privileged --net=host -v $PWD/target:/root/catfs/target kahing/catfs-bench
# result is written to $PWD/target
需要将 Docker 容器配置为可以 ssh 到 user@host
。通常我会通过从主机挂载 ssh 套接字来实现这一点
$ sudo docker run -e SSHFS_OPTS="-o ControlPath=/root/.ssh/sockets/%r@%h_%p -o ControlMaster=auto -o StrictHostKeyChecking=no -o Cipher=arcfour user@host:/tmp" -e SSHFS_SERVER=user@host --rm --privileged --net=host -v $HOME/.ssh/sockets:/root/.ssh/sockets -v $PWD/target:/root/catfs/target kahing/catfs-bench
许可证
版权所有 (C) 2017 陈嘉恒
遵循Apache许可证,版本2.0
当前状态
猫文件系统是 ALPH 软件版本。如果您重视您的数据,请勿使用。
如果文件已打开用于读取,即使实际上没有读取任何内容,整个文件也会被缓存。
数据会写入到源文件,并且每次写入都会进行缓存。在非顺序写入的情况下,catfs
会检测到类似 ENOTSUP
的错误,这是由如 goofys
这样的文件系统发出的,并回退到在 close()
调用时刷新整个文件。请注意,在这种情况下,即使更改一个字节也会导致整个文件被重新写入。
参考资料
依赖
~10MB
~200K SLoC