Несколько дисков действуют как одна файловая система, в то время как все еще разрешая доступ к каждому диску в одиночку

У меня есть довольно большой набор данных (~ 160 ТБ), который нужно время от времени доставлять клиенту. Этот набор данных состоит из довольно больших файлов, обычно от 2 до 20 ГБ каждый. Они существуют в файловой системе BeeGFS, работающей в RAID-кластере с общей емкостью 1,1 ТБ. В настоящее время, когда пришло время доставить данные, это делается следующим образом:

  1. Создайте основной индекс файлов и их размеры
  2. Подсчитайте размер файлов до 4 ТБ и создайте субиндекс указанных файлов из основного index
  3. Скопируйте файлы на USB-накопители емкостью 4 ТБ
  4. Повторяйте шаги 2 и 3, пока не будет скопирован весь набор данных
  5. Дайте картонную коробку USB-накопителей клиенту

Я бы хотел просто выполните синхронизацию с смонтированной файловой системой, поэтому мне было интересно, есть ли доступная файловая система, которая может распределить пространство для хранения на нескольких дисках? Очевидные кандидаты - LVM и RAID, но проблема в том, что клиенту нужно иметь возможность читать каждый диск отдельно, что превосходит это (по крайней мере, насколько мне известно). Есть ли способ эмуляции LVM или чего-то подобного, но позволяющий читать отдельные диски довольно стандартным способом? По сути, это позволяет мне запустить одну операцию rsync, которая распределяет данные по нескольким отдельным дискам / файловым системам

. Данные поступают с машины redhat, поэтому до сих пор я просто использовал ext4 на USB-накопителях. Однако, если возможно, было бы очень полезно (хотя и не строго необходимо) для всех, если бы я мог использовать файловую систему, которая хорошо работает с Windows 10.

PS: У меня нет ограничений по количеству подключенных USB-накопителей. в то же время. Единственное реальное ограничение, которое у меня есть, заключается в том, что данные должны быть доступны для одного диска / файловой системы за раз.

1
задан 14 April 2020 в 20:29
1 ответ
  1. создайте полный список файлов и размеров, например:

    find /path -type f -printf "%s %h%f\n" > all_files.txt

  2. запустите awk, который разбивает all_files.txt на части в зависимости от общего размера каждой части (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
1
ответ дан 14 April 2020 в 19:09

Теги

Похожие вопросы