У мене в мережі локальна машина Debian, яка служить резервним сервером для інших. Він має чотири жорсткі диски, об'єднані в програмний пристрій RAID 5 md, на цьому LVM і на цьому btrfs. Резервне копіювання робиться за допомогою rsync, а для великої файлової системи потрібно більше години. Довгий час я думав, що я з цим можу зробити мало.
Проте нещодавно я помітив, що активність HDD сильно відрізняється на обох кінцях передачі. У той час як сторона відправки, що працює під управлінням Gentoo і здебільшого використовує ext4, взагалі не мала дискового вводу-виводу, приймальна сторона постійно була зайнята. Оскільки більшість даних не змінюватиметься між передачами, я вважаю, що зчитування метаданих має складати основну частину даних. Але я був би дуже здивований, якщо читання inodes у btrfs - це стільки роботи, ніж те саме в ext4.
iotop
підтверджені зчитування диска приблизно 1-4 Мб / с на приймальній стороні, тоді як сторона, що надсилає, мала лише випадкові 0,5 МБ / с.
Моє запитання: чи може хтось пояснити, що тут відбувається? Переважно з деякою ознакою, як вирішити проблему, якщо це можливо.
Можливо, є якийсь прапор налаштування btrfs, який я міг би використати, або щось подібне. Мені потрібен FS з можливістю знімків на резервному сервері, і моя спроба використовувати FreeBSD і ZFS швидко призводить до непослідовного FS, тому на даний момент я не бачу мало альтернативи btrfs. Тому відповіді, що говорять мені про використання ext4 або zfs, можуть отримувати надбавки, але немає галочки.
Параметри Rsync у використанні, як вимагає cjm :
--rsync-path='rsync --fake-super'
--archive # -rlptgoD
--hard-links # detect and preserve these
--acls
--xattrs
--sparse
--noatime # based on patch from samba #7249c1
--delete
--delete-delay
--fuzzy
--human-readable # size suffixes, base 1000
--stats
А також купу -f
правил пропускати деякі файли.
Параметри монтажу btrfs повідомляються mount
як
rw,nosuid,noexec,noatime,nospace_cache
Зокрема, це включає noatime
прапор, тому не повинно бути жодних записів, якщо тільки в деяких файлах не було відмінностей. Я додав цю інформацію у відповідь на відповідь по Kyle Jones .
dtrace
або systemtap
дізнатися, де витрачається час.