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

Почему glusterfs переименовывает файлы во время импорта rsync?

При поиске ошибки после неудачной первоначальной синхронизации данных с glusterfs я обнаружил следующую запись в /var/log/glusterfs/data-nfs.log:

[MSGID: 109066] [dht-rename.c: 1410: dht_rename] 0-volume1-dht: renaming / source /.filename.jpg.bWVXS4 (hash = volume1-replicate-0 / cache = volume1-replicate-0) => /dest/filename.jpg (hash = volume1-replicate-0 / cache =)

Определенно, имя файла не начинается с точки, я просто дважды проверил его. О чем эта запись? Их тысячи.

Вот как работает rsync. Он записывает файл во временное местоположение (начиная с точки), а затем, когда файл полностью записан, он переименовывает его в окончательное местоположение. Ему необходимо сохранить исходный файл, потому что алгоритм rsync работает - он считывает фрагменты исходного файла и чередует их с измененными данными, отправляемыми по сети.

Вы можете избежать такого поведения, используя опцию --inplace, но он ужасно влияет на алгоритм инкрементной синхронизации, если вы полагаетесь на него (а не на копирование новых файлов).