可安装的文件系统,可自动分割文件

可安装的文件系统,可自动分割文件

是否存在一个[虚拟]文件系统,可以自动拆分存储中的文件但将它们作为单个文件呈现给用户?

例如:

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

您创建多个容器文件,将它们连接为设备,用文件系统格式化它们,挂载该文件系统并将大文件放入其中。

答案4

我不确定,但我认为您可以使用条带化(即对逻辑上连续的数据(例如文件)进行分段的技术)和 LVM 等。

以下是来自 RedHat 的一些相关信息:

2.3.2. 条带化逻辑卷 当您将数据写入 LVM 逻辑卷时,文件系统会将数据分布在底层物理卷上。您可以通过创建条带化逻辑卷来控制将数据写入物理卷的方式。对于大量顺序读写,这可以提高数据 I/O 的效率。条带化通过以循环方式将数据写入预定数量的物理卷来提高性能。使用条带化,I/O 可以并行完成。在某些情况下,这可以导致条带中每个附加物理卷的性能近乎线性提升。 来源

此处提供更多信息

相关内容