2017-02-04 23 views
5

Мне нужно переместить 90 миллионов файлов из папки NFS во вторую папку NFS, оба подключения к папке NFS используют один и тот же eth0, который равен 1 ГБ/s серверам NFS, синхронизация не требуется, только перемещение (переписывание, если оно существует). Я думаю, что моя главная проблема - количество файлов, а не общий размер. Наилучший путь должен быть способом с меньшим количеством системных вызовов на файл в папки NFS.Самый быстрый способ переместить 90 миллионов файлов (270 ГБ) между двумя папками NFS 1Gb/s

Я пробовал cp, rsync и, наконец, http://moo.nac.uci.edu/~hjm/parsync/ parsync сначала занял 10 часов в генерации 12 ГБ gzip из списка файлов, после того, как потребовалось 40 часов, и ни один файл не был скопирован, он работал до 10 потоков, пока я не отменил его и начал отладку, я нашел, что это делает вызов (стат?) снова к каждому файлу (из списка) с -vvv вариант (он использует Rsync):

[sender] make_file(accounts/hostingfacil/snap.2017-01-07.041721/hostingfacil/homedir/public_html/members/vendor/composer/62ebc48e/vendor/whmcs/whmcs-foundation/lib/Domains/DomainLookup/Provider.php,*,0)* 

команда parsync является:

time parsync --rsyncopts="-v -v -v" --reusecache --NP=10 --startdir=/nfsbackup/folder1/subfolder2 thefolder /nfsbackup2/folder1/subfolder2 

Каждый rsync имеет следующую форму:

rsync --bwlimit=1000000 -v -v -v -a --files-from=/root/.parsync/kds-chunk-9 /nfsbackup/folder1/subfolder2 /nfsbackup2/folder1/subfolder2 

The папки NFS установлены:

server:/export/folder/folder /nfsbackup2 nfs  auto,noexec,noatime,nolock,bg,intr,tcp,actimeo=1800,nfsvers=3,vers=3 0 0 

Любая идея, как поручить Rsync, чтобы скопировать файлы уже в списке из НФ в папку nfs2? Или какой-либо способ сделать эту копию эффективно (один системный вызов на файл?)

+0

Я думаю, оптимизируя движение миллионов файлов между двумя креплениями NFS может быть интересным вызовом, но я бы ожидать, что усилия по разработке против ускорения будет лучше при рассмотрении изменения архитектуры, чтобы уменьшить количество файлов и/или избавиться от NFS. – mnagel

+0

@mnagel NFS предоставляется центром обработки данных в качестве службы резервного копирования. Количество файлов - это продукт инкрементной резервной копии с 30-дневным хранением 450+ учетных записей хостинга. –

ответ

1

У меня были проблемы с одним и тем же, и я обнаружил, что лучше всего просто запустить команду find и переместить каждый файл по отдельности.

cd /origin/path 
find . | cpio -updm ../destination/ 

-u команда заменит существующие файлы

+0

Можете ли вы дать немного больше информации? Следующая команда выполнит cp для каждого файла, una cp сразу, правильно? и при необходимости создать каталоги? –

+0

Есть ли структура каталогов, связанная с файлами 90Mil? –

+0

Файлы находятся внутри структуры каталогов. В одной папке не 90 миллионов файлов. –