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

Как ускорить процесс восстановления с помощью gziped LVM?

Экспериментирую с созданием / восстановлением резервных копий с помощью LVM. Работает, но восстановление занимает около 8 минут. на idel XEON с 32 ГБ оперативной памяти и SSD. Система даже не стыковалась в соответствии с htop и top с процессором почти в режиме ожидания, но в результате на SSD только 45,7 МБ / с.

Как можно ускорить процесс? Восстановление выглядит так:

$ sudo gunzip -c snap_vol1-20150904_055547.gz | sudo dd of=/dev/vg0/staging

41738240+0 records in
41738240+0 records out
21369978880 bytes (21 GB) copied, 468.036 s, 45.7 MB/s

Несколько быстрых вещей, которые нужно проверить:

Прежде всего, если вы работаете с одним диском, у вас есть пропускная способность 90 МБ / с. В зависимости от диска и интерфейса это может быть то, на что диск способен (!)

По умолчанию DD выполняет много очень маленьких записей. Вы можете использовать опцию BS (как в bs = 1M) для увеличения размера блока, что уменьшит количество операций записи, что, в свою очередь, должно снизить нагрузку ввода-вывода.

Отправка данных по каналу обходится довольно дорого, так как данные должны быть скопированы в относительно небольшой буфер и снова выведены, в дополнение к переключениям контекста между gunzip (который, кстати, является однопоточным, еще одно узкое место) и dd. Попробуйте сначала распаковать файл, а затем распаковать его и измерить время каждой операции, чтобы понять, что вас замедляет.

Gunzip - это однопоточный процесс, и даже с быстрыми процессорами он часто достигает максимальной скорости 40/50 МБ / с.

У вас есть две возможности:

  • используйте более быстрый компрессор, например lzop или lz4
  • используйте реализацию многопоточного gzip как pigz (см. http://zlib.net/pigz/ )