是否存在一个[虚拟]文件系统,可以自动拆分存储中的文件但将它们作为单个文件呈现给用户?
例如:
The user sees: /user/files/10TBfile
But it is stored as: /backingstorage/user/files/10TBfile.{1..100}
基本上与分割存档的工作方式相同,但实时。我觉得这应该是可能的,因为它基本上将每个虚拟磁盘块存储为单独的文件,但我不知道有任何现有的解决方案。
如果你好奇的话,最终目标可能与这个问题类似:使用 rsync 将本地文件划分到不同服务器,空间有限但我有需要拆分的单个大文件,并且这些文件需要实时更新,因此每日 cron/rsync 和拆分 tar 是不可能的。我已经安装了远程驱动器,所以我只需要一种方法来拆分文件并将其作为单个文件呈现给用户。
谢谢!
答案1
你想要的是chunkfs
:
ChunkFS 是一个基于 FUSE 的文件系统,它允许您将任意文件或块设备挂载为文件目录树,每个文件代表已挂载文件的用户指定大小的块。
它是为了和你相同的目的而写的:
ChunkFS 最初是为使用 rsync 对加密文件系统映像进行节省空间的增量备份而编写的。使用 rsync 的 --link-dest 选项,您可以从 ChunkFS 挂载的映像创建增量备份,其中自上次备份以来未发生更改的任何块都将成为上一次备份中相应块的硬链接。
答案2
通常,您会在块级别执行此操作。一些解决方案包括:
- 突袭 0
- DRBD(更适合镜像,网络OK)
- ZFS(更高级别的抽象)
从文件系统角度来看:
- 手动将一半文件存储在一个文件系统上,另一半存储在另一个文件系统上,然后通过类似自定义 FUSE 文件系统的东西来呈现它(想想复杂的自定义代码)。
- 大多数文件系统解决方案都注重同步而不是数据分区。
- Hadoop(数据分片,不是传统的FS)
答案3
我在这里找到了答案:https://unix.stackexchange.com/a/67995/6226
您创建多个容器文件,将它们连接为设备,用文件系统格式化它们,挂载该文件系统并将大文件放入其中。