Я копирую коробку Linux через SMB на NAS. Я монтирую NAS локально, а затем перезаписываю много данных (100 ГБ или около того). Я считаю, что на это уходит очень много времени: более 12 часов. Я ожидал, что будет намного быстрее, когда все будет скопировано, так как почти ничего не меняется со дня на день.
Есть ли способ ускорить это?
Я думал, что, возможно, rsync думает, что он работает с локальными жесткими дисками и использует контрольную сумму вместо сравнения времени / размера? Но я не нашел способа провести сравнение времени и даты. Что-нибудь еще, что я мог проверить?
Ответы:
Я думаю, что вы неправильно понимаете алгоритм rsync и то, как этот инструмент следует применять.
Преимущество Rsync в производительности достигается за счет выполнения дельта-передач, то есть перемещения только измененных битов в файле. Чтобы определить измененные биты, файл должен быть прочитан узлами источника и назначения и контрольными суммами блоков для сравнения, чтобы определить, какие биты изменились. Это «волшебная» часть rsync - сам алгоритм rsync.
Когда вы монтируете целевой том с помощью SMB и используете rsync для копирования файлов из того, что Linux «видит» как локальный источник и локальный пункт назначения (оба смонтированы на этом компьютере), большинство современных версий rsync переключаются в режим копирования «весь файл» и отключите алгоритм дельта-копирования. Это «победа», потому что при включенном алгоритме дельта-копирования rsync будет считывать весь файл назначения (по сети от NAS), чтобы определить, какие биты файла изменились.
«Правильный способ» использования rsync - это запуск сервера rsync на одном компьютере и клиента rsync на другом. Каждая машина будет считывать файлы из своего локального хранилища (которое должно быть очень быстрым), согласовывать, какие биты файлов были изменены, и передавать только эти биты. Они, как вы используете rsync, сфабрикованы как «cp». Вы можете сделать то же самое с помощью 'cp', и это, вероятно, будет быстрее.
Если ваше устройство NAS поддерживает работу сервера rsync (или клиента), то вы в деле. Если вы просто собираетесь смонтировать его на исходном компьютере через SMB, то вы можете просто использовать «cp» для копирования файлов.
источник
Похоже, временные метки - это ваша проблема, так как эта страница относится к:
http://www.goodjobsucking.com/?p=16
Предложенное решение заключается в добавлении
к параметрам rsync.
источник
Да, вы можете ускорить это. Вам нужно сделать так, чтобы источник или место назначения были похожи на удаленную машину, скажем, обращаясь к ней как к «
localhost:
».Вы заявили, что монтируете общий ресурс SMB локально. Это делает источник или назначение похожим на локальный путь к rsync. Страница man rsync гласит, что копии, где источником и местом назначения являются локальные пути, будут копировать весь файл. Это указано в параграфе для опции --whole-file на странице руководства. Следовательно, дельта-алгоритм не используется. Использование
localhost:
обходного пути « » восстановит функциональность дельта-алгоритма и ускорит передачу.источник
rsync
использует отметку времени и даты, чтобы проверить, нужно ли обновлять файл. Если требуется обновление, rsync разделит файл на куски и сравнит контрольные суммы. Это означает, что он будет читать весь файл, чтобы иметь возможность сделать это. Поэтому, если у вас нет запущенного удаленно демона rsync, вам все равно нужно будет передать весь файл, чтобы выполнить чанкинг и контрольную сумму, чтобы вы могли сразу же передать его. Таким образом, описанный здесь «обходной путь» фактически ничего не покупает в этом сценарии.Думал, что я бы бросил свой 2р здесь.
Мой брат только что установил сетевое хранилище Buffalo в своей офисной сети. Сейчас он просматривает резервные копии за пределами площадки, так что, если офис сгорит, по крайней мере, он все еще хранит все свои деловые документы в другом месте (за много сотен миль).
Моим первым препятствием было заставить его VPS (небольшой виртуальный частный сервер Linux, ничего лишнего) подключиться как пользователь VPN к своему широкополосному маршрутизатору (для этого он использует DrayTek), чтобы он сам мог быть частью его VPN, и поэтому он может получить доступ к NAS напрямую, безопасным способом. Получил, что отсортировано и работает блестяще.
Следующей проблемой была передача файлов с NAS на сервер VPS. Я начал с монтирования Samba и столкнулся с точно такой же (или даже хуже) проблемой, которую вы описали. Я выполнил rsync в пробном режиме, и мне потребовалось более 1 часа 30 минут, чтобы выяснить, какие файлы он будет передавать, потому что, как говорит Эван, при этом методе другой конец не является rsync, поэтому ему приходится выполнять много операций. системные вызовы / чтения на монтировании Samba (через PPTP / туннельное соединение с временем прохождения туда и обратно около 40 мс). Совершенно неработоспособен.
Мало ли я знал, что Buffalo на самом деле запускает демон rsync, поэтому, используя его, весь пробный прогон занимает всего 1 минуту 30 секунд для 87k файлов общей емкостью 50 ГБ. Очевидно, что передача 50 ГБ файлов (из NAS, находящегося на широкополосной линии с исходящей пропускной способностью только 100 К / с) - это совсем другое дело (это займет несколько дней), но после завершения первоначальной rsync все инкрементные резервные копии должны быть смазка молнии (его данные не будут сильно меняться ежедневно).
Мое предложение - использовать приличный NAS, который поддерживает rsync, по причинам, указанным Эваном выше. Это решит все ваши проблемы.
источник
Пахнет, как будто у вас дешевле NAS. Это также может быть из вашей пропускной способности сети ...
«Стандартные» потребительские NAS очень слабы, когда дело доходит до интенсивного ввода-вывода, что вы и здесь пытаетесь сделать. Это также может быть дешевый коммутатор, соединяющий ваш компьютер и NAS, который недостаточно силен для правильной обработки всех пакетов.
источник
попробуйте это, он думает, что по крайней мере дает вам на 10% больше, что скорость вашего получения http://www.thegeekstuff.com/2009/09/linux-remote-backup-using-rsnapshot-rsync-utility/
источник
Есть два потенциальных источника проблемы: либо вы используете неверные параметры строки коммандной строки, либо ваш NAS имеет проблемы с метками времени (или обеими :-). Пожалуйста, проверьте эту тему "rsync to NAS копирует все каждый раз" для получения дополнительной информации.
источник