Назад | Перейти на главную страницу

Оптимальный тип файловой системы и параметры монтирования для выделенного диска rsnapshot

У нас есть внешний диск USB 2, который мы используем в качестве резервного диска для нашей конфигурации. Мы используем rsnapshot для резервных копий. Он использует несколько стандартных команд для управления снимками:

  1. rm -rf: удаляет просроченные снимки
  2. mv: перемещает старые снимки в слот
  3. cp -al: дублирует последний снимок в новый слот
  4. 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

Мои вопросы:

  1. В настоящее время я использую ext4 для файловой системы. Возможно, это не лучший выбор из имеющихся в Red Hat. У кого-нибудь есть рекомендации, которые бы ускорили процесс?

  2. Варианты монтирования раздела: sync,dirsync 1 2. Есть ли способ оптимизировать это, поскольку он используется исключительно для rsnapshot? Конечно, мы будем благодарны за рассуждение.

  1. ext4 в порядке.

  2. Параметры «sync, dirsync» обеспечивают синхронизацию обновлений данных и метаданных, что оказывает серьезное негативное влияние на производительность при выполнении большинства рабочих нагрузок. Удаление этих параметров, скорее всего, повысит производительность, но вы должны не забыть отключить устройство перед тем, как дергать кабель, иначе вы можете потерять данные (предположительно, именно поэтому эти параметры были добавлены в первую очередь, они не являются параметрами по умолчанию или возможно, это какая-то особая магия, которую ваш дистрибутив творит для USB-устройств).

  3. noatime отключает обновления по времени, что снижает количество операций записи в файловую систему. Более или менее все приложения, включая rsnapshot, не нуждаются во временах, так что это должно быть совершенно безопасно.

  4. data = writeback снижает накладные расходы на ведение журнала за счет небольшого увеличения вероятности потери данных в случае сбоя питания. В зависимости от дистрибутива это может быть уже по умолчанию.

  5. С ext4 также можно полностью отключить журнал (начиная с ядра 2.6.29), хотя я бы не рекомендовал это делать. В нем все еще есть все другие улучшения ext4, так что это должно быть быстрее, чем использование ext2, fwiw.

  6. барьер = 0 отключает барьеры, что повышает производительность записи за счет увеличения вероятности потери данных в случае сбоя.

Также обратите внимание, что использование --link-dest также меняет план того, как cp сделано, что может существенно повлиять на производительность (в основном это просто rms the hourly.$old а затем использует rsync сделать копию из hourly.1 на hourly.0 и синхронизировать с источником одновременно).

Есть еще обсуждение альтернативная техника здесь - в основном ротация последнего почасового снимка в новый с mv hourly.$old hourly.0 вместо того rm-на это, и делать cp -afl из hourly.1 на hourly.0 чтобы обновить его, но я этого не пробовал - вам придется выполнять ротацию вручную, а не полагаться на rsnapshot сделать это

Вы настраиваете rsnapshot для хранения большего количества снимков (например, 9999) и удаляете их самостоятельно с диска с помощью crontab. Это сделает скорость снимка более предсказуемой.