首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个磁盘充当一个文件系统,同时仍然允许单独访问每个磁盘。

多个磁盘充当一个文件系统,同时仍然允许单独访问每个磁盘。
EN

Server Fault用户
提问于 2020-04-14 17:29:32
回答 1查看 324关注 0票数 1

我有一个相当大的数据集(~160 to ),需要经常交付给客户端。这个数据集由相当大的文件组成,通常每个文件在2Gb到20 2Gb之间。它们存在于运行在RAID集群上的BeeGFS文件系统上,其总容量为1.1Tb。目前,当需要交付数据时,可以通过以下方式完成:

  1. 创建文件及其大小的主索引
  2. 将文件大小汇总到4Tb,并从主索引中建立所述文件的子索引。
  3. 将文件复制到4Tb USB驱动器
  4. 重复步骤2和步骤3,直到复制完整个数据集。
  5. 给客户端一个硬纸板盒的USB驱动器

我想要做的是将它重新同步到一个挂载的文件系统上,所以我想知道是否有一个可以将存储空间分散到多个磁盘上的文件系统?最明显的候选是LVM和RAID,但问题是客户端需要能够自己读取每个磁盘,这比这个(据我所知至少)要高。是否有一种方法来模拟LVM或类似的东西,但允许以相当标准的方式读取单个磁盘?实际上,允许我运行一个rsync操作,将数据分散到多个单独的磁盘/文件系统上。

这些数据来自一台红帽子机器,因此到目前为止,我只在USB驱动器上使用了ext4。但是,如果可能的话,如果我能够使用一个很好地使用Windows10的文件系统,对每个人来说都是非常有益的(虽然不是绝对必要的)。

PS:当涉及到同时附加的USB驱动器的数量时,我没有任何限制。我唯一真正的限制是数据必须一次只能访问一个磁盘/文件系统。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2020-04-14 19:09:02

  1. 创建文件和大小的完整列表,如:查找/path -type f -printf "%s %h%f\n“> all_files.txt
  2. 运行一个awk,根据每个部分的总大小将all_files.txt拆分为各个部分(这里的MAXSIZE是最大大小的占位符,以字节为单位)
代码语言:javascript
复制
    BEGIN {total=0;part=0;}
            {total += $1;
            if (total > MAXSIZE) {part++;total=0;}
            $1="";print substr($0,2) >> "partial-"part}
  1. 现在,您可以在不同的挂载点(比如/mnt/send/partial-1/mnt/send/partial-2、.)挂载所有磁盘,在每个挂载点中使用您想要的任何文件系统。
  2. 在一个循环中,您可以使用rsync--files-from=FILE连接到正确的挂载点。类似于这样的东西:
代码语言:javascript
复制
    for f in partial*
    do
        rsync --files-from=$f / /mnt/$f/
    done
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1012290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档