У меня есть файловая система, смонтированная с 9p virtio через KVM, и я создаю резервную копию, используя дублирование, на удаленном SSH-сервере. Я пытаюсь ускорить процесс резервного копирования, который мне кажется неоправданно медленным.
Размер источника составляет 20 ГБ в 107,651 файлах, которые находятся в файловой системе ext4 на хосте виртуальной машины под управлением Ubuntu 14.04, поверх массива Raid10 на контроллере 3ware с использованием дисков 15 КБ (WD VelociRaptors), без BBWC. Сама виртуальная машина - это Ubuntu 12.04.5, монтирующая файлы с p9 поверх virtio, драйвер «путь», режим «сопоставлен», политика записи «немедленно». Назначением по SSH является сервер HP с 512 МБ BBWC, включенным с 12 дисками SAS 2 ТБ, что подтверждено невероятной скоростью.
Если все остальное не помогает, я просто попробую запустить дублирование на хосте виртуальной машины, чтобы устранить средний уровень 9p при доступе к файлам, чтобы увидеть, является ли проблема 9p (что я медленно подозреваю)
Вот статистика дублирования резервного копирования:
--------------[ Backup Statistics ]--------------
StartTime 1483275839.07 (Sun Jan 1 14:03:59 2017)
EndTime 1483332365.62 (Mon Jan 2 05:46:05 2017)
ElapsedTime 56526.55 (15 hours 42 minutes 6.55 seconds)
SourceFiles 107651
SourceFileSize 21612274293 (20.1 GB)
NewFiles 24
NewFileSize 69952 (68.3 KB)
DeletedFiles 11
ChangedFiles 38
ChangedFileSize 6825600 (6.51 MB)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 73
RawDeltaSize 47509 (46.4 KB)
TotalDestinationSizeChange 103051 (101 KB)
Errors 0
Запуск cProfile python вернул следующие функции, которые потребовали больше всего времени на выполнение:
29225254 function calls (29223127 primitive calls) in 56578.118 seconds
ncalls tottime percall cumtime percall filename:lineno(function)
107700 28238.712 0.262 28238.712 0.262 {posix.lstat}
107650 28016.367 0.260 28016.367 0.260 {posix.access}
892 190.827 0.214 190.827 0.214 {posix.listdir}
2 49.552 24.776 49.552 24.776 {method 'readline' of 'file' objects}
82 11.113 0.136 11.113 0.136 {open}
9p - вот в чем проблема. Запуск дублирования на хосте ВМ, где находятся данные, выполнялся в 55 секунд.
это ошибка, по-видимому, все еще открыта, что говорит о тех же проблемах с производительностью. Он предлагает добавить msize = 262144 к параметрам монтирования, что немного ускоряет доступ, но все же и близко не так же быстро, как прямой доступ.
Итак, в заключение, не используйте 9p вместо virtio и ожидайте высокой скорости доступа к файлам. В моем случае приложение, которое обращается к этим файлам через 9p, не сильно страдает, но другие (например, дублирование) страдают.