Apa yang membuat satu sisi rsync begitu sibuk?

11

Saya memiliki mesin Debian di LAN saya yang berfungsi sebagai server cadangan untuk yang lain. Ini memiliki empat HDD digabungkan menjadi perangkat lunak RAID 5 md perangkat, pada LVM itu, dan pada btrfs itu. Cadangan dibuat menggunakan rsync, dan untuk sistem file besar butuh waktu lebih dari satu jam. Untuk waktu yang lama saya berpikir akan ada sedikit yang bisa saya lakukan tentang ini.

Namun baru-baru ini, saya perhatikan bahwa aktivitas HDD sangat berbeda di kedua ujung transfer. Sementara pihak pengirim, menjalankan Gentoo dan kebanyakan menggunakan ext4, hampir tidak memiliki IO disk sama sekali, sisi penerima selalu sibuk. Karena sebagian besar data tidak akan berubah di antara transfer, saya percaya bahwa membaca metadata harus menjadi bagian terbesar dari data. Tetapi saya akan sangat terkejut jika membaca inode dalam btrf jauh lebih berhasil daripada melakukan hal yang sama di ext4.

iotop disk yang dikonfirmasikan membaca sekitar 1-4 MB / s di sisi penerima, sedangkan sisi pengirim hanya sesekali 0,5 MB / s meledak.

Pertanyaan saya adalah, adakah yang bisa menjelaskan apa yang terjadi di sini? Lebih disukai dengan beberapa indikasi bagaimana mengatasi masalah jika memungkinkan.

Mungkin ada beberapa flag tuning btrf yang bisa saya gunakan, atau yang serupa. Saya membutuhkan FS dengan kemampuan snapshot di server cadangan, dan upaya saya untuk menggunakan FreeBSD dan ZFS dengan cepat mengarah pada FS yang tidak konsisten, jadi saya melihat sedikit alternatif untuk btrf saat ini. Karenanya jawaban yang memberi tahu saya untuk menggunakan ext4 atau zfs mungkin menerima upvotes tetapi tidak ada tanda centang.


Opsi Rsync digunakan, seperti yang diminta oleh 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

Serta banyak -faturan untuk menghilangkan beberapa file.


Opsi pemasangan btrfs dilaporkan oleh mountas

rw,nosuid,noexec,noatime,nospace_cache

Secara khusus, ini termasuk noatimeflag, jadi tidak boleh ada tulisan yang terlibat kecuali sebenarnya ada perbedaan dalam beberapa file. Saya menambahkan informasi ini sebagai jawaban atas jawaban oleh Kyle Jones .

MvG
sumber
Opsi rsync apa yang Anda gunakan?
cjm
Hanya mengambil bidikan dalam gelap, apakah Anda memiliki disk yang gagal? Ini dapat menyebabkan I / O tambahan karena mencoba merekonstruksi data yang hilang dari informasi paritas.
bahamat
@ Bahaham, saya menjalankan smartd, dan dilaporkan tidak ada masalah. Mdadm juga tidak melaporkan peristiwa apa pun.
MvG
Sangat sulit untuk mengatakan dengan pasti apa yang salah. Hanya satu contoh adalah ukuran blok tidak cocok di antara lapisan. Untuk mendiagnosisnya, Anda sebaiknya menggunakan sesuatu seperti dtraceatau systemtapuntuk mencari tahu di mana waktu yang dihabiskan.
bahamat
@ Bahaham, itu jalan yang belum saya selidiki. Bisakah Anda menulis jawaban tentang cara menggunakan alat ini untuk mendiagnosis masalah? Itu akan bagus. Petunjuk langkah demi langkah jika Anda punya waktu, tetapi bahkan beberapa gagasan kasar dan petunjuk dokumentasi akan sangat membantu.
MvG

Jawaban:

3

Satu jawaban yang mungkin adalah bahwa sistem file jarak jauh dipasang secara default dengan opsi "atime". Waktu akses menulis untuk semua yang diakses rsync jarak jauh dikombinasikan dengan penalti tulis yang Anda derita dengan RAID 5 (komputasi paritas berarti membaca semua disk RAID sebelum Anda menulis ke salah satu dari mereka) dapat menjelaskan perbesaran I / O pada sisi jarak jauh.

Jika saya benar, Anda dapat mempercepat dengan memasang sistem file jarak jauh dengan opsi "noatime".

Kyle Jones
sumber
2
Pemikiran yang bagus, tetapi sayangnya bukan solusi: sistem file sudah dipasang noatime. Mount melaporkan set semua opsi mount sebagai rw,nosuid,noexec,noatime,nospace_cache.
MvG
1

Saya menduga opsi --fake-super. Itu memberitahu rsync untuk menyimpan semua informasi metadata dalam atribut yang diperluas pada setiap file. Saya menduga mengakses atribut-atribut itu lambat. Coba uji coba dengan rsync ke root tanpa --fake-super. Anda tidak dapat menggunakan kembali cadangan yang sama karena atributnya tidak cocok.

Wayne
sumber
Anda harus mempertimbangkan memperluas jawaban Anda untuk memasukkan beberapa tautan bermanfaat atau referensi ke dokumentasi yang mendukung pernyataan Anda.
HalosGhost