我有一个相当大的数据集(~160TB),需要经常交付给客户。该数据集由相当大的文件组成,通常每个文件在 2Gb 到 20Gb 之间。它们存在于在总容量为 1.1Tb 的 RAID 集群上运行的 BeeGFS 文件系统上。目前,当需要交付数据时,它是通过以下方式完成的:
- 创建文件及其大小的主索引
- 统计文件大小直到 4Tb,并从主索引中创建所述文件的子索引
- 将文件复制到 4Tb USB 驱动器
- 重复步骤 2 和 3,直到复制整个数据集
- 给客户一个装有 U 盘的纸板箱
我想做的只是将其同步到已安装的文件系统,所以我想知道是否有可用的文件系统可以将存储空间分布在多个磁盘上?显而易见的候选者是 LVM 和 RAID,但问题是客户端需要能够自行读取每个磁盘,这排除了这一点(至少据我所知)。有没有办法模拟 LVM 或类似的东西,但允许以相当标准的方式读取单个磁盘?实际上,允许我运行单个 rsync 操作,将数据分布在多个单独的磁盘/文件系统上
数据来自一台redhat机器,所以到目前为止我只是在USB驱动器上使用了ext4。但是,如果可能的话,如果我可以使用与 Windows10 完美配合的文件系统,这对每个人来说都是非常有益的(尽管不是绝对必要的)。
PS:我对同时连接的USB驱动器的数量没有限制。我唯一真正的限制是数据必须一次可以访问一个磁盘/文件系统。
创建文件和大小的完整列表,例如:
查找 /path -type f -printf "%s %h%f\n" > all_files.txt
根据每个部分的总大小运行一个拆分
all_files.txt
为多个部分的 awk(此处的 MAXSIZE 是最大大小的占位符,以字节为单位)您现在可以将所有磁盘安装在不同的安装点(例如
/mnt/send/partial-1
,/mnt/send/partial-2
,...),使用每个磁盘中所需的任何文件系统。在一个循环中,您
rsync
可以--files-from=FILE
找到正确的安装点。这些方面的东西: