Проблема с продуктивной миграцией

Причина отсутствия «стандартного инструмента» в том, что логика, как вы обнаружили, довольно проста.Ограничивающим фактором является то, что вы должны выполнять глубокий обход каталога, а это всегда дорогостоящий процесс.

На самом деле не имеет значения, какой подход вы выберете в отношении инструментов создания сценариев - «стоимость» - это дисковый ввод-вывод.

Итак, оптимизация, которую я предлагаю, была бы такой:

  • Не проходите всю FS. Избавьтесь от своего обхода, когда вы найдете достаточно. ( find | shuf и find | head этого не сделают).
  • Вероятно, вы можете приблизительно определить размер каталога, обратившись к последним обходам, и «пропустить вперед» с некоторым запасом.
  • файлы статистики по мере продвижения и запись mtime помогут вам построить оба списка. Если вы генерируете случайное число и выбираете «последний» файл и последний последний файл перед этим номером.

Что-то вроде этого (В perl , но я уверен, что вы могли бы сделать это на Python)

#!/usr/bin/env perl
use strict;
use warnings;

use File::Find;

my $random_file;
my $recent_random_file;

my $limit = rand ( 7_000_000 ); #ideally set to file count on fs. 

sub search {
    if ( $count++ > $limit ) { 
        $File::Find::prune = 1; #stop traversing
        return; 
    }
    return unless -f; 
    if ( -M $File::Find::name < 1 ) { $recent_random_file = $File::Find::name }; 
    $random_file = $File::Find::name; 
}

find ( \&search, "/path/to/search");
print "$recent_random_file $random_file\n";
0
26.07.2018, 02:43
1 ответ

Исходная ошибка возникает из-за того, что драйвер libvirt вызывает guest.migrate_configure_max_speedздесь:

https://github.com/openstack/nova/blob/stable/pike/nova/virt/libvirt/driver.py#L6944

Этот метод не был добавлен в гостевой модуль до выхода Pike(https://github.com/openstack/nova/commit/23446a9552b5be3b040278646149a0f481d0a005)и, по-видимому, не был портирован на Pike, поскольку здесь он отсутствует:

https://github.com/openstack/nova/blob/stable/pike/nova/virt/libvirt/guest.py

Вызов guest.migrate_configure_max_speedбыл добавлен в драйвер в этом коммите:https://github.com/openstack/nova/commit/ff747792b8f5aefe1bebb01bdf49dacc01353348

Вы можете вручную исправить guest.py без операции -, чтобы обойти ошибку:

def migrate_configure_max_speed(self, bandwidth):
    pass
1
28.01.2020, 02:42

Теги

Похожие вопросы