Filesystems

多個磁碟充當一個文件系統,同時仍允許單獨訪問每個磁碟

  • April 14, 2020

我有一個相當大的數據集(~160TB),需要經常傳遞給客戶。該數據集由相當大的文件組成,通常每個文件在 2Gb 到 20Gb 之間。它們存在於在總容量為 1.1Tb 的 RAID 集群上執行的 BeeGFS 文件系統上。目前,當需要傳遞數據時,它是通過以下方式完成的:

  1. 創建文件及其大小的主索引
  2. 統計文件大小直到 4Tb,並從主索引中創建所述文件的子索引
  3. 將文件複製到 4Tb USB 驅動器
  4. 重複步驟 2 和 3,直到複製整個數據集
  5. 給客戶一個裝有 U 盤的紙板箱

我想做的只是將其同步到已安裝的文件系統,所以我想知道是否有可用的文件系統可以將儲存空間分佈在多個磁碟上?顯而易見的候選者是 LVM 和 RAID,但問題是客戶端需要能夠自行讀取每個磁碟,這排除了這一點(至少據我所知)。有沒有辦法模擬 LVM 或類似的東西,但允許以相當標準的方式讀取單個磁碟?實際上,允許我執行單個 rsync 操作,將數據分佈在多個單獨的磁碟/文件系統上

數據來自一台redhat機器,所以到目前為止我只是在USB驅動器上使用了ext4。但是,如果可能的話,如果我可以使用與 Windows10 完美配合的文件系統,這對每個人來說都是非常有益的(儘管不是絕對必要的)。

PS:我對同時連接的USB驅動器的數量沒有限制。我唯一真正的限制是數據必須一次可以訪問一個磁碟/文件系統。

  1. 創建文件和大小的完整列表,例如:

查找 /path -type f -printf “%s %h%f\n” > all_files.txt 2. 根據每個部分的總大小執行一個拆分all_files.txt為多個部分的 awk(此處的 MAXSIZE 是最大大小的佔位符,以字節為單位)

   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找到正確的安裝點。這些方面的東西:
   for f in partial*
   do
       rsync --files-from=$f / /mnt/$f/
   done

引用自:https://serverfault.com/questions/1012290