Rsync застрял в состоянии D

Como no desea un archivo combinado, recorra cada archivo y comprímalo en su propio archivo de copia de seguridad:

for file in *.qcow2
do
  gzip -c "$file" > /backup/"$file".backup.gz
done

La ​​opción -cdice enviar los resultados comprimidos a stdout, que redirigimos al nombre de archivo que preferimos.

1
21.06.2019, 09:51
1 ответ

Трудно сказать точно, в чем может быть проблема, но есть несколько идей, которые вы можете попробовать:

Поскольку состояние Dпредставляет собой непрерывный сон, что, скорее всего, вызвано операциями ввода-вывода, я предполагаю, что rsyncожидает ввода-вывода в файле, который по какой-то причине недоступен. EFS и EBS являются удаленными файловыми системами. У меня была аналогичная проблема с общим ресурсом NFS. Чтобы исследовать проблему, вы можете начать выполнять трассировку системного вызова для вашей команды rsync. Вам нужно straceдля этого (, возможно, вам нужно сначала установить его ). Затем попробуйте следующую команду:

strace -eopen -ostrace.log rsync...
  • -eopenбудет отслеживать только open()системные вызовы
  • -ofileзаписывает вывод в файл с именемfile

Теперь подождите, пока процесс остановится в состоянии D. Пока процесс заблокирован, вы можете проверить файл strace.log. Содержимое может выглядеть как

$ tail -f strace.log
[...]
open("...", O_RDONLY|O_CLOEXEC) = 3
open("...", O_RDONLY)
open("/path/to/suspect_file", O_RDONLY)

Последняя запись в журнале-/path/to/suspect_fileв приведенном выше примере -— это файл, в котором rsyncблокируется в непрерывном спящем режиме. Теперь вы можете исключить этот файл из rsync или проверить, почему он вызывает блокировку (, или попытаться скопировать его вручную ).


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

1
28.01.2020, 00:08

Теги

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