У нас есть внешний диск USB 2, который мы используем в качестве резервного диска для нашей конфигурации. Мы используем rsnapshot для резервных копий. Он использует несколько стандартных команд для управления снимками:
rm -rf
: удаляет просроченные снимкиmv
: перемещает старые снимки в слотcp -al
: дублирует последний снимок в новый слотrsync -a --delete --numeric-ids --relative
: синхронизирует новый снимокКак видно из приведенного ниже журнала, большая часть времени тратится на rm -rf
и cp -al
шаги:
[25/Dec/2010:14:00:02] rsnapshot hourly: started
[25/Dec/2010:14:00:02] echo 21012 > /var/run/rsnapshot.pid
[25/Dec/2010:14:00:02] rm -rf /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.4/ /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.3/ /mnt/extdrive/snapshots/hourly.4/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.2/ /mnt/extdrive/snapshots/hourly.3/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.1/ /mnt/extdrive/snapshots/hourly.2/
[25/Dec/2010:14:15:48] cp -al /mnt/extdrive/snapshots/hourly.0 /mnt/extdrive/snapshots/hourly.1
[25/Dec/2010:14:23:32] rsync -a --delete --numeric-ids --relative /etc /mnt/extdrive/snapshots/hourly.0/sm4/
[25/Dec/2010:14:23:52] touch /mnt/extdrive/snapshots/hourly.0/
[25/Dec/2010:14:23:52] rm -f /var/run/rsnapshot.pid
[25/Dec/2010:14:23:52] rsnapshot hourly: completed successfully
Мои вопросы:
В настоящее время я использую ext4 для файловой системы. Возможно, это не лучший выбор из имеющихся в Red Hat. У кого-нибудь есть рекомендации, которые бы ускорили процесс?
Варианты монтирования раздела: sync,dirsync 1 2
. Есть ли способ оптимизировать это, поскольку он используется исключительно для rsnapshot? Конечно, мы будем благодарны за рассуждение.
ext4 в порядке.
Параметры «sync, dirsync» обеспечивают синхронизацию обновлений данных и метаданных, что оказывает серьезное негативное влияние на производительность при выполнении большинства рабочих нагрузок. Удаление этих параметров, скорее всего, повысит производительность, но вы должны не забыть отключить устройство перед тем, как дергать кабель, иначе вы можете потерять данные (предположительно, именно поэтому эти параметры были добавлены в первую очередь, они не являются параметрами по умолчанию или возможно, это какая-то особая магия, которую ваш дистрибутив творит для USB-устройств).
noatime отключает обновления по времени, что снижает количество операций записи в файловую систему. Более или менее все приложения, включая rsnapshot, не нуждаются во временах, так что это должно быть совершенно безопасно.
data = writeback снижает накладные расходы на ведение журнала за счет небольшого увеличения вероятности потери данных в случае сбоя питания. В зависимости от дистрибутива это может быть уже по умолчанию.
С ext4 также можно полностью отключить журнал (начиная с ядра 2.6.29), хотя я бы не рекомендовал это делать. В нем все еще есть все другие улучшения ext4, так что это должно быть быстрее, чем использование ext2, fwiw.
барьер = 0 отключает барьеры, что повышает производительность записи за счет увеличения вероятности потери данных в случае сбоя.
Также обратите внимание, что использование --link-dest
также меняет план того, как cp
сделано, что может существенно повлиять на производительность (в основном это просто rm
s the hourly.$old
а затем использует rsync
сделать копию из hourly.1
на hourly.0
и синхронизировать с источником одновременно).
Есть еще обсуждение альтернативная техника здесь - в основном ротация последнего почасового снимка в новый с mv hourly.$old hourly.0
вместо того rm
-на это, и делать cp -afl
из hourly.1
на hourly.0
чтобы обновить его, но я этого не пробовал - вам придется выполнять ротацию вручную, а не полагаться на rsnapshot
сделать это
Вы настраиваете rsnapshot для хранения большего количества снимков (например, 9999) и удаляете их самостоятельно с диска с помощью crontab. Это сделает скорость снимка более предсказуемой.